Sun Java System Application Server Enterprise Edition 8.1 2005Q2 高可用性管理指南

配置负载平衡器

负载平衡器配置是 domain.xml 文件中的命名配置。负载平衡器配置非常灵活:

本节介绍了如何创建、修改和使用负载平衡器配置,其中包括以下主题:

创建 HTTP 负载平衡器配置

使用 asadmin 命令 create-http-lb-config 创建负载平衡器配置。创建 HTTP 负载平衡器配置介绍了负载平衡器配置参数。有关更多信息,请参见 create-http-lb-configdelete-http-lb-configlist-http-lb-configs 的文档。

表 4–1 负载平衡器配置参数

参数 

说明 

response timeout 

服务器实例必须返回响应的时间(以秒为单位)。如果在该时间段内未收到任何响应,则服务器将被视为处于异常状态。默认值为 60。 

HTTPS 路由选择

对负载平衡器的 HTTPS 请求是否会导致对服务器实例的 HTTPS 或 HTTP 请求。有关更多信息,请参见配置 HTTPS 路由选择

reload interval 

检查负载平衡器配置文件 loadbalancer.xml 的更改的时间间隔。当检查检测到更改时,系统将重新装入配置文件。值为 0 将禁用重新装入。有关更多信息,请参见启用动态重新配置

monitor 

是否为负载平衡器启用监视功能。 

routecookie

负载平衡器插件用于记录路由信息的 Cookie 的名称。HTTP 客户机必须支持 Cookie。如果您的浏览器设置为在存储 Cookie 之前进行询问,则 Cookie 的名称为 JROUTE。 

target 

负载平衡器配置的目标。指定目标的效果与向该目标添加引用的效果相同。目标可以是群集,也可以是独立实例。

创建 HTTP 负载平衡器引用

当您在负载平衡器中创建对独立服务器或群集的引用时,此服务器或群集将被添加到负载平衡器控制的目标服务器和群集的列表中。仍然需要先启用所引用的服务器或群集(使用 enable-http-lb-server),然后才能对该服务器或群集的请求进行负载平衡。如果创建了带有目标的负载平衡器配置,则系统已将该目标添加为引用。

使用 create-http-lb-ref 创建引用。您必须提供负载平衡器配置名称和目标服务器实例或群集。

要删除引用,请使用 delete-http-lb-ref。要删除某个引用,必须先使用 disable-http-lb-server 禁用引用的服务器或群集。

有关更多信息,请参见 create-http-lb-refdelete-http-lb-ref 的文档。

启用用于负载平衡的服务器实例

创建对服务器实例或群集的引用后,请使用 enable-http-lb-server 来启用服务器实例或群集。如果在创建负载平衡器配置时使用了某个服务器实例或群集作为目标,则必须启用该服务器实例或群集。

有关更多信息,请参见 enable-http-lb-server 的文档。

启用用于负载平衡的应用程序

由负载平衡器管理的所有服务器都必须具有同构配置,包括部署到这些服务器的相同的应用程序集。部署和启用某个应用程序以便进行访问(在部署期间或部署之后发生)后,您必须启用该应用程序以进行负载平衡。如果没有为负载平衡启用应用程序,则即使已对该应用程序所部署到的服务器的请求执行了负载平衡和故障转移,也不会对该应用程序的请求执行负载平衡和故障转移。

启用应用程序时,请指定应用程序名称和目标。如果负载平衡器管理了多个目标(例如,两个群集),请在所有目标上启用该应用程序。

有关更多信息,请参见 enable-http-lb-application 的联机帮助。

如果部署了新的应用程序,则还必须启用该应用程序以进行负载平衡并再次导出负载平衡器配置。

创建 HTTP 运行状况检查器

负载平衡器的运行状况检查器将定期检查被标记为异常的所有已配置的 Application Server 实例。运行状况检查器不是必需的,但如果没有运行状况检查器,或者禁用了运行状况检查器,则不会执行异常实例的定期运行状况检查。

负载平衡器的运行状况检查机制使用 HTTP 与应用程序服务器实例进行通信。运行状况检查器将 HTTP 请求发送给指定的 URL 并等待响应。HTTP 响应标题中的状态码在 100 到 500 之间时表示实例处于正常状态。

创建运行状况检查器

要创建运行状况检查器,请使用 asadmin create-http-health-checker 命令。指定下列参数:

表 4–2 运行状况检查器参数

参数 

说明 

默认值 

url 

指定负载平衡器检查的侦听器的 URL 以确定其运行状况。 

"/" 

interval 

指定进行实例的运行状况检查的时间间隔(以秒为单位)。指定 0 将禁用运行状况检查器。 

30 秒 

timeout 

指定超时间隔(以秒为单位),必须在该时间间隔内获得响应才能认为侦听器运行正常。 

10 秒 

如果应用程序服务器实例被标记为异常,运行状况检查器将轮询异常实例以确定实例的状态是否已变为正常。运行状况检查器使用指定的 URL 来检查所有异常的应用程序服务器实例,以确定这些异常的应用程序服务器实例是否已返回到正常状态。

如果运行状况检查器发现某个异常实例已变为正常,该实例将被添加到正常实例列表中。

有关更多信息,请参见 create-http-health-checkerdelete-http-health-checker 的文档。

正常实例的附加运行状况检查属性

create-http-health-checker 创建的运行状况检查器仅检查异常实例。要定期检查正常实例,请在导出的 loadbalancer.xml 文件中设置某些附加属性。


注 –

只能在导出 loadbalancer.xml 之后对该文件进行手动编辑来设置这些属性。没有等效的 asadmin 命令可以使用。


要检查正常的实例,请设置以下属性:

表 4–3 运行状况检查器手动设置属性

属性 

定义 

active-healthcheck-enabled

True/False 标志,用于表示是否要对正常服务器实例执行 Ping 操作以确定这些实例是否正常。要对服务器实例执行 Ping 操作,请将标志设置为 True。 

number-healthcheck-retries

指定将未响应的服务器实例标记为异常之前,负载平衡器的运行状况检查器执行 Ping 操作的次数。有效范围在 1 到 1000 之间。默认设置值为 3。 

通过编辑 loadbalancer.xml 文件来设置属性。例如:

<property name="active-healthcheck-enabled" value="true"/>
<property name="number-healthcheck-retries" value="3"/>

如果添加了这些属性,随后编辑并再次导出 loadbalancer.xml 文件,则必须再次将这些属性添加到该文件中,因为新导出的配置不会包含这些属性。

导出负载平衡器配置文件

Sun Java System Application Server 附带的负载平衡器插件使用名为 loadbalancer.xml 的配置文件。使用 asadmin 工具可以在 domain.xml 文件中创建负载平衡器配置。配置了负载平衡环境后,请将其导出到文件中。

Procedure导出负载平衡器配置

  1. 使用 asadmin 命令 export-http-lb-config 导出 loadbalancer.xml 文件。

    导出用于特定负载平衡器配置的 loadbalancer.xml 文件。您可以指定路径和其他文件名。如果不指定文件名,则此文件将被命名为 loadbalancer.xml.load_balancer_config_name。如果不指定路径,则将在 application_server_install_dir/domains/domain_name/generated 目录中创建该文件。

    要在 Windows 上指定路径,请用引号将路径引起来。例如 "c:\sun\AppServer\loadbalancer.xml"

  2. 将已导出的负载平衡器配置文件复制到 Web 服务器的配置目录。

    例如,对于 Sun Java System Web Server,该位置可能为 web_server_root/config

    Web 服务器配置目录中的负载平衡器配置文件名必须为 loadbalancer.xml。如果您的文件使用其他名称(例如 loadbalancer.xml.load_balancer_config_name),则必须进行重命名。

更改负载平衡器配置

如果您通过创建或删除对服务器的引用、部署新的应用程序、启用或禁用服务器或应用程序等方法来更改负载平衡器配置,请再次导出负载平衡器配置文件并将其复制到 Web 服务器的 config 目录。有关更多信息,请参见导出负载平衡器配置文件

负载平衡器插件将根据在负载平衡器配置中指定的重新装入时间间隔定期检查已更新的配置。在指定的时间值后,如果负载平衡器发现新的配置文件,它将开始使用该配置。

启用动态重新配置

使用动态重新配置时,负载平衡器插件将定期检查已更新的配置。

要启用动态重新配置,请执行以下步骤:


注 –

如果负载平衡器在尝试进行自我重新配置时遇到硬盘读取错误,它将使用内存中的当前配置。负载平衡器还确保了在覆写现有配置之前,已修改的配置数据符合 DTD。

遇到磁盘读取错误后,将在 Web 服务器的错误日志文件中记录一则警告消息。

Sun Java System Web Server 的错误日志位于:web_server_install_dir/webserver_instance/logs/


禁用(停止)服务器实例或群集

出于任何原因停止应用程序服务器之前,您希望实例完成正在处理的请求。正常禁用服务器实例或群集的进程称为停止。

负载平衡器使用以下策略来停止应用程序服务器实例:

Procedure禁用服务器实例或群集

  1. 运行 asadmin disable-http-lb-server,设置超时值(以分钟为单位)。

  2. 使用 asadmin export-http-lb-config 导出负载平衡器配置文件。

  3. 将导出的配置复制到 Web 服务器的 config 目录。

  4. 停止该服务器实例或群集。

禁用(停止)应用程序

在取消部署某个 Web 应用程序之前,您希望此应用程序完成正在处理的请求。正常禁用应用程序的进程称为停止。停止应用程序时,您可以指定超时时间。基于超时时间,负载平衡器可使用以下策略停止应用程序:

Procedure禁用应用程序

  1. 使用 asadmin disable-http-lb-application 指定以下内容:

    • 超时(以分钟为单位)。

    • 要禁用的应用程序的名称。

    • 要禁用此应用程序的目标群集或实例。

  2. 使用 asadmin export-http-lb-config 导出负载平衡器配置文件。

  3. 将导出的配置复制到 Web 服务器的 config 目录。

配置 HTTP 和 HTTPS 故障转移

如果 HTTP/HTTPS 会话所连接的原始应用程序服务器实例变为不可用,负载平衡器插件会将这些会话故障转移到其他应用程序服务器实例上。本节介绍了如何配置负载平衡器插件以启用 HTTP/HTTPS 路由选择和会话故障转移。

本节包括以下主题:

HTTPS 路由选择

加密的 HTTP (HTTP Secure, HTTPS) 协议使用安全套接字层 (Secure Socket Layer, SSL) 为 HTTP 请求的解密提供加密,以实现安全通信。要使用 HTTPS 路由选择,必须配置一个或多个 HTTPS 侦听器。

负载平衡器插件将收到的所有 HTTP 或 HTTPS 请求路由到应用程序服务器实例。但是,如果启用了 HTTPS 路由选择,则负载平衡器插件将仅把 HTTPS 请求转发给使用 HTTPS 端口的应用程序服务器。HTTPS 路由选择是针对新请求和粘性请求而执行的。

如果收到了 HTTPS 请求且没有正在进行的会话,负载平衡器插件将选择使用已配置的 HTTPS 端口的可用应用程序服务器实例,并将请求转发到该实例。

在正在进行的 HTTP 会话中,如果收到对同一个会话的新 HTTPS 请求,则将使用在 HTTP 会话期间保存的会话和粘性信息来路由 HTTPS 请求。新的 HTTPS 请求将被路由到处理上一个 HTTP 请求的同一服务器上,但是,是在 HTTPS 端口上进行。

配置 HTTPS 路由选择

create-http-lb-config 命令的 httpsrouting 选项用于控制是为正在参与负载平衡的所有应用程序服务器打开还是关闭 HTTPS 路由选择。如果此选项设置为 False,则所有 HTTP 和 HTTPS 请求都将作为 HTTP 请求进行转发。创建新的负载平衡器配置时,请将此选项设置为 true,或者以后使用 asadmin set 命令进行更改。


注 –

如果 https-routing 设置为 true,而新请求或粘性请求传入到没有正常 HTTPS 侦听器的群集中,该请求将生成一个错误。


已知问题

负载平衡器对 HTTP/HTTPS 请求处理具有以下限制。

配置幂等 URL

幂等请求是一种在重试时不会在应用程序中造成任何更改或不一致的请求。在 HTTP 中,某些方法(例如 GET)是幂等的,而其他方法(例如 POST)则不是。重试幂等 URL 不能导致服务器或数据库中的值发生更改。唯一的区别在于用户收到的响应会有所不同。

幂等请求的示例包括搜索引擎查询和数据库查询。基本原则是重试不会导致数据的更新或修改。

要增强已部署的应用程序的可用性,请这样配置环境:使其在由负载平衡器提供服务的所有应用程序服务器实例上重试失败的幂等 HTTP 请求。此选项用于只读请求(例如,重试搜索请求)。

请在 sun-web.xml 文件中配置幂等 URL。当您导出负载平衡器配置时,幂等 URL 信息将自动被添加到 loadbalancer.xml 文件中。

有关配置幂等 URL 的更多信息,请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Developer’s Guide》中的“Configuring Idempotent URL Requests”