Sun Java logo     上一个      目录      索引      下一个     

Sun logo
Sun Java System Application Server 企业版 7 2004Q2 入门指南 

第 2 章
群集方案

本章包括以下数节:


HTTP 群集方案

下面的图表显示了一个简单的群集方案,该方案由一个带有负载平衡器插件的 Web 服务器、两个 Sun Java System Application Server 实例(配置为使用 HADB 来存储 HTTP 会话数据)和一个用于存储应用程序数据的远程数据库管理系统 (RDBMS) 组成。请注意,您的实际操作部署可以有所不同。例如,您可以使用第三方的负载平衡器代替负载平衡器插件。

图 2-1 群集方案实例

群集实例

下面的步骤介绍了处理 HTTP 请求的过程:

  1. 连接的客户机将一个 HTTP 请求发送到某个由 Web 服务器负责处理的 URL,该 Web 服务器已配置为使用负载平衡器插件处理传入的 HTTP 请求。
  2. 负载平衡器插件随后将请求转发到群集中的 Sun Java System Application Server 实例之一。插件使用粘性 round-robin(共享)负载平衡来确定目标实例。
  3. 目标实例接收到转发自负载平衡器插件的请求后,开始一个 HTTP 会话,将 HTTP 会话数据和 J2EE 应用程序数据分别存储到 HADB 和 RDBMS。当客户机继续通过应用程序运行时,将更新 HTTP 会话数据并将其存储到 HADB;同时,RDBMS 中的应用程序数据也会更新。
  4. 如果由于系统崩溃而导致实例失败,负载平衡器将检测实例是否已经停止对请求的响应。后续请求到来时,负载平衡器会将这些请求转发到群集中运行正常的实例。
  5. 新的目标实例将检索来自 HADB 的故障转移 HTTP 会话信息,然后继续响应客户机的请求,使客户机能够完成 HTTP 会话,而不会丢失会话数据。

有关 Sun Java System Application Server 部署方案的详细信息,请参见 Sun Java System Application Server System Deployment Guide


RMI/IIOP 群集方案

Sun Java System Application Server 通过在 RMI/IIOP 路径上使用负载平衡和故障切换机制,提供了具有高可用性的 J2EE 应用程序。

要配置具有高可用性的 J2EE 应用程序,需要在 IIOP 群集中配置 Application Server 实例,且该 IIOP 群集应具有用于处理 RMI-IIOP 请求的 IIOP 侦听程序。这些 IIOP 侦听程序也称作 IIOP 端点,它们将成为 IIOP 群集的一部分。

以下两部分介绍了在 RMI/IIOP 路径上启用 J2EE 应用程序的负载平衡(客户端配置)和高可用性(服务器端配置)所需进行的配置。

服务器端配置

要启用 IIOP 请求的故障切换,应当配置 IIOP 端点,以组成 Sun Java System Application Server 中的 IIOP 群集。IIOP 端点可以使用管理控制台或命令行界面来定义。

首先定义群集中所有非 SSL 端点,RMI/IIOP 请求可以故障转移到该群集。availability-service 元素下的 iiop-cluster 特性定义了 IIOP 端点。然后确保设置了 availability-enabled=true,以启用故障切换。

下面的示例显示了 server.xml 文件中的 IIOP 群集配置特性。

<availability-service availability-enabled="true">

<iiop-cluster>

<iiop-server-instance name=server1>

<iiop-endpoint id=s1_ep1 host=trident port=3700 />

<iiop-endpoint id=s1_ep2 host=trident port=3800 />

<iiop-endpoint id=s1_ep3 host=trident port=3900 />

</iiop-server-instance>

<iiop-server-instance name=server2>

<iiop-endpoint id=s2_ep1 host=jupiter port=4700 </>

<iiop-endpoint id=s2_ep2 host=jupiter port=4800 />

<iiop-endpoint id=s2_ep3 host=jupiter port=4900 />

</iiop-server-instance>

</iiop-cluster>

</availability-service>

客户端配置

要启用 RMI/IIOP 请求的负载平衡,需要配置客户机应用程序。系统支持以下两种类型的 RMI/IIOP 客户机的负载平衡:

独立的客户机

要在独立的客户机中启用负载平衡功能,必须在 JNDI 环境特性或系统特性中定义以下特性。

  1. 设置以下 JVM 特性以配置 ORB。
  2. com.sun.CORBA.connection.ORBSocketFactoryClass=com.sun.enterprise.iiop.EEIIOPSocketFactory
    org.omg.PortableInterceptor.ORBInitializerClass.com.sun.enterprise.iiop.EEORBInitializer

  3. 将类路径设置为 appserv-rt.jarappserv-rt-ee.jar。这些 jar 文件位于 install_dir/lib 目录中。
  4. 在实例化 InitialContext 之前,使用 S1ASCtxFactory 类的以下特性:
  5. Properties env = new Properties();

    env.put(“java.naming.factory.initial”, “com.sun.appserv.naming.S1ASCtxFactory”);

    env.put(“com.sun.appserv.iiop.endpoints”.“trident:3600, exodus:3700”);

    env.put(“com.sun.iiop.loadbalancingpolicy”, “ic-based”);

    //create an initial naming context
    Context initial = new InitialContext(env);

此客户机代码通过调用新的 InitialContext(env)(其中的 env 是 JNDI SPI 特性的列表),对 JNDI InitialContext 对象进行了实例化。

ACC 客户机

要在 ACC 客户机中启用负载平衡和故障切换功能,必须在 sun-acc.xml 中定义以下特性。

sun-acc.xml 文件中定义负载平衡特性,以启用具有高可用性的 ACC 客户机。这些特性在 sun-acc.xml 文件中被定义为特性元素。

例如:

<client-container>

  <target-server name="qasol-e1" address="qasol-e1" port="3700">

  <property name="com.sun.appserv.iiop.loadbalancingpolicy" value="ic-based" />

<property name="com.sun.appserv.iiop.endpoints" value="qasol-e1:3700,jupiter:3800"/>

</client-container>



上一个      目录      索引      下一个     


版权所有 2004 Sun Microsystems, Inc. 保留所有权利。