メンバーシップ・サービスとしてのApache ZooKeeperの構成

各Apache ZooKeeperサーバーをグリッドのメンバーシップ・サーバーとして機能するように構成するには、メンバーシップ・サーバーをホストする各ホストでzoo.cfgおよびmyid構成ファイルを構成する必要があります。

  • zoo.cfg構成ファイル: レプリケート・モードでは、各メンバーシップ・サーバーにzoo.cfg構成ファイルがあります。zoo.cfg構成ファイルは、メンバーシップ・サービスに関与するすべてのメンバーシップ・サーバーを識別子、各メンバーシップ・サーバーはDNS名(またはIPアドレス)およびポート番号で識別されます。

    各メンバーシップ・サーバー上のzoo.cfg内のすべての構成パラメータは、クライアント・ポートを除きまったく同じである必要があります。クライアント・ポートは、メンバーシップ・サーバーごとに異なる場合があります(異なることは必須ではありません)。各メンバーシップ・サーバーが別々のホストで実行されている場合は、クライアント・ポートを同じにすることができます。

    zoo.cfgファイルをApache ZooKeeperインストールの/confディレクトリに配置します。たとえば、apache-zookeeper-3.8.4-bin.tar.gzファイルを各メンバーシップ・サーバー上の/grid/membershipディレクトリに解凍した場合、zoo.cfgファイルは次のようにディレクトリに配置されます:

    /grid/membership/apache-zookeeper-3.8.4-bin/conf/zoo.cfg
  • myid構成ファイル: この特定のメンバーシップ・サーバーを識別する番号を提供します。各メンバーシップ・サーバーは一意の番号で識別されます。たとえば、5つのサーバーがある場合は、一意の整数123 4および5ので識別される必要があります。

    この番号は、server.xパラメータのxによるzoo.cfgファイル内のホストの定義に対応します。すべてのzoo.cfgファイルには、すべてのメンバーシップ・サーバーのリストが必要です。たとえば、5つのメンバーシップ・サーバーがある場合は、zoo.cfgファイルにserver.1server.2のように構成されます。

    各ホストのmyid構成ファイルには、そのサーバーの整数を含む1つの行があります。たとえば、2番目のメンバーシップ・サーバーはserver.2としてzoo.cfgで識別され、そのmyid構成ファイルには2を含む1行があります。

    myid構成ファイルは、メンバーシップ・サーバーのApache ZooKeeperデータ・ディレクトリ内のテキスト・ファイルです。データ・ディレクトリの場所は、zoo.cfgファイルでdataDirパラメータで構成されています。たとえば、データ・ディレクトリを/grid/membership/apache-zookeeper-3.8.4-bin/dataとして構成した場合、myidテキスト構成ファイルは次のように配置されます:

    /grid/membership/apache-zookeeper-3.8.4-bin/data/myid

表3-1は、zoo.cfgファイルでよく使用される構成パラメータを示しています。

表3-1 zoo.cfg構成パラメータ

パラメータ 説明

tickTime

initLimitsyncLimitの両方のパラメータで各ティックに使用される時間の単位(ミリ秒単位)。最適なパフォーマンスを得るには、これを推奨設定の250ミリ秒に設定してください。このパラメータは、レプリケート・モードでメンバーシップ・サーバーを実行するために必要です。

initLimit

メンバーシップ・サーバーをリーダーに接続する必要がある期間のタイムアウト(ティック)。最適なパフォーマンスを得るには、これを推奨設定の40ティックに設定してください。このパラメータは、レプリケート・モードでメンバーシップ・サーバーを実行するために必要です。

syncLimit

リーダーからメンバーシップ・サーバーが期限切れになる制限。この制限(ティック)は、リクエストを送信してから応答を受信するまでの許容される時間を指定します。最適なパフォーマンスを得るには、これを推奨設定の12ティックに設定してください。このパラメータは、レプリケート・モードでメンバーシップ・サーバーを実行するために必要です。

dataDir

ZooKeeperデータ、スナップショットおよびトランザクション・ログを格納するためのデータ・ディレクトリの場所を決定し、作成します。

トランザクション・ログが書き込まれるディレクトリを作成する場合は、トランザクション・ログを不揮発性記憶域に書き込むことがパフォーマンスにとって重要となります。一貫して優れたパフォーマンスを実現するには、トランザクション・ログ専用のデバイスを確保することがキーとなります。ビジー状態のデバイスにトランザクションを記録すると、パフォーマンスに悪影響を及ぼします。

clientPort

クライアント接続をリスニングするポート。デフォルトはポート2181です。

autopurge.snapRetainCount

dataDirおよびdataLogDirそれぞれに保持する最新のスナップショットおよび対応するApache ZooKeeperトランザクション・ログの数を定義します。デフォルトは3です。

autopurge.purgeInterval

古いスナップショットおよび対応するApache ZooKeeperトランザクション・ログのパージをトリガーする間隔(時間)。自動パージを有効にするには、正の整数(1以上)に設定します。デフォルトは0です。これを1に設定することをお薦めします。

minSessionTimeout

サーバーがクライアントにネゴシエーションを許可する最小セッション・タイムアウト(ミリ秒)。デフォルトは、tickTimeの2倍です。

maxSessionTimeout

サーバーがクライアントにネゴシエーションを許可する最大セッション・タイムアウト(ミリ秒)。デフォルトは、tickTimeの20倍です。

server.x=[systemName]:nnnnn:nnnnn

各メンバーシップ・サーバーの構成は、server.xパラメータによって識別されます。このパラメータによって定義されるホストのリストは、メンバーシップ・サービスで使用されているすべてのメンバーシップ・サーバーを指定します。このリストは、メンバーシップ・サービス内の各メンバーシップ・サーバー上の各zoo.cfgファイルにあるメンバーシップ・サーバーの同じリストに関連している必要があります。

このパラメータは、レプリケート・モードでメンバーシップ・サーバーを実行するために必要です。

xは、メンバーシップ・サーバー上のmyid構成ファイルでも構成されているメンバーシップ・サーバーの識別整数です。

systemNameパラメータは、メンバーシップ・サーバーがインストールされ、実行されるホストのDNS (またはIPアドレス)を指定します。サーバーのsystemNameが指定されていない場合、デフォルトはlocalhostです。

各サーバー名の後に2つのポート番号を定義します。

  • 最初のポート番号: ピアによって、他のピアとの接続および通信に使用されます。このポートは、フォロワをリーダーに接続します。

  • 2番目のポート番号: メンバーシップ・サーバー間でリーダー選択に使用されます。必要に応じて、このポートは、障害が発生した場合に、新規リーダーを選択するために使用されます。

本番環境では、各メンバーシップ・サーバーを異なるホスト上に構成する必要があります。この場合、規則は、次のように同じポート番号を割り当てることなどです。

server.1=system1:2888:3888
server.2=system2:2888:3888
server.3=system3:2888:3888

ただし、テスト環境では、同じホスト上にすべてのメンバーシップ・サーバーを配置する場合があります。この場合は、すべてのメンバーシップ・サーバーに異なるポートを構成する必要があります。

4lw.commands.whitelist

指定したZookeeperの4文字単語のコマンドを有効にします。ttGridRolloutのようなTimesTen Scaleoutユーティリティでは、このようなコマンドを適切に動作させる必要があります。

インストールされているすべてのメンバーシップ・サーバーは、レプリケート・モードで実行する必要があります。レプリケート・モードでメンバーシップ・サーバーを実行するには、tickTimeinitLimitおよびsyncLimitパラメータを含めて、メンバーシップ・サーバーごとに2つのポート番号を使用してホスト名を指定する必要があります。

ノート:

レプリケート・モードの詳細は、Apache ZooKeer Webサイトを参照してください。

その後、ドキュメントの「Getting Started」 > 「Running Replicated ZooKeeper」の項を参照してください。

次の例は、DNS名がms_host1ms_host2ms_host3であるホストにインストールされている3つのメンバーシップ・サーバーが存在するzoo.cfgメンバーシップ・サーバー構成ファイルを示しています。3つのすべてのメンバーシップ・サーバーは、レプリケート・モードで実行するように構成されています。

# The number of milliseconds of each tick
tickTime=250
# The number of ticks that the initial synchronization phase can take
initLimit=40
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=12
# The directory where you want the ZooKeeper data stored. 
dataDir=/grid/membership/apache-zookeeper-3.8.4-bin/data
# The port at which the clients will connect
clientPort=2181
# Every hour, keep the latest three Apache ZooKeeper snapshots and 
# transaction logs and purge the rest
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
# The minimum and maximum allowable timeouts for Apache ZooKeeper sessions. 
# Actual timeout is negotiated at connect time.
minSessionTimeout=2000
maxSessionTimeout=10000
# The membership servers
server.1=ms_host1:2888:3888
server.2=ms_host2:2888:3888
server.3=ms_host3:2888:3888
# Enabled ZooKeeper four-letter-words commands
4lw.commands.whitelist=stat, ruok, conf, isro

ノート:

Apache ZooKeeperインストールの/confディレクトリにあるzoo_sample.cfgという名前のzoo.cfgファイルのパラメータの一部を説明するサンプル・ファイルがあります。ただし、TimesTen Scaleoutの推奨パラメータまたは設定のすべてが示されているわけではありません。zoo_sample.cfgは、参照用としてのみ使用してください。

この例では、それぞれがメンバーシップ・サーバーである3つのホストにmyidテキスト・ファイルを作成します。各myidテキスト・ファイルには1行が含まれ、ここには、zoo.cfgファイルで構成されているメンバーシップ・サーバーの1つに対応するサーバーID (整数)が含まれます。サーバーIDは、構成ファイルのserver.x=エントリの数字xです。myidテキスト・ファイルは、各メンバーシップ・サーバー上のデータ・ディレクトリ内に配置する必要があります。データ・ディレクトリの場所は、/grid/membership/apache-zookeeper-3.8.4-bin/dataです。

  • ms_host1上の/grid/membership/apache-zookeeper-3.8.4-bin/dataディレクトリに、そのメンバーシップ・サーバー用にmyidテキスト・ファイルを作成します。myidテキスト・ファイルには、値1が含まれています。

  • ms_host2上の/grid/membership/apache-zookeeper-3.8.4-bin/dataディレクトリに、そのメンバーシップ・サーバー用にmyidテキスト・ファイルを作成します。myidテキスト・ファイルには、値2が含まれています。

  • ms_host3上の/grid/membership/apache-zookeeper-3.8.4-bin/dataディレクトリに、そのメンバーシップ・サーバー用にmyidテキスト・ファイルを作成します。myidテキスト・ファイルには、値3が含まれています。

メンバーシップ・サーバーが起動すると、ZooKeeperデータ・ディレクトリのmyidファイルに構成されている整数によってどのサーバーであるかが識別されます。

ノート:

Apache ZooKeeper zoo.cfg構成ファイル内に含めることができる構成パラメータの詳細は、Apache ZooKeerのWebサイトを参照してください。