メンバーシップ・サービスとしての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つのサーバーがある場合は、一意の整数1
、2
、3
4
および5
ので識別される必要があります。この番号は、
server.
xパラメータのxによるzoo.cfg
ファイル内のホストの定義に対応します。すべてのzoo.cfg
ファイルには、すべてのメンバーシップ・サーバーのリストが必要です。たとえば、5つのメンバーシップ・サーバーがある場合は、zoo.cfg
ファイルにserver.1
、server.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構成パラメータ
パラメータ | 説明 |
---|---|
|
|
|
メンバーシップ・サーバーをリーダーに接続する必要がある期間のタイムアウト(ティック)。最適なパフォーマンスを得るには、これを推奨設定の |
|
リーダーからメンバーシップ・サーバーが期限切れになる制限。この制限(ティック)は、リクエストを送信してから応答を受信するまでの許容される時間を指定します。最適なパフォーマンスを得るには、これを推奨設定の |
|
ZooKeeperデータ、スナップショットおよびトランザクション・ログを格納するためのデータ・ディレクトリの場所を決定し、作成します。 トランザクション・ログが書き込まれるディレクトリを作成する場合は、トランザクション・ログを不揮発性記憶域に書き込むことがパフォーマンスにとって重要となります。一貫して優れたパフォーマンスを実現するには、トランザクション・ログ専用のデバイスを確保することがキーとなります。ビジー状態のデバイスにトランザクションを記録すると、パフォーマンスに悪影響を及ぼします。 |
|
クライアント接続をリスニングするポート。デフォルトはポート |
|
|
|
古いスナップショットおよび対応するApache ZooKeeperトランザクション・ログのパージをトリガーする間隔(時間)。自動パージを有効にするには、正の整数(1以上)に設定します。デフォルトは0です。これを1に設定することをお薦めします。 |
|
サーバーがクライアントにネゴシエーションを許可する最小セッション・タイムアウト(ミリ秒)。デフォルトは、 |
|
サーバーがクライアントにネゴシエーションを許可する最大セッション・タイムアウト(ミリ秒)。デフォルトは、 |
|
各メンバーシップ・サーバーの構成は、 このパラメータは、レプリケート・モードでメンバーシップ・サーバーを実行するために必要です。 xは、メンバーシップ・サーバー上の
各サーバー名の後に2つのポート番号を定義します。
本番環境では、各メンバーシップ・サーバーを異なるホスト上に構成する必要があります。この場合、規則は、次のように同じポート番号を割り当てることなどです。
ただし、テスト環境では、同じホスト上にすべてのメンバーシップ・サーバーを配置する場合があります。この場合は、すべてのメンバーシップ・サーバーに異なるポートを構成する必要があります。 |
|
指定したZookeeperの4文字単語のコマンドを有効にします。 |
インストールされているすべてのメンバーシップ・サーバーは、レプリケート・モードで実行する必要があります。レプリケート・モードでメンバーシップ・サーバーを実行するには、tickTime
、initLimit
およびsyncLimit
パラメータを含めて、メンバーシップ・サーバーごとに2つのポート番号を使用してホスト名を指定する必要があります。
ノート:
レプリケート・モードの詳細は、Apache ZooKeer Webサイトを参照してください。
その後、ドキュメントの「Getting Started」 > 「Running Replicated ZooKeeper」の項を参照してください。
次の例は、DNS名がms_host1
、ms_host2
、ms_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サイトを参照してください。