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

概述

利用 RMI-IIOP 负载平衡,IIOP 客户机请求可分布到不同的服务器实例或名称服务器。目标是将负载平均分布在群集中,从而提供可伸缩性。与 EJB 群集和可用性结合的 IIOP 负载平衡还可提供 EJB 故障转移。

客户机执行某个对象的 JNDI 查找时,命名服务会创建一个与特定服务器实例关联的 InitialContext (IC) 对象。从此时起,使用该 IC 对象进行的所有查找请求都会发送给相同的服务器实例。使用该 InitialContext 查找的所有 EJBHome 对象都托管在相同的目标服务器上。此后获得的所有 Bean 引用也创建在相同的目标主机上。这就有效地提供了负载平衡,原因是所有客户机都在创建 InitialContext 对象时随机使用动态目标服务器的列表。如果目标服务器实例发生故障,查找或 EJB 方法调用会将故障转移到另一个服务器实例。

IIOP 负载平衡和故障转移将透明地发生。在应用程序部署过程中无需特殊的步骤。但是,向群集添加或删除新实例将不会更新该群集的现有客户机视图。为此,必须在客户机端手动更新端点列表。

要求

Sun Java System Application Server Enterprise Edition 通过 RMI-IIOP 提供远程 EJB 引用和 NameService 对象的高可用性,前提是满足以下所有条件:

对于访问 Application Server 上部署的 EJB 组件的以下 RMI-IIOP 客户机,Application Server 支持其负载平衡。


注 –

Application Server 不支持通过安全套接字层 (Secure Socket Layer, SSL) 进行 RMI-IIOP 负载平衡和故障转移。


算法

Application Server 使用随机算法和 round robin 算法进行 RMI-IIOP 负载平衡和故障转移。

在 RMI-IIOP 客户机首次创建新的 InitialContext 对象时,可用的 Application Server IIOP 端点的列表对于该客户机是随机的。对于该 InitialContext 对象,负载平衡器会将查找请求和其他 InitialContext 操作定向至随机列表中的第一个端点。如果第一个端点不可用,则使用列表中的第二个端点,依此类推。

随后每次客户机创建新的 InitialContext 对象时,将轮转端点列表,从而将不同的 IIOP 端点用于 InitialContext 操作。

当您从通过 InitialContext 对象获得的引用中获取或创建 Bean 时,将在服务于指定给 InitialContext 对象的 IIOP 端点的 Application Server 实例上创建这些 Bean。对这些 Bean 的引用包括群集中的所有 Application Server 实例的 IIOP 端点地址。

主端点是与用于查找或创建 Bean 的 InitialContext 端点对应的 Bean 端点。群集中的其他 IIOP 端点将被指定为备用端点。如果 Bean 的主端点不可用,则该 Bean 上的其他请求将故障转移到其中一个备用端点。

可以配置 RMI-IIOP 负载平衡和故障转移,以使用 ACC 中运行的应用程序和独立 Java 客户机。

样例应用程序

以下目录包含用于演示通过和不通过 ACC 使用 RMI-IIOP 故障转移的样例应用程序。

install_dir/samples/ee-samples/sfsbfailover

有关使用和不使用 ACC 运行应用程序的说明,请参见本样例随附的 index.html 文件。ee-samples 目录还包含有关设置运行样例的环境的信息。