intra-mart Accel Platform サービス仕様書 第3版 2016-08-01

分散環境の構築

ここでは、 intra-mart Accel Platform で分散環境が構築される際の各サーバ間の動作について説明します。

分散環境の設定

分散環境を構成するサーバの設定はサーバ間の通信に TCP を利用する方法と UDP を利用する方法の2つの設定が利用できます。
標準では TCP が指定されています。 UDP を指定した場合、通信の信頼性は低下しますがサーバ間通信を高速に行うことができます。
分散環境を構成するサーバの設定は以下の設定ファイルに指定します。
  • conf/network-agent-config.xml

サーバ間通信に TCP を利用した分散環境の設定

TCP を利用した場合、「tcp/initial-hosts」に分散環境を構成するサーバを指定します。
<TCP>
  <initial-hosts>
    <host address="192.168.0.1" />
    <host address="192.168.0.2" />
    <host address="192.168.0.3" />
  </initial-hosts>
</TCP>
intra-mart Accel Platform 起動時に、上記の設定ファイルに設定されているサーバと通信を行い、分散環境が構築されます。
「initial-hosts」に指定されていないサーバで intra-mart Accel Platform が起動した場合も、「initial-hosts」に指定されているサーバへ通信を行い分散環境に参加することが可能です。
そのため、後からサーバを追加する場合に、設定ファイルの内容を変更する必要はありません。

コラム

サーバの追加とは
サーバの追加は、 intra-mart Accel Platform を起動する Web Application Server のクラスタメンバーを追加することを想定しています。
サーバを追加した場合、 Web Application Server の機能によって、既に起動済みの intra-mart Accel Platform が配置されるため設定ファイルの変更やWARの作成等の作業を行う必要はありません。

詳しくは、各 Web Application Server 製品の仕様をご確認ください。

コラム

分散環境を構成するサーバのグループは<network-agent-config.xml>の「id」毎に管理されます。
1つのサーバ上で複数の intra-mart Accel Platform を起動させる場合は、<network-agent-config.xml>の「id」にそれぞれ異なるIDを設定することで別の環境として運用することができます。

サーバ間通信に UDP を利用した分散環境の設定

UDP を利用した場合、「UDP」にマルチキャストアドレス、ポートを指定します。
<UDP>
  <mcast-address>228.10.10.10</mcast-address>
  <mcast-port>45588</mcast-port>
  <initial-members>2</initial-members>
</UDP>
intra-mart Accel Platform 起動時に、上記の設定ファイルに設定されているアドレスでマルチキャストを使用し、分散環境が構築されます。
「initial-members」は起動時に既にクラスタグループが存在するか確認する際に利用されます。起動時にはPING要求をマルチキャストし、「initial-members」に指定した台数のサーバから応答があれば、応答があったサーバのクラスタグループに参加します。誰も応答しない場合は、グループの最初のメンバーとみなされます。

UDP では通常 TCPとくらべて通信の信頼性は高くありませんが、 UDP を利用してクラスタグループを構築した場合でもシステム内で確認応答 順序制御、再送制御を行い通信内容の到達を保証しています。(ただし、ネットワーク障害等で再送を行っても到達を保証できない場合もあります。)

サーバ間通信で利用するスレッド数の設定

クラスタグループを構成するサーバ台数が多い場合には、サーバ間通信で利用されるスレッドの最大数を指定します。
<network-agent-config>

  <max-threads>10</max-threads>
  <max-oob-threads>10</max-oob-threads>

</network-agent-config>
  • max-threads

    サーバ間通信を行うスレッドの最大スレッド数
  • max-oob-threads

    通信内容の到達確認や再送を行うスレッドの最大スレッド数
max-threads および max-oob-threads にはそれぞれ、クラスタグループを構成するサーバ台数の2倍を目安に設定を行ってください。 ただし、最大スレッド数を増やした場合、起動時に必要となるメモリも増えるので注意してください。
サーバ間通信はバックエンドでスレッドを生成して行われます。クラスタグループを構成するサーバ台数が多くなるとスレッド数が不足しサーバ間の通信が行えない場合があります。

サーバ間の通信が正常に行えない場合、以下のような事象が発生する可能性があります。
  • クラスタグループに参加するサーバが他のサーバから認識されない。
  • サービスが正常に起動しない。
  • 単一のサーバで起動するはずのサービスが複数のサーバで起動してしまう。

サーバ間の通信

分散環境を構成する各サーバはバックエンドで以下のような通信を行います。
  1. intra-mart Accel Platform を起動すると<network-agent-config.xml>の「initial-hosts」に指定されたサーバへ通信を行います。

    ../../_images/clustering_1_1.png

  2. 新しいサーバからの通信を受けたサーバは分散環境を構成する各サーバへ新しいサーバが追加されることを通知します。

    ../../_images/clustering_1_2.png

  3. 通知を受けた各サーバは相互にそれぞれのサーバ情報の交換を行い分散環境を構築します。

    ../../_images/clustering_1_3.png
    分散環境が再構築されると、各サーバ上で新しいサーバの追加を検知した時の処理( サービスの選出と起動・停止 )が実行されます。

  4. intra-mart Accel Platform 起動中は、分散環境を構築した各サーバ間で3秒毎に生存確認を行います。

    ../../_images/clustering_1_4.png

  5. 生存確認の応答がない場合(サーバが停止した場合等)は、分散環境を構成する全てのサーバへ通知します。

    ../../_images/clustering_1_5.png

  6. 通知を受けた各サーバは応答がなくなったサーバへ再度、生存確認を行います。

    ../../_images/clustering_1_6.png

  7. 応答がなければ、残ったサーバで分散環境を再構築します。

    ../../_images/clustering_1_7.png
    分散環境が再構築されると、各サーバ上でサーバの停止を検知した時の処理( サービスの選出と起動・停止 )が実行されます。