上一个 目录 索引 下一个 |
Sun Java System Application Server 企业版 7 2004Q2 入门指南

> ## 第 4 章
> Cluster JSP 样例应用程序教程

> 本章演示了使用负载平衡器插件进行的简单的 HTTP 故障切换。本章并未介绍 HTTP 负载平衡器插件的全部功能，有关负载平衡器插件的其它功能的信息，请参阅 Sun Java System Application Server Administration Guide。

> 本章包括以下几个部分：

> - 使用 Cluster JSP 样例应用程序教程的准备工作
> - 将 Cluster JSP 样例应用程序部署到群集中
> - 使用 cladmin 命令启动应用服务器实例
> - 验证应用程序部署
> - 将样例应用程序添加到群集
> - 应用配置更改并重新启动 Web 服务器
> - 运行应用程序
> - 验证 HTTP 负载平衡
> - 验证 HTTP 会话持久性
> - 停顿服务器实例

> ##

> 使用 Cluster JSP 样例应用程序教程的准备工作

> 在使用本教程之前，用户必须已执行了以下操作：

> - 成功完成了第 3 章 “企业功能配置教程”中的所有教程步骤。
> - 创建了样例应用程序的副本（如有必要）。

> 如果您正与其他用户共享应用服务器安装，或者您的系统用户 ID 不具有对应用服务器安装区域的写入权限，您就需要创建样例的副本。

> 要复制样例，请将 install_dir/samples 目录复制到您的用户 ID 具有写入权限的位置。

> 例如：

> cp -r install_dir/samples user_sample_directory

> samples 目录包含子目录 ee-samples，该子目录包含了本指南中所使用的样例。

> 继续进行本指南时，如果您使用的是样例副本，则请将目录 install_dir/samples/ 替换为您自己的样例应用程序副本的位置。

> ##

> 将 Cluster JSP 样例应用程序部署到群集中

> Cluster JSP 样例应用程序演示了如何在群集中的应用服务器之间平均分摊对 JSP 的请求。其中的购物车样例演示了 HTTP 会话信息是如何保留下来的，即使应用服务器发生故障。

> 样例应用程序附带了 WAR 文件，该文件可以作为 Web 应用程序进行部署。用户无需编译或汇编样例应用程序。

> 注 | 所有使用会话故障切换的应用程序都必须是可分布的。clusterjsp 样例应用程序是可分布的，如果您查看其 web.xml 文件就可以发现。 查看步骤： 转到 Cluster JSP 样例的 src 目录： cd /install_dir/samples/ee-samples/clustesrjsp/src 查看 web.xml 文件。您会看到以下代码： <web-app> <display-name>clusterjsp</display-name> <distributable/> web-app 元素具有指定的 distributable 子元素。无需更改应用程序的代码。

> 要将样例应用程序部署到群集中，必须先将它部署到群集中的每个实例中。

> 使用 cladmin 命令将应用程序同时部署到群集中的所有实例中。cladmin 命令将在群集中的所有实例上同时运行 asadmin 命令cladmin 命令位于 install_dir/bin 目录中。

> 本部分包括以下主题：

> - cladmin 命令的输入文件
> - cladmin 命令的语法
> - 运行 cladmin deploy 命令
> - 由 cladmin 命令支持的 asadmin 命令
> - 要求和限制

> ### cladmin 命令的输入文件

> cladmin 命令使用两个输入文件：clinstance.conf 和 clpassword.conf。

> - clinstance.conf：此文件包含了关于群集组成部分中的应用服务器实例的信息。
> - clpassword.conf：此文件包含管理服务器的口令，并在标准安装过程中预先填入了正确的口令。

> 这些文件位于 install_config_dir 目录中。由于之前使用过这些文件来运行 clsetup，因此这些文件具有适合您的工作环境的正确值。

> 由于这些文件中包括了运行 cladmin deploy 命令需指定的多个值，因此可以用最少的选项来运行 deploy 命令。

> ### cladmin 命令的语法

> cladmin 命令的语法如下所示：

> cladmin [--help] [--instancefile instance_file_location] [--passwordfile password_file_location] asadmin_command

> 其中：

> - instance_file_location 是输入文件 clinstance.conf 所在的位置
> - password_file_location 是输入文件 clpassword.conf 所在的位置
> - asadmin_command 是希望在群集中的应用服务器实例上运行的 asadmin 命令。

> 如果输入文件位于默认位置 /etc/opt/SUNWappserver7 中，则可以省略 instancefile 和 passwordfile 选项，按以下所示运行此命令：

> cladmin asadmin_command

> ### 运行 cladmin deploy 命令

> 要将应用程序部署到群集中的所有实例中，请键入：

> cladmin deploy filepath

> 使用随样例提供的 WAR 文件，您可以将样例作为 Web 应用程序进行部署，其中 filepath 是 WAR 文件的路径。

> 例如，如果 Cluster JSP 应用程序位于默认位置，则键入：

> cladmin deploy /opt/SUNWappserver7/samples/ee-samples/clusterjsp/clusterjsp.war

> 如果设置了 PATH 变量，您也可以转到 WAR 文件所在的目录，从该位置部署应用程序。例如：

> cd install_dir/samples/ee-samples/clusterjsp

> cladmin deploy clusterjsp.war

> 运行 cladmin deploy 命令时，您会在应用程序被部署到群集中的每个实例时看到相应的消息。

> 如果出现错误，请参考日志文件 /var/tmp/cladmin.log 以获得详细信息。

> 注 | 如果您是以 root 用户身份操作，并且尚未设置 root 用户的 PATH 变量，那么您可能无法从任何目录中运行 cladmin 命令。请转到 install_dir/bin 目录，然后在命令提示符下键入 ./cladmin asadmin_command。

> ### 由 cladmin 命令支持的 asadmin 命令

> 您可以使用 cladmin 命令，同时对群集中的每个应用服务器实例运行以下 asadmin 命令（configure-session-persistence 除外）：

> 表 4-1 由 cladmin 支持的 asadmin 命令

> 命令 | 用途
> --- | ---
> start-instance | 启动应用服务器实例
> stop-instance | 停止应用服务器实例
> deploy | 在应用服务器实例中部署目录中的 EJB、WEB、连接器、appclient 或应用程序组件
> undeploy | 删除应用服务器实例中已部署的组件
> create-jdbc-resource | 为应用服务器实例创建 JDBC 资源
> create-jdbc-connection-pool | 为应用服务器实例创建 JDBC 连接池
> configure-session-persistence | 为应用服务器实例配置会话持久性。对于在同一台计算机上运行的 Application Server 的所有实例，只需运行一次此命令。
> delete-jdbc-resource | 删除应用服务器实例的 JDBC 资源
> delete-jdbc-connection-pool | 删除应用服务器实例的 JDBC 连接池

> 有关 cladmin 命令的详细信息，请参阅 Sun Java System Application Server Administration Guide。

> ### 要求和限制

> cladmin 命令的运行有以下要求和限制：

> - 群集组成部分中的所有实例必须具有相同的管理员口令。可以在 clinstance.conf 文件中的 user 属性名中指定用户名。
> - 运行此命令之前，必须启动与群集组成部分中的所有应用服务器实例关联的管理服务器。
> - 在输入文件中为群集中的所有实例指定的值是相同的。cladmin 命令不支持用不同的值来设置每个实例。例如，此命令无法为每个实例创建不同设置的 JDBC 连接池。

> ##

> 使用 cladmin 命令启动应用服务器实例

> 在部署完样例应用程序之后，请验证服务器实例处于运行状态。

> 1. 在命令提示符下，键入：

> asadmin list-instances

> 此命令可以显示实例以及这些实例是否处于运行状态。

> 2. 如果实例尚未运行，请使用 cladmin 命令按以下所示启动这些实例：

> cladmin start-instance

> 启动每个服务器实例时，您会看到相应的消息。

> ##

> 验证应用程序部署

> 部署了应用程序之后，您就可以在 Sun Java System Application Server 实例中运行该应用程序来测试部署结果。要运行样例应用程序，请执行以下操作步骤：

> 1. 通过浏览器访问以下 URL：

> http://host:application_server_instance_port/clusterjsp

> 例如：

> http://test.sun.com:81/clusterjsp

> 2. 您会看到此样例应用程序的页面。

> 图 4-1 Cluster JSP 样例应用程序页面

> 如果出现错误，请参见应用服务器实例部署的错误诊断。

> 3. 在会话属性字段输入信息，然后单击“添加会话数据”。

> 应用程序将显示您所添加的数据。

> 4. 要验证下一个实例的部署，请在 URL 中键入该实例的端口和主机名：

> http://host:application_server_instance_port/clusterjsp

> 例如：

> http://test.sun.com:82/clusterjsp

> 这些 URL 可验证是否已将应用程序部署到应用服务器实例中。由于尚未将应用程序添加到 loadbalancer.xml 中的群集，因此还不能通过 Web 服务器验证该应用程序。

> ### 监视应用服务器中的样例

> 您可以通过查看应用服务器实例的事件日志文件来监视样例应用程序。每个应用服务器实例都有自己的事件日志。

> 本部分包括以下主题：

> - 使用管理界面查看日志
> - 使用 tail 命令查看日志
> - 事件日志中由应用程序生成的消息
> - 访问日志中由应用程序生成的消息

> #### 使用管理界面查看日志

> 要使用管理界面查看服务器实例的日志文件，请执行以下操作步骤：

> 1. 进入管理界面。
> 2. 在左侧的窗格中，单击希望检查其日志的实例。
> 3. 单击“日志”选项卡。
> 4. 单击“查看事件日志”
> 5. 要刷新日志视图，请单击“确定”。

> 如果要查看的日志条目超过 25 个，可直接在“要查看的错误数目？”区域中输入一个较大的数字，然后单击“确定”刷新日志。

> 要使用管理界面查看应用服务器实例的 HTTP 访问日志，请执行以下操作步骤：

> 1. 进入管理界面。
> 2. 在左侧的窗格中，单击希望检查其日志的实例。
> 3. 单击“日志”选项卡。
> 4. 单击“查看 HTTP 访问日志”。

> 服务器实例的 HTTP 访问日志中显示了服务器实例接收到的对样例应用程序的访问情况。

> 访问日志的名称为 access。默认情况下，访问日志文件和服务器事件日志文件位于同一目录中：

> domain_config_dir/domain1/server1/logs/

> #### 使用 tail 命令查看日志

> 使用 tail -f 命令监视日志文件可以在记录这些文件后自动显示消息。您必须在管理界面中单击某个按钮来反映页面上的新信息。

> 要使用在中使用 tail -f 命令，请执行以下操作步骤：

> 1. 浏览到要监视的服务器实例的日志目录，例如：

> cd domain_config/domain1/server1/logs/

> 2. 在服务器事件日志文件中运行 tail 命令：

> tail -f server.log

> -f 选项使 tail 命令处于运行状态，这样当有新的日志条目写入文件时，将显示该条目。

> #### 事件日志中由应用程序生成的消息

> 当应用程序向 stdout 和/或 stderr 写入信息时，默认情况下，该信息将作为 INFO 级的消息，用消息 ID CORE3282 (stdout) 和 CORE3283 (stderr) 记录到服务器实例的事件日志中。当运行 Cluster JSP 样例时，一些由应用程序生成的消息将被写入服务器事件日志。以下摘录的是某些消息的快照：

> 例如：

> [13/Aug/2003:17:32:28] INFO ( 9657): CORE3282: stdout: 没有为该请求输入参数

> [13/Aug/2003:17:32:34] INFO ( 9657): CORE3282: stdout: 添加到会话：name1 = 1

> [13/Aug/2003:17:32:45] INFO ( 9657): CORE3282: stdout: 添加到会话：name2 = 2

> [13/Aug/2003:17:32:52] INFO ( 9657): CORE3282: stdout: 添加到会话：name3 = 3

> 这些消息显示出当向应用程序的用户界面输入数据时，值的变化。

> #### 访问日志中由应用程序生成的消息

> 运行 Cluster JSP 样例时，将在响应访问请求的应用服务器实例中记录访问日志消息。

> 192.18.151.14 - - [12/Aug/2003:15:34:52 -0700] "GET /clusterjsp/ HTTP/1.0" 302 1086

> 192.18.151.14 - - [12/Aug/2003:15:34:52 -0700] "GET /clusterjsp/HaJsp.jsp HTTP/1.0" 200 1578

> ### 应用服务器实例部署的错误诊断

> 下表介绍了尝试运行此样例应用程序时最常见的问题。左侧列显示了出现的情况，中间列是可能导致问题的原因，右侧列是建议尝试的解决办法。

> 表 4-2 应用服务器实例部署的错误诊断

> 出现的情况 | 可能原因 | 解决办法
> --- | --- | ---
> 尝试访问首页时连接失败。 | 未启动应用服务器。 在 URL 中指定了错误的端口。 | 确保已经启动了应用服务器。 确定正确的 HTTP 服务器端口号。 有关详细信息，请参见启动服务器。
> 访问主页面时出现 404 错误。 | 未部署应用程序。 | 请参见将 Cluster JSP 样例应用程序部署到群集中。

> 解决问题时，监视应用服务器的日志文件是非常必要的。同时，查看 HTTP 访问日志文件，以验证 HTTP 请求是否按预期到达应用服务器也很重要。

> ##

> 将样例应用程序添加到群集

> 当您在群集中的两台服务器实例中部署了样例应用程序之后，您就必须将该应用程序添加到在 loadbalancer.xml 中创建的群集：

> 1. 转到 Web 服务器的 config 目录，并使用文本编辑器打开 loadbalancer.xml 文件。
> 2. loadbalancer.xml 样例文件包含以下行：

> <web-module context-root="/abc" enabled="true" disable-timeout-in-minutes="60" enabled="true" />

> 更改此行以反映 clusterjsp 样例应用程序：

> <web-module context-root="clusterjsp" enabled="true" disable-timeout-in-minutes="60"/>

> 此行将把 clusterjsp 应用程序添加到群集并启用该应用程序。

> 上下文根路径与在 Sun Java System Application Server 实例的 server.xml 文件中为应用程序设置的值是同一个值。

> disable-timeout-in-minutes 属性被设置为 60。也就是说如果禁用应用程序，将会为服务器留出 60 分钟的应用程序停顿时间，以使其完成响应所有未处理的应用程序请求。之前我们设置了实例级的 disable-timeout-in-minutes 属性，它可以控制服务器实例的停顿时间。

> 3. 保存所做的更改。

> 此时 loadbalancer.xml 文件应类似于以下文件：

> 代码示例 4-1 样例应用程序经配置的 loadbalancer.xml 文件

> <!DOCTYPE loadbalancer PUBLIC "-//Sun Microsystems Inc.//DTD Sun Java System Application Server 7.0//EN" "sun-loadbalancer_1_0.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="clusterjsp" enabled="true" disable-timeout-in-minutes="60"/>

> <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>

> ##

> 应用配置更改并重新启动 Web 服务器

> 编辑完 loadbalancer.xml 文件之后，您需要启动 Web 服务器；如果 Web 服务器已经处于运行状态，则需要应用配置更改并重新启动 Web 服务器。

> 启动 Web 服务器的步骤：

> 1. 转到 web_server_install_dir/https-instance_name。

> 例如：

> /usr/iplanet/servers/https-test.sun.com

> 2. 键入 ./start 启动服务器

> 可能需要同时启动 Web 服务器的管理服务器，管理服务器位于 web_server_install_dir/https-admin-serv。

> 将更改应用到处于运行状态的 Web 服务器并重新启动服务器的步骤：

> 1. 在 Web 浏览器中键入相应的 URL 来访问 Web 服务器的服务器管理器。

> http://web_server:web_server_admin_port

> 例如：

> http://test.sun.com:8888

> 2. 从服务器管理器中选择所需的服务器，然后单击“管理”。

> 则将显示所选 Web 服务器实例的服务器管理器。

> 3. 同时显示一则消息，警告您已经手动更改了配置文件，因此需要应用这些更改。
> 4. 单击页面右上角的“应用”链接。
> 5. 单击“应用更改”以应用所做的更改并重新启动服务器。

> 如果以后再更改 loadbalancer.xml 文件，就无需应用更改和重新启动服务器了。这时因为设置了重新装入轮询时间间隔，所以以后所做的所有更改都将被自动装入。有关详细信息，请参见使用重新装入轮询时间间隔来进行动态重新配置。

> ##

> 运行应用程序

> 将应用程序部署到了所有实例中并更新了 loadbalancer.xml 文件之后，请在 Web 服务器上测试该应用程序以确保其正常工作。

> 1. 通过浏览器访问以下 URL：

> http://host:web_server_port/clusterjsp

> 例如：

> http://test.sun.com:80/clusterjsp

> 您会看到此样例应用程序的页面。

> 图 4-2 Cluster JSP 样例应用程序页面

> 页面顶部列出了服务器信息，以及唯一的“会话 ID”。如果您直接在应用服务器实例上访问此应用程序，则页面顶部的端口信息是应用服务器的信息。如果您通过 Web 服务器访问群集的应用程序，则端口信息是 Web 服务器的信息。

> 2. 输入会话属性的名称和值，然后单击“添加会话数据”。

> 则页面上将显示输入的会话数据。

> 图 4-3 在 Cluster JSP 中显示的会话数据

> 请注意页面顶部的“会话 ID”。如果输入了会话属性并在会话超时前单击了“添加会话数据”，则页面顶部的“会话 ID”将与第一次访问应用程序时相同。

> 在上一个示例中，“会话 ID d8bf64b4dd0146c7ff47b943cf52”在两种情况下就是相同的。

> 但如果会话超时，“会话 ID”将会不同。

> 3. 输入新的会话属性名称和值。如果会话尚未超时，所有属性都会在“从 HTTP 会话中检索到的数据”区域中列出。

> 例如，如果在会话超时之前输入会话属性数据两次以上，则会显示类似于以下页面的页面。

> 图 4-4 具有多个 HTTP 会话属性的 Cluster JSP 样例应用程序

> 4. 如果等到会话超时（1800 秒）以后再输入新的会话属性数据，则只显示最新输入的数据，并且页面顶部会显示新的会话 ID。

> 您也可以单击“清除会话”来模拟超时，这样会清除输入的会话数据，并为您提供一个新的会话 ID。

> 图 4-5 具有新的 HTTP 会话信息的 Clustr JSP

> 请注意页面顶部将显示一个新的会话 ID（本例中为“d8ca7921435686ffffffff996dc3bbf9c5489”），并且“从 HTTP 会话中检索到的数据”部分仅显示最新输入的信息（本例中为“test4=4”）。

> ##

> 验证 HTTP 负载平衡

> 由于已经运行了样例应用程序，并且熟悉了会话信息的显示方式，因此您就可以验证负载平衡器是否处于工作状态。否则的话，您可以对负载平衡器进行错误诊断。

> 本部分包括以下主题：

> - 验证负载平衡的步骤
> - 对负载平衡器插件进行错误诊断

> ### 验证负载平衡的步骤

> 要验证负载平衡器是否处于工作状态，可执行以下操作步骤。

> 1. 打开两个单独的浏览器，然后键入 http://web_server_name:web_server_port/clusterjsp，以从 Web 服务器运行应用程序。例如：

> http://test.sun.com:80/clusterjsp

> 由于使用负载平衡器时会话数据是粘性的，因此打开一个浏览器窗口访问应用程序时，该浏览器中所有的重新装入操作或其它操作均被认为处在同一会话中，并由一个 Sun Java System Application Server 实例来提供服务。

> 要验证应用程序的负载平衡是否处于工作状态，请再打开一个浏览器访问应用程序。由于会话数据保存在 cookie 中，因此您必须在另一台计算机上再打开一个浏览器，或者在同一台计算机上使用不同的浏览器软件。检查“会话 ID”以确保两个浏览器窗口有各自的会话数据。

> 2. 在两个单独的会话窗口中访问完了应用程序之后，请打开另一个浏览器窗口，查看 Web 服务器错误日志。
> 1. 使用 Web 服务器文档中提供的 URL 访问 Sun Java System Web Server 的管理服务器，例如：

> http://test.sun.com:8888

> 2. 选择所需的 Web 服务器实例，然后单击“管理”。
> 3. 在所选 Web 服务器实例的服务器管理器中，单击“日志”选项卡。
> 4. 在左侧的窗格中，单击“查看错误日志”。
> 3. 从错误日志中查找带有 RequestExit 的条目。

> 你可以直观地进行查找，也可以在“仅显示符合以下条件的项”字段中输入 RequestExit。

> 4. 带有 RequestExit 的条目应同时显示两个 Sun Java System Application Server 实例的 HTTP 侦听程序 ID，这样您就可以看到两个应用服务器实例都在响应请求。
> 5. 要验证 Sun Java System Application Server 实例已响应请求，请检查每个应用服务器实例的 HTTP 访问日志。

> 您应该会看到对 clusterjsp 应用程序发出的请求。有关检查访问日志的详细信息，请参见使用管理界面查看日志。

> 注 | 必须对 Web 服务器启用了冗余日志功能，才能查看 RequestExit 信息。相关说明请参见启用负载平衡器的监视功能。

> 如果您在使用负载平衡器时遇到困难，请参阅下面的部分，该部分包含了有关对负载平衡器插件进行错误诊断的内容。

> ### 对负载平衡器插件进行错误诊断

> 使用下表可以帮助您对负载平衡进行错误诊断。左侧列说明出现的情况，中间列是可能导致问题的原因，右侧列是解决办法。

> 表 4-3 对负载平衡进行错误诊断

> 出现的情况 | 可能原因 | 解决办法
> --- | --- | ---
> 尝试访问应用程序时连接失败 | 未启动 Web 服务器 在 URL 中指定了错误的端口。 | 确保已启动了 Web 服务器。 确定正确的 Web 服务器端口号。 请参阅 Web 服务器文档以获得详细信息。
> 访问应用程序时出现 404 错误 | 未部署应用程序。 loadbalancer.xml 文件中有错误 | 请参见将 Cluster JSP 样例应用程序部署到群集中。 Web 服务器错误日志中会记录 loadbalancer.xml 文件中的错误。有关详细信息，请参见查找 loadbalancer.xml 文件中的错误。
> 访问应用程序时显示错误页面 | 群集中有一台或多台服务器未响应。 | 确保群集中的服务器实例处于运行状态。 检查错误日志以查看运行状况检查器是否已找到运行异常的实例。有关详细信息，请参见使用运行状况检查器。

> #### 查找 loadbalancer.xml 文件中的错误

> 如果无法通过 Web 服务器 URL 访问到样例应用程序，可能是负载平衡器出了问题。这时，如果可以通过个别应用服务器访问到应用程序，就可以确定应用服务器实例没有问题。

> 由于负载平衡器插件会将信息记录到 Web 服务器日志文件中，因此您应该查看 Web 服务器错误日志文件以获得详细信息。

> 您可以通过服务器管理器查看 Sun Java System Web Server 的错误日志：

> 1. 使用 Web 服务器文档中提供的 URL 访问 Sun Java System Web Server 的管理服务器，例如：

> http://test.sun.com:8888

> 2. 选择所需的 Web 服务器实例，然后单击“管理”。
> 3. 在所选 Web 服务器实例的服务器管理器中，单击“日志”选项卡。
> 4. 在左侧的窗格中，单击“查看错误日志”。
> 5. 默认视图显示 25 条信息；您可以根据需要增加显示信息的数目。

> 如果是负载平衡器出现了问题，您会看到包含“初始化负载平衡子系统失败”内容的信息。

> 如果是 loadbalancer.xml 文件有错误，您会看到解析器错误，它指向 loadbalancer.xml 文件中有错误的行。例如，您可能会看到与下面类似的信息：

> [17/Jun/2003:09:57:44] catastrophe ( 5643): LBConfigParser.cpp@434: 报告：lb.configurator: CNFG1000: 正在解析文件 ：/usr/iplanet/servers/https-test.sun.com/config/loadbalancer.xml

> 第 7 行和第 3 列出错。错误消息为：内容模型不允许使用任何字符数据。

> 此信息指向 loadbalancer.xml 文件中有错误的行。

> 请在 loadbalancer.xml 文件中更正错误，应用更改并重新启动 Web 服务器，然后重试。

> #### 使用运行状况检查器

> 如果负载平衡器运行正常，并且已将 Web 服务器的 LogVerbose 设置为 on，则会在 Web 服务器的日志文件中看到运行状况检查器处于工作状态：

> [09/Apr/2003:13:36:02] verbose ( 7576): HealthChecker.cpp@153: 报告：lb.monitor: HLCK1006: 运行异常的实例 cluster1 1049920562631 无运行异常的实例

> 有关启用冗余日志功能的说明，请参见启用负载平衡器的监视功能。

> 无论是否使用冗余日志，只要有一个实例出现异常，负载平衡器就会在访问失败时将该实例标记为运行异常。如果该实例仍处于异常状况，则运行状况检查器会再次将其标记为运行异常。

> 例如：

> [17/Jun/2003:10:37:27] 警告 ( 5700): 报告：lb.runtime: RNTM2024: 守护程序 http://test.sun.com:81 运行异常。

> [17/Jun/2003:10:37:27] 警告 ( 5700): 报告：lb.healthchecker: HLCK3003: 检测到群集 cluster1 中的侦听程序 http://test.sun.com:81 仍处于异常状况

> 运行状况检查器将继续监视运行异常的实例，并在该实例运行正常后立即再将其标记为运行正常。

> ##

> 验证 HTTP 会话持久性

> 验证了负载平衡工作正常之后，就可以验证 HTTP 会话持久性了。在会话持久性作用期间，如果有一个 Sun Java System Application Server 实例由于某些原因而导致失败，则下一个实例将拾取该会话并处理其请求。

> 注 | 会话持久性不在群集之间起作用，而仅在一个群集中的实例之间起作用。

> 验证 HTTP 会话持久性在发挥作用的步骤：

> 1. 打开一个浏览器窗口。
> 2. 从 Web 服务器访问应用程序。例如：

> http://test.sun.com:80/clusterjsp

> 3. 查看 Web 服务器错误日志，找到响应此请求的服务器（再次查找带有 RequestExit 的条目）。
> 4. 关闭提供此页面的 Sun Java System Application Server 实例。

> 您可以使用管理界面将其关闭：

> 1. 使用管理端口号来访问管理页面，例如：

> http://test.sun.com:4848

> 2. 在左侧的窗格中，单击要停止的服务器实例。
> 3. 在右侧的窗格中单击“停止”。
> 5. 重新装入 Cluster JSP 样例应用程序页面。

> 会话 ID 和会话属性数据被保留。

> 6. 查看 Web 服务器错误日志。可以注意到另外一个 Application Server 的实例正在响应此请求。

> 服务器脱机后将保存会话信息。如果在应用程序传输数据时发生故障，可能会导致会话数据的丢失，这是唯一可能导致数据丢失的情况。在这种情况下，您可能会看到稍早一些的会话数据。

> ##

> 停顿服务器实例

> 在现实环境中，用户不会在未完成现有会话的情况下关闭服务器。相反地，用户会分阶段关闭服务器，这个过程称为停顿。

> 请按以下步骤停顿应用服务器实例：

> 1. 打开一个浏览器窗口，并通过 Web 服务器端口访问 Cluster JSP 应用程序。使此窗口保持打开状态。
> 2. 确定正在响应此请求的应用服务器实例。

> 打开另一个浏览器窗口，并在管理界面中访问 server1 应用服务器实例的 HTTP 访问日志。在日志中查找当您发出请求时 Cluster JSP 应用程序的访问记录。如果在 server1 的日志中看到访问记录，则说明 server1 应用服务器实例正在响应此请求。如果没有在访问日志中看到这样的条目，则请查看 server2 应用服务器实例的访问日志。使访问日志窗口保持打开状态。

> 3. 验证了正在响应此请求的应用服务器实例之后，请在 loadbalancer.xml 文件中禁用该服务器实例。

> 将相应服务器实例的 enabled="true" 改为 enabled="false"。例如：

> <instance name="server1" enabled="false" disable-timeout-in-minutes="5" listeners="http://test.sun.com:81"/>

> 4. 保存对 loadbalancer.xml 文件所做的更改。
> 5. 等到重新装入轮询时间间隔过后，将装入新的配置。

> 本教程中的重新装入轮询时间间隔为 60 秒，即只需等待一分钟。

> 6. 一旦重新装入轮询时间间隔已过，并装入了新的配置，负载平衡器插件就不再将不包含现有对话的请求发送到该服务器实例了。但是在停顿期间，带有现有会话的请求仍然会被发送到该服务器实例。

> 要查看此情况，请在打开的 Cluster JSP 窗口中输入名称和属性信息，然后单击“添加会话数据”

> 7. 转到一个浏览器窗口，该窗口显示了响应初始请求的服务器的 HTTP 访问日志。单击“确定”刷新信息。

> 请注意，尽管该服务器在 loadbalancer.xml 文件中被禁用，但它仍然在响应此请求。

> 8. 请等待五分钟，等到停顿时间结束后，在打开的 Cluster JSP 应用程序窗口中输入其它名称属性信息并单击“添加会话数据”。

> 服务器实例的禁用超时（以分钟为单位）控制着停顿时间。在本教程前面的部分，我们将禁用超时设置为五分钟。

> 9. 由于停顿时间已过，因此请求将被发送到其它应用服务器实例。

> 要查看此结果，请刷新服务器实例的 HTTP 访问日志。您会看到没有任何新请求。

> 10. 打开第三个浏览器窗口，查看其它服务器实例的 HTTP 访问日志。您会看到下一个服务器实例正在响应此 Cluster JSP 请求。

> 然后，您就可以安全地关闭此应用服务器实例了。

> 您也可以停顿应用程序以使其安全脱机。有关应用服务器实例和应用程序的停顿的详细信息，请参阅 Sun Java System Application Server Administration Guide。

> 上一个 目录 索引 下一个

> 版权所有 2004 Sun Microsystems, Inc. 保留所有权利。