此部分提供了有关如何设置 Web Server 软件以用作 Application Server 群集的负载平衡器的说明。另外,此部分还提供了用来配置负载平衡器并将其导出到 Web Server 的步骤。只有当您运行的是具有企业配置文件或群集配置文件的域时,负载平衡器功能才可用。
负载平衡器随群集一起部署。负载平衡器提供以下功能:
允许应用程序或服务在多个物理(或逻辑)主机之间水平伸缩,但仍为用户提供单个 URL
使用户与主机故障或服务器崩溃隔离(与会话持久性结合使用时)。
通过对用户隐藏内部网络来提高安全性
Application Server 包含用于常用 Web 服务器(如 Sun JavaTM System Web Server、Apache 和 Microsoft Windows IIS)的负载平衡插件。
要完成此部分中的步骤,除了域管理服务器和按照本指南的指导目前您已创建的两个 Application Server 实例之外,您的系统中还必须有足够的内存来运行 Web Server。建议使用具有 512 MB 至 1024 MB 内存的系统。
此主题介绍了以下步骤:
在设置负载平衡之前,需要安装负载平衡器插件。有关安装负载平衡插件的说明,请参见 《Sun Java System Application Server 9.1 Installation Guide》中的“To Install the Load Balancing Plug-in (standalone)”。这些过程假设您运行的是具有群集配置文件或企业配置文件的域。
使用管理控制台创建负载平衡器。也可以使用 asadmin create-http-lb(1) 命令。
在管理控制台中单击“HTTP 负载平衡器”节点。
请单击“新建”。
键入负载平衡器的名称 (lb1)、安装了 Web Server 的主机和 Web Server 实例端口。在该样例方案中,Web Server 主机为 localhost,端口为 38000。
选中“自动应用更改”复选框。如果您选择该选项,则不必导出负载平衡器配置。您对负载平衡器配置进行的所有更改都将自动传播。
选择 cluster1 作为目标。
创建群集介绍了如何创建样例群集 (cluster1)
单击“保存”。
为负载平衡启用 cluster1:
asadmin enable-http-lb-server cluster1
为负载平衡启用 clusterjsp 应用程序:
asadmin enable-http-lb-application clusterjsp。
有关高级主题(如更改负载平衡器配置或创建运行状况检查器)的信息,请参见《Sun Java System Application Server 9.1 高可用性管理指南》中的第 5 章 “配置 HTTP 负载平衡”。
通过启动或重新启动 Web Server 来启动负载平衡。
如果充当负载平衡器的 Web Server 实例尚未运行,请启动该 Web Server。
如果使用的是 Web Server 7.0,请使用 wadm start-instance 命令。
对于 Web Server 6.1,请运行 <websvr-instance-dir> 目录中的 start 脚本。
如果充当负载平衡器的 Web Server 实例已在运行,请停止该 Web Server 并重新启动它。
对于 Web Server 6.1,请使用 web_server_install_dir/https-hostname 中的停止程序,然后通过运行启动程序来重新启动该服务器。
对于 Web Server 7.0,请先使用 wadm stop-instance 命令,然后使用 wadm start-instance 命令。
部署了应用程序并且负载平衡器在运行后,请验证负载平衡功能是否起作用。
要显示 clusterjsp 应用程序的首页,请在浏览器中键入以下 URL:
http://localhost:web_server_port/clusterjsp
用运行 Web Server 的系统的名称替换 localhost 变量。
用 web_server_install_dir/https-hostname/config/server.xml 中 LS 元素的端口属性值替换 web_server_port 变量。对于此示例,使用端口 38000。
此时将显示一个与您在验证应用程序部署中看到的页面相似的页面。
检查显示的会话和主机信息。例如:
Executed From Server: localhost
Server Port Number: 38000
Executed Server IP Address: 192.18.145.133
Session Created: Day Mon 05 14:55:34 PDT 2005
服务器端口号为 38000(Web Server 的端口)。负载平衡器已转发了群集中两个实例上的请求。
使用其他浏览器软件或其他计算机上的浏览器新建会话。来自同一个浏览器的请求具有“粘性”,将转至同一个实例。
这些会话应分布到群集中的两个实例。您可以通过查看位于以下位置的服务器访问日志文件对此进行检验:
Solaris Java Enterprise System 安装:
/var/opt/SUNWappserver/nodeagents/nodeagent_name /instance1/logs/access/server_access_log
/var/opt/SUNWappserver/nodeagents/nodeagent_name /instance2/logs/access/server_access_log
Linux Java Enterprise System 安装:
/var/opt/sun/appserver/nodeagents/ nodeagent_name/instance1/logs/access/server_access_log
/var/opt/sun/appserver/nodeagents/ nodeagent_name/instance2/logs/access/server_access_log
Windows Java Enterprise System 安装:
install-dir \nodeagents\nodeagent_name \instance1\logs\access\server_access_log
install-dir\nodeagents\nodeagent_name \instance1\logs\access\server_access_log
独立 Application Server 安装:
install-dir /nodeagents/nodeagent_name/instance1/logs/access/server_access_log
install-dir/nodeagents/nodeagent_name /instance2/logs/access/server_access_log
添加名称和值对 (Name=Name Value=Duke) 以存储到 HttpSession) 中。
单击“添加到会话数据”按钮。
检验是否已添加会话数据。
GlassFish v2 不提供 HADB。为了实现高可用性和故障转移,GlassFish 提供了内存中复制功能。以下过程对该功能进行了说明:
在部署应用程序之前,重新启动安装了负载平衡器插件的 Web 服务器。这可确保实例按照 loadbalancer.xml 文件中所设置的顺序为请求提供服务。如果您使用本章中提供的 loadbalancer.xml 文件,则 instance1 将为第一个请求提供服务。
您已经部署了用来存储会话数据的 clusterjsp Web 应用程序。您应当能够看到,为第一个请求提供服务的同一实例会为后续的请求提供服务,而且会话数据在这些请求之间得以保持。
发送少量请求,记下为这些请求提供服务的实例,然后关闭此特定的实例。使用以下命令停止实例:asadmin stop-instance --user adminuser --password adminpassword instance1
发送下一个请求,验证是否存储了新数据以及以前添加的数据是否仍保留在会话中。如果为请求提供服务的某个服务器不可用,则同一群集内的另一个服务器会接管该请求以及先前的所有会话数据并完成该请求。