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

1つのサーバで起動するサービスの選出

ここでは1つのサーバで起動するサービスの選出方法について説明します。

1つのサーバで起動するサービスには、以下のサービスが該当します。
  • ServerManager
これらのサービスは基本的には複数のサーバ上で同時に起動することはありません。
(ただし、何らかの障害が発生した場合等、 intra-mart Accel Platform が正常に動作していない場合はこの限りではありません。)

標準設定での選出方法

サービスの選出方法を特に指定せずに、 標準のまま intra-mart Accel Platform を起動した場合、サービスを起動するサーバは動的に選出されます。
標準設定での選出は以下のルールで行われます。
  1. サーバ上で別のサービスが起動していないサーバ(負荷の軽いサーバ)を優先して選出します。
  2. サーバ( intra-mart Accel Platform )の起動時刻が早いサーバを優先して選出します。
標準設定の状態で分散環境を構築するサーバが追加された場合、以下のようにサービスが選出されます。
../../_images/single_service_1_1.png
  1. APServer1で intra-mart Accel Platform を起動します。
  2. この時点ではスタンドアロンで起動した状態なので、APServer1 上で全てのサービスが起動します。
  3. APServer2、APServer3で intra-mart Accel Platform を起動します。
  4. サーバ間で通信が行われ、分散環境を構築します。
    • APServer1 が APServer2、APServer3 を検知します。
    • APServer2 が APServer1、APServer3 を検知します。
    • APServer3 が APServer1、APServer2 を検知します。
  5. ServerManagerの選出が行われます。
    • 先に起動した APServer1 が選出されます。
    • APServer2、APServer3 は選出されなかったので処理は終了します。
  6. APServer1 でServerManagerの開始処理が実行され、他のサービス(TaskService等)の選出が行われます。

サービスが起動するサーバを指定する方法

特定のサーバでサービスを起動させたい場合は <service-selecter-config.xml>の「assign-hosts」にサービスを起動するサーバを指定します。
「assign-hosts」に指定されたサーバで intra-mart Accel Platform が起動している場合、そのサーバにサービスが割り当てられます。
<service service-id="server.service.controller">
  <assign-hosts>
    <host>192.168.0.2</host>
  </assign-hosts>
</service>

コラム

指定したサーバが起動していない場合、動的にサービスを割り当てるサーバが選出されます。
上記のように<assign-hosts>を設定した場合、以下のようにサービスが選出されます。
../../_images/single_service_1_2.png
  1. APServer1で intra-mart Accel Platform を起動します。
  2. 「assign-hosts」に指定されたサーバが起動していないので、APServer1 上で全てのサービスが起動します。
  3. APServer2、APServer3で intra-mart Accel Platform を起動します。
  4. サーバ間で通信が行われ、分散環境を構築します。
    • APServer1 が APServer2、APServer3 を検知します。
    • APServer2 が APServer1、APServer3 を検知します。
    • APServer3 が APServer1、APServer2 を検知します。
  5. ServerManagerの選出が行われます。
    • 「assign-hosts」に指定されている APServer2 が選出されます。
    • APServer1 は選出されなかったので、既に起動しているServerManagerを停止します。
    • APServer3 は選出されなかったので処理は終了します。
  6. APServer2 でServerManagerの開始処理が実行され、他のサービス(TaskService等)の選出が行われます。

サービスを起動させないサーバを指定する方法

特定のサーバでサービスを起動させたくない場合は <service-selecter-config.xml>の「invalid-hosts」にサービスを起動させないサーバを指定します。
「invalid-hosts」に指定されたサーバのみで intra-mart Accel Platform が起動している場合、そのサービスは開始されません。
<service service-id="server.service.controller">
  <invalid-hosts>
    <host>192.168.0.1</host>
  </invalid-hosts>
</service>

注意

ServerManagerが開始されない場合、その他のサービスの選出・開始が行われなくなりますので注意してください。
上記のように<invalid-hosts>を設定した場合、以下のようにサービスが選出されます。
../../_images/single_service_1_3.png
  1. APServer1で intra-mart Accel Platform を起動します。
  2. APServer1がServerManagerの「invalid-hosts」に指定されているため、サービスは起動しません。
  3. APServer2、APServer3で intra-mart Accel Platform を起動します。
  4. サーバ間で通信が行われ、分散環境を構築します。
    • APServer1 が APServer2、APServer3 を検知します。
    • APServer2 が APServer1、APServer3 を検知します。
    • APServer3 が APServer1、APServer2 を検知します。
  5. ServerManagerの選出が行われます。
    • 「invalid-hosts」に指定されていない APServer2 が選出されます。
      (APServer3 が先に起動していた場合は、APServer3 が選出されます。)
    • APServer1、APServer3 は選出されなかったので処理は終了します。

  6. APServer2 でServerManagerの開始処理が実行され、他のサービス(TaskService等)の選出が行われます。

割り当てを行うサーバの範囲指定

「assign-hosts」や「invalid-hosts」に複数のサーバを一括で指定する場合には、以下のように指定することができます。
  • セグメント単位の指定

    指定したセグメント内の全てのアドレスを指定する場合に利用します。
    192.168.0.*
  • レンジ指定

    対象とするサーバアドレスの範囲を指定する場合に利用します。
    192.168.0.[1-100]

コラム

範囲指定を行った場合、指定した範囲に含まれるサーバの内、先に起動したサーバから順に選出されます。
「assign-hosts」に指定したサーバ以外のサーバでサービスを起動させたくない場合は、以下のように設定します。
<service service-id="server.service.queue.management">
  <assign-hosts>
    <host>192.168.0.1</host>
  </assign-hosts>
  <invalid-hosts>
    <host>*</host>
  </invalid-hosts>
</service>
上記の設定を行うと、「assign-hosts」に指定された”192.168.0.1”のサーバ以外の全てのサーバが「invalid-hosts」に該当するようになります。
そのため、”192.168.0.1”のサーバ上でのみ、サービスが起動するようになります。