Sun Java logo     上一页     

Sun logo
Sun Java System Application Server Enterprise Edition 8.1 2005Q1 

设置高可用性故障转移

如果使用上一章中设置的配置,则服务器实例出现故障时用户将丢失会话状态。本部分(两个高级主题中的第二个)提供了用于安装高可用性数据库 (HADB)、创建高可用性群集以及测试 HTTP 会话持久性的步骤。

Application Server 同时支持 HTTP 会话持久性和有状态会话 Bean 的持久性。本章中的过程适于 HTTP 会话持久性。

假定您在执行本章中的步骤之前已经执行了本快速入门指南前面部分中的步骤。这些步骤按照它们的完成顺序来介绍。


完成此部分中的任务可能需要其他硬件资源。



关于高可用性群集和 HADB

Sun Java System Application Server Enterprise Edition 中的高可用性群集将状态复制服务与先前创建的群集和负载平衡器集成在一起,以启用 HTTP 会话的故障转移。

HttpSession 对象和有状态会话 Bean 状态存储于 HADB(用于存储会话状态的高可用性数据库)中。这种可水平伸缩的状态管理服务可以独立于应用服务器层进行管理。它旨在通过使用负载平衡、故障转移和状态恢复等功能支持高达 99.999% 的服务和数据可用性。

Application Server 不承担状态管理职责,这有很大的优势。Application Server 实例在其生命周期内作为可伸缩和高性能的 Java™ 2 Platform, Enterprise Edition(J2EE™ 平台)容器运行,并将状态复制委托给外部高可用性状态服务。由于采用这种松散耦合的体系结构,因此可以轻松地向群集中添加应用服务器实例或从群集中删除应用服务器实例。HADB 状态复制服务可以单独伸缩,以获得最佳的可用性和性能。如果应用服务器实例同时还执行复制任务,J2EE 应用程序的性能将会降低,并会受到较长的垃圾收集暂停的限制。

因为每个 HADB 节点均需要 512 MB 的内存,所以必须有 1 GB 内存才能在同一台计算机上运行两个 HADB 节点。如果内存不足,请在不同的计算机上设置每个节点。建议部署时不要只在一台主机上运行双节点数据库,因为这种配置不具有容错能力。


HADB 预安装步骤

此过程涉及最常见的预安装任务。有关其他预安装主题(包括安装 HADB 的先决条件、配置网络冗余和文件系统支持)的信息,请参见 High Availability Administration Guide

  1. 获取超级用户权限。
  2. 定义与共享内存相关的变量。
  3. 对于 Solaris:

    1. /etc/system 文件中添加以下行(或者如果这些行已在文件中以注释的形式存在,请将其取消注释并确保其值如下):
    2. set shmsys:shminfo_shmmax=0x80000000

      set shmsys:shminfo_shmseg=20

      set semsys:seminfo_semmni=16

      set semsys:seminfo_semmns=128

      set semsys:seminfo_semmnu=1000

      shminfo_shmmax 设置为系统的内存总数(在十六进制记数法中,所显示的值 0x80000000 表示 2 GB 内存)。

      如果已定义 seminfo_* 变量,请按所示容量增加这些变量。

    3. 使用以下命令重新引导:
    4. sync; sync; reboot

      对于 Linux:

    5. /etc/sysctl.conf 文件中添加以下行(或者如果这些行已在文件中以注释的形式存在,请将其取消注释)。将其值设为计算机上的物理内存容量。请以十进制字节数指定该值。例如,对于具有 512 MB 物理内存的计算机:
    6. kernel.shmmax=536870912

      kernel.shmall=536870912

    7. 使用以下命令重新引导:
    8. sync; sync; reboot

  4. 如果在安装独立的 Application Server 时使用了现有的 JDK 软件,则 HADB 需要 Sun JDK 1.4.1_03 或更高版本(有关 JDK 版本的最新信息,请参见发行说明)。查看已安装的版本,并将 JAVA_HOME 环境变量设置为 JDK 的安装目录(如果尚未设置)。
  5. 如果需要,请在重新引导后重新启动域、Web Server 和节点代理。
  6. 要重新启动域,请使用命令 asadmin start-domain domain1

    要重新启动 Web Server,请使用命令 web_server_install_dir/https-hostname/start

    要重新启动节点代理,请使用命令 asadmin start-node-agent hostname。用运行 Application Server 的主机的名称替换变量 hostname


安装 HADB

此部分提供了安装高可用性数据库 (HADB) 的步骤。


如果要在安装了 Application Server 的计算机上运行高可用性数据库,并在安装 Application Server 时已经安装了 HADB,请跳至启动 HADB


如果您的计算机具有 2 GB 内存和 1 至 2 个 CPU,则可以在安装了 Application Server 系统的同一台计算机上安装 HADB 组件。如果不具备上述条件,则需要使用其他硬件。例如:

要安装 HADB,请执行以下步骤:

  1. 运行 Application Server 或 Java Enterprise System 安装程序。
  2. 在“组件选择”页面中,选择要安装的 HADB 组件选项。
  3. 在您的主机上完成安装。


启动 HADB

此部分介绍了通过运行 ma-initd 脚本启动 HADB 管理代理。对于生产部署,将管理代理作为服务启动可以确保其可用性。有关更多信息,请参见 High Availability Administration Guide

如果要启动在多台主机上都具有 HADB 节点的数据库,请在每台主机上均启动管理代理。

在 Java Enterprise System 安装中:

  1. 转至 etc/init.d 目录:
  2. cd /etc/init.d

  3. 运行以下命令启动代理:
  4. ./ma-initd start

在独立的 Application Server 安装中:

  1. 转至 Application Server 安装目录中的 HADB bin 目录:
  2. cd install_dir/hadb/4/bin

  3. 运行以下命令启动代理:
  4. ./ma-initd start


配置高可用性群集和应用程序

  1. 在运行域管理服务器的计算机上,使用以下命令将 FirstCluster 配置为使用 HADB:
  2. asadmin configure-ha-cluster --hosts hadb_hostname,hadb_hostname --devicesize 256 FirstCluster

    用要运行 HADB 的计算机的主机名替换 hadb_hostname 变量。如果只使用了一台计算机,则必须将其命名两次。

    此简化示例在同一台计算机上运行两个 HADB 节点。在生产设置中,请使用多台计算机。


    要减少 HADB 的内存使用量(用于演示),请执行以下 hadbm 命令。系统将提示您输入管理密码。

      在 Java Enterprise System 安装中:

      /opt/SUNWhadb/4/bin/hadbm set DataBufferPoolSize=64,LogBufferSize=25 FirstCluster

      在独立的 Application Server 安装中:

      install_dir/hadb/4/bin/hadbm set DataBufferPoolSize=64,LogBufferSize=25 FirstCluster


  3. 通过启用高可用性来配置用于 HTTP 会话持久性的 clusterjsp 应用程序:
    1. 在管理控制台中,展开“应用程序”节点。
    2. 展开“企业应用程序”。
    3. 单击 "clusterjsp"。
    4. 在右侧窗格中的“常规”选项卡上,单击“启用可用性”复选框。
    5. 单击“保存”。
    6. 默认情况下,将在服务器实例和容器级别上启用可用性。


重新启动群集

要重新启动群集,请执行以下步骤:

  1. 在管理控制台中,展开“群集”节点。
  2. 单击 "FirstCluster"。
  3. 在右侧窗格中,单击“停止实例”。
  4. 当实例都停止后,单击“启动实例”。


验证 HTTP 会话故障转移

测试会话数据故障转移的步骤与检验负载平衡主题中所述的测试负载平衡的步骤类似。不同的是前者在出现故障之后保存会话数据。故障转移对用户来说是透明的,因为样例应用程序配置为在出现故障后自动重试。

  1. 要显示 clusterjsp 应用程序的首页,请在浏览器中键入以下 URL:
  2. http://localhost:web_server_port/clusterjsp

    用运行 Web Server 的系统的名称替换 localhost 变量。

    web_server_install_dir/https-hostname/config/server.xml 中的 LS 元素的端口属性值替换 web_server_port 变量。对于此示例,使用端口 38000。

    所显示的页面与您在检验群集的应用程序部分中看到的页面类似。

  3. 检查显示的会话和主机信息。例如:
    • Executed From Server: localhost
    • Server Port Number: 38000
    • Executed Server IP Address: 192.18.145.133
    • Session ID: 41880f618e4593e14fb5d0ac434b1
    • Session Created: Wed Feb 23 15:23:18 PST 2005
    • 查看服务器访问日志文件以确定哪个应用服务器实例正在为应用程序服务。日志文件位于以下位置:

    • Solaris Java Enterprise System 安装:
      /var/opt/SUNWappserver/nodeagents/nodeagent_name/i1/logs/access/server_access_log
      /var/opt/SUNWappserver/nodeagents/nodeagent_name/i2/logs/access/server_access_log
    • Linux Java Enterprise System 安装:
      /var/opt/sun/appserver/nodeagents/nodeagent_name/i1/logs/access/server_access_log
      /var/opt/sun/appserver/nodeagents/nodeagent_name/i2/logs/access/server_access_log
    • 独立的 Application Server 安装:
      install_dir/nodeagents/nodeagent_name/i1/logs/access/server_access_log
      install_dir/nodeagents/nodeagent_name/i2/logs/access/server_access_log
  4. 停止正在为页面服务的 Application Server 实例。
    1. 在管理控制台的左侧窗格中,展开“群集”。
    2. 单击 "FirstCluster"。
    3. 在右侧窗格中,单击“实例”选项卡。
    4. 单击处理请求的服务器实例旁边的复选框,然后单击“停止”按钮。
  5. 重新装入 clusterjsp 样例应用程序页面。
  6. 会话 ID 和会话属性数据被保留。

  7. 查看另一个 Application Server 实例的访问日志,并注意该实例是否在处理请求。

由于 HTTP 会话被持久地存储在 HADB 中,因此状态故障转移功能会正常执行。除了 HTTP 会话状态,Application Server 还可以在 HADB 中存储 EJB™ 企业 Bean 的状态。


清除

要进行清除,您可以通过完成选项 1:卸载安装中的步骤卸载 Application Server 安装,也可以通过完成选项 2:删除样例群集中的步骤只删除您刚创建的样例群集。

选项 1:卸载安装

要完全卸载,请执行以下步骤:

  1. 使用以下命令停止 Application Server 进程:
  2. asadmin stop-cluster FirstCluster

    asadmin remove-ha-cluster --hosts hadb_hostname,hadb_hostname FirstCluster

    用要运行 HADB 的计算机的主机名替换 hadb_hostname 变量。如果只使用了一台计算机,则必须将其命名两次。

    asadmin stop-node-agent hostname

    asadmin stop-domain domain1

  3. 通过以下方法之一停止 HADB 管理代理:
  4. 在 Java Enterprise System 安装中:

    1. 转至 /etc/init.d 目录:
    2. cd /etc/init.d

    3. 运行以下命令停止代理:
    4. ./ma-initd stop

      在独立的 Application Server 安装中:

    5. 转至 Application Server 安装目录中的 HADB bin 目录:
    6. cd install_dir/hadb/4/bin

    7. 运行以下命令停止代理:
    8. ./ma-initd stop

      此时,将停止与 Sun Java System Application Server 相关的所有进程。

  5. 卸载 Application Server。
  6. 在 Java Enterprise System 安装过程中,先运行 var/sadm/prod/entsys/uninstall,然后按照卸载向导中的步骤进行操作。

    在独立的 Application Server 安装中,先运行 install_dir/uninstall,然后按照卸载向导中的步骤进行操作。

  7. 如果在此选项中新建了 Web Server 实例,请将其删除:
    1. 登录到 Web Server 的管理控制台。
    2. 停止该实例。
    3. 删除该实例。
  8. 要卸载 Web Server 产品,请从 web_server_install_dir 运行卸载程序。

选项 2:删除样例群集

要仅删除在此选项中使用的 FirstCluster(高可用性样例群集)和样例应用程序,请执行以下步骤:

  1. 停止 Application Server 进程并清除配置:
  2. asadmin stop-cluster FirstCluster

    asadmin remove-ha-cluster --hosts hadb_hostname,hadb_hostname FirstCluster

    用要运行 HADB 的计算机的主机名替换 hadb_hostname 变量。如果只使用了一台计算机,则必须将其命名两次。

    asadmin disable-http-lb-server FirstCluster

    asadmin delete-http-lb-ref --config MyLbConfig FirstCluster

    asadmin delete-http-lb-config MyLbConfig

    asadmin delete-instance i1

    asadmin delete-instance i2

    asadmin delete-cluster FirstCluster

    asadmin undeploy clusterjsp

  3. 停止用作负载平衡器的 Web Server 实例:
  4. web_server_install_dir/https-hostname/stop

  5. web_server_install_dir/https-hostname/config 中的 loadbalancer.xml 文件重命名为 loadbalancer.xml.sav
  6. 通过以下方法之一停止 HADB 管理代理:
  7. 在 Java Enterprise System 安装中:

    1. 转至 /etc/init.d 目录:
    2. cd /etc/init.d

    3. 运行以下命令停止代理:
    4. ./ma-initd stop

      在独立的 Application Server 安装中:

    5. 转至 Application Server 安装目录中的 HADB bin 目录:
    6. cd install_dir/hadb/4/bin

    7. 运行以下命令停止代理:
    8. ./ma-initd stop

在此部分中,您安装、配置和启动了 HADB,而且还配置了群集和应用程序使其具有高可用性。您还执行了清除操作,从而使您的系统能够执行其他工作。

祝贺您!您现在已经完成了 Application Server 的快速入门。


其他资源

下面是一些用于了解和使用 Application Server 的其他资源:



上一页     


文件号码 819-1256.   版权所有 2004-2005 Sun Microsystems, Inc. 保留所有权利。