![]() | |
Sun Java System Application Server 企业版 7 2004Q2 入门指南 |
第 3 章
企业功能配置教程本章中的教程介绍了如何设置和使用 Sun Java System Application Server 环境中的功能。本章包括以下数节:
使用教程之前的准备工作本指南的内容包括设置群集环境、将应用程序部署到该环境中,以及用该应用程序测试负载平衡和 HTTP 会话持久性功能。本指南中有两个教程:企业功能配置教程介绍如何配置群集和负载平衡器;Cluster JSP 样例应用程序教程介绍如何部署应用程序及如何检验负载平衡和会话持久性已发挥作用。
本节包括以下主题:
安装需求
此处建议的安装配置是配合本指南使用的基本的单机配置,并不一定是恰好适合您的环境的配置。在您的环境中部署 Sun Java System Application Server 之前,请仔细考虑您自己的需要。有关建议配置的详细信息,请参见 Sun Java System Application Server System Deployment Guide。
为了使用本指南中包含的教程,请使用以下基本配置:
使用教程之前需要执行的步骤
开始使用教程之前,必须已完成以下步骤。
教程步骤概述下表总结了本教程中配置系统、部署应用程序和检验企业功能所需的步骤。左侧列中介绍了步骤,右侧列中给出了执行该步骤所需说明的位置。
启动服务器能够使用本指南中的教程之前,需要启动管理服务器和群集中所有的应用服务器实例。同时,Sun Java System Web Server 也须正在运行。
如果所有的服务器实例和管理服务器位于单个域中,那么启动管理服务器和应用服务器实例的最直接的方法是使用 asadmin 实用程序的 start-domain 命令。
本节包括以下主题:
设置 PATH 变量
为了方便起见,运行 asadmin 之前,可以设置 PATH 变量。
设置 PATH 变量可使您从命令行运行 asadmin、cladmin 和 asant(应用服务器的 Ant 实用程序),而无论您位于什么位置。请将下面的目录添加到 PATH 环境变量:
如果将 Application Server 的 bin 目录添加到登录配置文件中,则登录时该目录将被自动添加到环境的 PATH 设置中。
例如,将下面的内容添加到 .cshrc 文件:
set path=( /opt/SUNWAppserver7/bin)
保存文件后,对其执行 source 命令:
source .cshrc
您可以在命令提示符下,通过执行 asadmin 实用程序来测试所做的更改。请键入:
asadmin
应显示以下结果:
Use "exit" to exit and "help" for online help
asadmin>
请键入 exit 以退出 asadmin 界面。
如果该命令未找到:
如果没有设置 PATH 环境变量,您仍然可以从这些命令和实用程序所在的目录中 (install_dir/bin) 运行它们。例如:
cd /opt/SUNWappserver7/bin
./asadmin
运行 asadmin start-domain
要启动管理服务器及其中的所有应用服务器实例,请运行 asadmin start-domain 命令。在命令提示符下,键入:
asadmin start-domain --domain domain1
domain1 是安装服务器和运行 clsetup 命令时配置的缺省域。
注
在本指南介绍的配置中,所有的实例均位于同一个域中。如果服务器实例不是位于同一个域中,则需要为计划使用的每个域运行一次 asadmin start-domain。创建一个群集后,还可以使用 cladmin start-instance 来启动该群集中的所有实例。有关 cladmin 语法的信息,请参见 cladmin 命令的语法。
使用下面的命令停止管理服务器和最初配置的域的应用服务器实例:
asadmin stop-domain --domain domain1
其中,domain1 是在应用服务器安装过程中定义的管理域的名称。
有关 asadmin 命令的完整列表,请参见 asadmin 帮助。要访问帮助,请在命令提示符下键入:
asadmin
如果已设置 PATH 变量,提示应会更改为 asadmin 提示。请在提示下键入 help,以查看所有 asadmin 命令的列表。要获得关于某条特定 asadmin 命令的帮助,请在 asadmin 提示下键入该命令的名称,后接帮助选项。例如:
asadmin> start-domain --help
检验服务器的启动启动管理服务器和应用服务器实例之后,请按照以下各部分中的说明检验它们是否已启动成功:
检验管理服务器的启动
可以通过访问 Sun Java System Application Server 的管理界面或通过查看管理服务器的事件日志来检验管理服务器的启动,如以下各部分所述:
访问管理界面
要检验管理服务器已正确启动,可以访问 Sun Java System Application Server 基于 Web 的管理界面。您可以使用此界面来管理 Sun Java System Application Server 的实例;但对于群集的实例,使用 cladmin 命令会更方便,引发错误的可能性也更小。
要访问管理界面,请执行以下步骤:
- 使用产品安装过程中提供的管理用户名和口令登录到管理界面。
提示 忘记了用户名或口令? 如果您忘记了安装过程中提供的管理服务器用户名,请尝试使用用户名 admin,这是安装过程中在服务器配置对话框中指定的缺省用户名。
如果您忘记了管理员口令,请查看 install_config_dir 目录中的 clpassword.conf 文件,该文件是安装服务器时创建的。只有 root 用户才可读取此文件。
提示 端口不可访问? 如果尝试连接管理服务器的管理界面时,连接被拒绝,可能是因为管理服务器没有运行。请检查启动过程和管理服务器日志文件的内容,以确定服务器没有运行的原因。有关查看日志文件的说明,请参见查看管理服务器的事件日志。
查看管理服务器的事件日志
您可以在管理服务器的事件日志中查看服务器启动消息。要打开并查看事件日志文件,请执行以下步骤:
您也可以使用 tail -f 命令来查看服务器日志中的消息。
tail -f server.log
-f 选项可使 tail 命令持续运行,以便在新的日志条目被写入文件时显示这些条目。
您还可以通过管理界面访问管理服务器和应用服务器实例的事件日志文件。单击左侧窗格中的服务器名称(管理服务器或应用服务器实例),然后单击右侧窗格中的“日志”选项卡。
有关详细信息,请参见 Sun Java System Application Server Administration Guide。
检验服务器实例的启动
运行 clsetup 之后,在 domain1 中应该有两个服务器实例:server1 和 server2。本部分讨论了检验这些实例存在且正在运行的两种方法:
使用 asadmin 检验实例
要检验实例,请使用 asadmin list-instances 命令:
通过访问 HTTP 服务器来检验实例
确定应用服务器实例是否已经启动的另一种方法是通过 Web 浏览器访问实例的 HTTP 服务器欢迎页。
使用浏览器访问以下位置:
http://server_instance:server_instance_port_number
其中,server_instance_port_number 是安装或创建服务器实例过程中指定的 HTTP 服务器端口号。
提示 如果忘记了服务器的 HTTP 服务器端口号,可以查看应用服务器实例的配置文件以确定 HTTP 服务器端口号:
http-listener id="http-listener-1" address="0.0.0.0" port="81"...
在本例中,端口 81 是正在使用的 HTTP 端口号。
如果应用服务器实例已启动并运行正常,您应该能在浏览器中看到默认的 HTTP 服务器欢迎页。
提示 HTTP 服务器欢迎页:HTTP 服务器欢迎页是一个名为 index.html 的 HTML 页面,位于应用服务器实例的默认文档目录中。应用服务器实例的 server.xml 配置文件包含了该实例默认文档根目录的设置。安装后,实例 server1 的文档根目录将被设置为 domain_config_dir/domain1/server1/docroot/。您可在该位置找到欢迎页。
创建 loadbalancer.xml 文件安装组件、运行 clsetup 并启动管理服务器之后,您就可以配置该安装了。第一步是创建一个群集。
因为本指南的群集配置使用一个负载平衡器插件,所以必须在 Web 服务器的 loadbalancer.xml 配置文件中定义群集。此文件位于 Web 服务器的配置文件目录中。默认情况下,loadbalancer.xml 文件并不存在,您必须创建该文件。
要创建 loadbalancer.xml 文件,请执行以下步骤:
代码示例 3-1 中显示了一个示例 loadbalancer.xml 文件。
代码示例 3-1 loadbalancer.xml.example 文件
<!DOCTYPE loadbalancer PUBLIC "-//Sun Microsystems Inc.//DTD Sun ONE Application Server 7.0//EN" "sun-loadbalancer_1_1.dtd">
<loadbalancer>
<cluster name="cluster1">
<instance name="instance1" enabled="true" disable-timeout-in-minutes="60" listeners="<REPLACE_WITH_LISTENER1> <REPLACE_WITH_LISTENER2>"/>
<web-module context-root="/abc" enabled="true" disable-timeout-in-minutes="60" enabled="true" />
<health-checker url="/" interval-in-seconds="10" timeout-in-seconds="30" />
</cluster>
<property name="reload-poll-interval-in-seconds" value="60"/>
<property name="response-timeout-in-seconds" value="30"/>
<property name="https-routing" value="true"/>
<property name="require-monitor-data" value="false"/>
</loadbalancer>
请注意,示例文件指的是 sun-loadbalancer_1_1.dtd,它同样位于 Web 服务器的 config 目录中。
将群集添加到 loadbalancer.xml 文件下一步,您需要将一个群集(本教程中称为 cluster1)添加到 loadbalancer.xml 文件。群集包含两个 Sun Java System Application Server 或服务器实例。
编辑新创建的 loadbalancer.xml,以在 HTTP 侦听程序中包含实例和 UTL:
- 转到 Web 服务器的 config 目录并用文本编辑器打开 loadbalancer.xml。
请注意,样例文件已经包含群集 cluster1。
<cluster name=“cluster1”>
- 将使用 clsetup 创建的两个应用服务器实例 server1 和 server2 添加到 cluster1。
为每个实例创建一个群集的实例子元素。需要启用实例 (enabled=true),还需要添加 HTTP 侦听程序的 URL。对于默认的服务器实例 (server1) 和您添加的第二个服务器实例 (server2),它们会各有一个 HTTP 侦听程序。在不同的环境中,可以拥有更多的侦听程序。
样例 loadbalancer.xml 文件包含以下这些可以编辑的行:
<instance name="instance1" enabled="true" disable-timeout-in-minutes="60" listeners="<REPLACE_WITH_LISTENER1> <REPLACE_WITH_LISTENER2>"/>
- 对于本教程,请用“server1”替换“instance1”。
- 用服务器实例的侦听程序的 URL 替换 <REPLACE_WITH_LISTENER1>,例如:
http://test.sun.com:81。
侦听程序的 URL 由服务器名和端口组成。如果侦听程序启用了安全性,则 URL 以 HTTPS 开头。如果侦听程序未启用安全性,则 URL 以 HTTP 开头。查找有关每个 Sun Java System Application Server 实例的 HTTP 侦听程序的信息的步骤:
- 请将所做的更改保存到 loadbalancer.xml。此时文件会有与以下内容类似的一行:
<instance name="server1" enabled="true" disable-timeout-in-minutes="60" listeners="http://test.sun.com:81"/>
- 将 disable-timeout-in-minutes 的值更改为 5。
禁用超时(分)是实例的停顿时间,服务器实例的会话将在该时间段中终止。在此期间,服务器仍在运行,但只接受现有会话的请求,新会话生成的请求将不再发送到该服务器。在现实世界中,此数字可能会很高。示例中指定的时间是 60 分。但是,因为本教程需要您关闭服务器,所以要求您将超时值人为地设置得低一些。
<instance name="server1" enabled="true" disable-timeout-in-minutes="5" listeners="http://test.sun.com:81"/>
- 将第二个实例添加到群集元素。要完成此操作,您可以首先复制上一步中的行,然后将其粘贴到自身的下面,最后更改服务器名和侦听程序的 URL。例如:
<instance name="server2" enabled="true" disable-timeout-in-minutes="5" listeners="http://test.sun.com:82"/>
- 保存更改。
至此,loadbalancer.xml 文件应与下面的内容类似:
<!DOCTYPE loadbalancer PUBLIC "-//Sun Microsystems Inc.//DTD Sun ONE Application Server 7.0//EN" "sun-loadbalancer_1_1.dtd">
<loadbalancer>
<cluster name="cluster1">
<instance name="server1" enabled="true" disable-timeout-in-minutes="5" listeners="http://test.sun.com:81"/>
<instance name="server2" enabled="true" disable-timeout-in-minutes="5" listeners="http://test.sun.com:82"/>
<web-module context-root="/abc" enabled="true" disable-timeout-in-minutes="60" enabled="true" />
<health-checker url="/" interval-in-seconds="10" timeout-in-seconds="30" />
</cluster>
<property name="reload-poll-interval-in-seconds" value="60"/>
<property name="response-timeout-in-seconds" value="30"/>
<property name="https-routing" value="true"/>
<property name="require-monitor-data" value="false"/>
</loadbalancer>
您将在以后的操作中添加与已部署的应用程序(以“web-module”开头的示例行)关联的信息。
注
在 loadbalancer.xml 文件中启用应用服务器实例与启动应用服务器实例有所不同。即使服务器正在运行,且已将其添加到群集,负载平衡器也不会将请求路由到服务器实例,直到您将 instance 元素的 enabled 属性设置为 true,从而在 loadbalancer.xml 中启用了该服务器实例。
配置负载平衡创建 loadbalancer.xml 文件并添加群集之后,请编辑 loadbalancer.xml 文件,以包含负载平衡器的设置。
本节包括以下主题:
配置运行状况检查器
启用运行状况检查器后,负载平衡器将定期检查所有运行状况被标记为异常的 Sun Java System Application Server 实例,以查看其运行状况是否已变为正常。如果曾被标记为异常的应用服务器实例已变为正常,该实例将被添加到正常实例的列表,请求也将再次被路由到该实例。
运行状况检查器可以在 loadbalancer.xml 的 health-checker 元素中配置。您可以配置以下内容:运行状况检查器强制回应,以查看服务器是否正在运行的侦听程序的 URL;运行状况检查器强制回应服务器的频率;以及将服务器标为异常之前,运行状况检查器等待响应的时间。
示例 loadbalancer.xml 文件包含以下这一行,您无需为了完成本指南中的任务而编辑该行。
<health-checker url="/" interval-in-seconds="10" timeout-in-seconds="30" />
- health-checker url 指定了要强制回应,以确定服务器实例是否正常(即,该实例是否响应)的 URL。示例显示了 "/" 的 URL。例如,如果侦听程序的 URL 是 http://www.example.com:80,那么 "/" 的运行状况检查器 URL 将强制回应 http://www.example.com:80/。在本指南中,请保留值 "/"。
- interval-in-seconds 属性指定了负载平衡器进行运行状况检查之间的时间间隔。您无需更改缺省值 10。
- timeout-in-seconds 属性指定了负载平衡器必须从强制响应的服务器实例接收响应,以便将该服务器实例视为正常的时间间隔。您无需更改缺省值 30。
例如,使用缺省值,运行状况检查器将执行以下步骤:
启用负载平衡器的监视功能
负载平衡器插件使用 Web 服务器的日志机制来生成日志消息。启用监视功能后,以下信息将被记录到 Web 服务器的日志文件中:
要监视负载平衡,需要进行以下操作:
要在 loadbalancer.xml 中启用监视功能,请执行以下步骤:
此外,如果要更改默认的 Web 服务器日志级别,请执行以下步骤:
打开 Sun Java System Web Server 的冗余日志:
负载平衡器的其它特性
示例 loadbalancer.xml 文件中包含了负载平衡器的一些其它特性:
<property name="reload-poll-interval-in-seconds" value="60"/>
<property name="response-timeout-in-seconds" value="30"/>
<property name="https-routing" value="true"/>
在本教程中,您无需更改这些缺省值。有关这些特性的详细信息,请参见以下各部分:
使用重新装入轮询时间间隔来进行动态重新配置
完成初始配置后,负载平衡器插件将检测对其配置所做的更改并自动装入这些更改。负载平衡器插件检测这些更改的方式是查看 loadbalancer.xml 文件中的时间戳。如果时间戳已更改,负载平衡器将自动进行自我重新配置。重新装入轮询时间间隔指定了负载平衡器检查时间戳的频率。
响应超时
响应超时指定了服务器等待实例响应请求的时间。超过指定的秒数后,如果实例仍未响应,将向浏览器发送一条错误消息。
HTTPS 路由选择
禁用 HTTPS 路由选择后,系统将忽略 loadbalancer.xml 文件中列出的 HTTPS 侦听程序,而仅对负载平衡使用 HTTP 侦听程序。启用 HTTPS 路由选择后,HTTPS 请求将仅故障转移到 HTTPS 端口。
样例 loadbalancer.xml 文件以下的样例 loadbalancer.xml 文件包含一个带有两个实例的群集。请对照本示例,检查您的 loadbalancer.xml 文件的语法。
代码示例 3-2 loadbalancer.xml 文件
<!DOCTYPE loadbalancer PUBLIC "-//Sun Microsystems Inc.//DTD Sun ONE Application Server 7.0//EN" "sun-loadbalancer_1_1.dtd">
<loadbalancer>
<cluster name="cluster1">
<instance name="server1" enabled="true" disable-timeout-in-minutes="5"
listeners="http://test.sun.com:81"/>
<instance name="server2" enabled="true" disable-timeout-in-minutes="5"
listeners="http://test.sun.com:82"/>
<web-module context-root="/abc" enabled="true" disable-timeout-in-minutes="60" enabled="true" />
<health-checker url="/" interval-in-seconds="10" timeout-in-seconds="30" />
</cluster>
<property name="reload-poll-interval-in-seconds" value="60"/>
<property name="response-timeout-in-seconds" value="30"/>
<property name="https-routing" value="true"/>
<property name="require-monitor-data" value="true"/>
</loadbalancer>
现在,企业功能已经配置完毕,您可以部署和运行样例应用程序了。请继续阅读第 4 章“Cluster JSP 样例应用程序教程”。