Sun Java System Application Server 9.1 高可用性管理指南

概述

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

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

IIOP 负载平衡和故障转移将透明地发生。在应用程序部署过程中无需特殊的步骤。Application Server 的 IIOP 负载平衡和故障转移支持动态重新配置的群集。如果在其上部署应用程序客户机的 Application Server 实例参与群集,则 Application Server 将自动查找群集中当前处于活动状态的所有 IIOP 端点。因此,如果将新实例添加到群集或将其从群集中删除,则无需手动更新端点列表。但是,客户机至少应指定两个端点以用于引导目的,防止其中一个端点出现故障。

要求

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

Application Server 支持对在应用程序客户机容器 (Application Client Container, ACC) 中执行的 Java 应用程序进行负载平衡。请参见设置 RMI-IIOP 负载平衡和故障转移


注 –

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 中运行的应用程序。