3.2.6. クラスタリングの変更

3.2.6.1. クラスタリングに対するアプリケーションの変更

手順3.22

  1. クラスタリグが有効な状態で JBoss Enterprise Application Platform 6 を起動する

    JBoss Enterprise Application Platform 5.x でクラスタリングを有効にするには、次のように all プロファイル (またはその派生プロファイル) を使用してサーバーインスタンスを起動する必要がありました。
    $ EAP5_HOME/bin/run.sh -c all
    JBoss Enterprise Application Platform 6 でクラスタリングを有効にする方法は、サーバーがスタンドアロンであるか管理ドメインで実行されているかによって異なります。
    1. 管理ドメインで実行されているサーバーに対してクラスタリングを有効にする

      ドメインコントローラーを使用して起動したサーバーに対してクラスタリングを有効にするには、domain.xml を更新し、ha プロファイルと ha-sockets ソケットバインディンググループを使用するサーバーグループを指定します。例は次の通りです。
      <server-groups>
        <server-group name="main-server-group" profile="ha">
          <jvm name="default">
            <heap size="64m" max-size="512m"/>
          </jvm>
          <socket-binding-group ref="ha-sockets"/>
        </server-group>
      </server-group>
    2. スタンドアロンサーバーに対してクラスタリングを有効にする

      スタンドアロンサーバーに対してクラスタリングを有効にするには、次のように適切な設定ファイルを使用してサーバーを起動します。 $ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml
  2. バインドアドレスの指定

    JBoss Enterprise Application Platform 5.x では、通常 $ EAP_HOME/bin/run.sh -c all -b 192.168.0.2 のように -b コマンドライン引数を用いてクラスタリングに使用するバインドアドレスを指定しました。
    JBoss Enterprise Application Platform 6 では、JBoss Enterprise Application Platform 6 の設定ファイル内の関連するソケットバインディングによってバインドアドレスが明示的に定義されます。ドメインコントローラーを用いて起動したサーバーの場合、バインドアドレスは domain/configuration/host.xml ファイル内で指定されます。スタンドアロンサーバーの場合、バインドアドレスは standalone-ha.xml ファイル内で指定されます。
    <interfaces>
          <interface name="management">
    	  <inet-address value="192.168.0.2"/>
          </interface>
          <interface name="public">
    	  <inet-address value="192.168.0.2"/>
    	</interface>
      </interfaces>
    <socket-binding-groups>
          <socket-binding-group name="ha-sockets" default-interface="public">
    	  <!-- ... -->
          </socket-binding-group>
      </socket-binding-groups>
    上記の例では、ha-sockets ソケットバインディンググループ内のすべてのソケットに対するデフォルトインターフェースに public インターフェースが指定されています。
  3. マルチキャストアドレスおよびポートの指定

    JBoss Enterprise Application Platform 5.x では、次のようにコマンドライン引数 -u を使用してクラスター内の通信に使用されるマルチキャストアドレスを指定することができました。 同様に、引数 -m を使用してクラスター内の通信に使用されるポートを指定することができました。 $ EAP_HOME/bin/run.sh -c all -u 228.11.11.11 -m 45688
    JBoss Enterprise Application Platform 6 では、クラスター間の通信に使用されるマルチキャストアドレスとポートは、関連する JGroups プロトコルスタックによって参照されるソケットバインディングによって次のように定義されます。
    <subsystem xmlns="urn:jboss:domain:jgroups:1.0" default-stack="udp">
        <stack name="udp">
            <transport type="UDP" socket-binding="jgroups-udp"/>
            <!-- ... -->
        </stack>
    </subsystem>
    <socket-binding-groups>
        <socket-binding-group name="ha-sockets" default-interface="public">
            <!-- ... -->
            <socket-binding name="jgroups-udp" port="55200" multicast-address="228.11.11.11" multicast-port="45688"/>
            <!-- ... -->
        </socket-binding-group>
    </socket-binding-groups>
    
    コマンドラインでマルチキャストアドレスとポートを指定したい場合、マルチキャストアドレスとポートをシステムプロパティーとして定義した後、サーバー起動時にこれらのプロパティーをコマンドライン上で使用します。次の例では、 jboss.mcast.addr はマルチキャストアドレスの変数名、 jboss.mcast.port はポートの変数名になります。
    <socket-binding name="jgroups-udp" port="55200"
     multicast-address="${jboss.mcast.addr:230.0.0.4}" multicast-port="${jboss.mcast.port:45688}"/>
    
    その後、次のコマンドライン引数を使用してサーバーを起動できます。 $ EAP_HOME/bin/domain.sh -Djboss.mcast.addr=228.11.11.11 -Djboss.mcast.port=45688
  4. 代替のプロトコルスタックの使用

    JBoss Enterprise Application Platform 5.x では、jboss.default.jgroups.stack システムプロパティーを使用してすべてのクラスタリングサービスに使用されるデフォルトのプロトコルスタックを操作することができました。 $ EAP_HOME/bin/run.sh -c all -Djboss.default.jgroups.stack=tcp
    JBoss Enterprise Application Platform 6 では、domain.xml または standalone-ha.xml 内の JGroups サブシステムによってデフォルトのプロトコルスタックが定義されます。
    <subsystem xmlns="urn:jboss:domain:jgroups:1.0" default-stack="udp">
        <stack name="udp">
            <!-- ... -->
        </stack>
    </subsystem>