付録A 参照:workers.properties
Apache httpd Server ワーカーノードは mod_jk ロードバランサにマップされる Servlet コンテナです。ワーカーノードは
HTTPD_DIST/conf/workers.properties
で定義されます。このファイルは、さまざまな Servlet コンテナが存在する場所とコールが負荷分散される方法を指定します。
workers.properties
ファイルには、以下の 2 つのセクションが含まれます。
- Global Properties
- このセクションには、すべてのワーカーに適用されるディレクティブが含まれます。
- Worker Properties
- このセクションには、個別のワーカーに適用されるディレクティブが含まれます。
各ノードは Worker Properties の命名規則を使用して定義されます。ワーカー名には、英数字のみを使用でき、文字は [a-z][A-Z][0-9][_-/] に制限されます。
ワーカープロパティの構造は
worker.worker_name.directive
です。
- worker
- すべてのワーカープロパティで同一の接頭辞。
- worker_name
- ワーカーに与えられた任意の名前 (node1、node_01、Node_1 など)。
- directive
- 必要な特定のディレクティブ。
ワーカーノードを設定するのに必要な主なディレクティブについて以下で説明します。
注記
worker.properties
設定ディレクティブの完全なリストについては、『Apache Tomcat Connector - Reference Guide』を参照してください。
worker.properties グローバルディレクティブ
- worker.list
- mod_jk により使用されたワーカー名のリストを指定します。このリストのワーカーは要求をマップするために使用できます。
注記
ロードバランサにより管理されない単一ノード設定はworker.list=[worker name]
に設定する必要があります。
workers.properties 必須ディレクティブ
- type
- ワーカーのタイプを指定し、ワーカーに適用可能なディレクティブを決定します。デフォルト値は
ajp13
であり、Web サーバーと Apache httpd サーバー間の通信に選択する場合に推奨されるワーカータイプです。他の値にはajp14
、lb
、status
などがあります。ajp13 の詳細については、『The Apache Tomcat Connector - AJP Protocol Reference』を参照してください。
workers.properties 接続ディレクティブ
- host
- ワーカーのホスト名または IP アドレス。ワーカーノードは ajp13 プロトコルスタックをサポートする必要があります。デフォルト値は
localhost
です。ホスト名または IP アドレスの後にポート番号を付加することによりホストディレクティブの一分としてport
ディレクティブを指定できます (たとえば、worker.node1.host=192.168.2.1:8009
やworker.node1.host=node1.example.com:8009
など)。 - port
- 定義されたプロトコル要求をリッスンするリモートサーバーインスタンスのポート番号。デフォルト値は、AJP13 ワーカーのデフォルトリッスンポートである
8009
です。AJP14 ワーカーを使用する場合は、このバルブを8011
に設定する必要があります。 - ping_mode
- 現在のネットワークの状態を調べるために接続がプローブされる条件を指定します。プローブは CPing に空の AJP13 パケットを使用し、指定されたタイムアウト内に返答として CPong を期待します。ディレクティブフラグの組み合わせを使用して条件を指定します。フラグはカンマ区切りではありません。たとえば、適切なディレクティブフラグセットは
worker.node1.ping_mode=CI
です。- C (connect)
- サーバーの接続後に条件がプローブされることを指定します。
connect_timeout
ディレクティブを使用してタイムアウトを指定します。指定しない場合は、ping_timeout
の値が使用されます。 - P (prepost)
- サーバーに各要求を送信した後に条件がプローブされることを指定します。
prepost_timeout
ディレクティブを使用してタイムアウトを指定します。指定しない場合は、ping_timeout
の値が使用されます。 - I (interval)
- 通常の内部保守サイクルの間に接続がプローブされることを指定します。
connection_ping_interval
ディレクティブを使用して各間隔の間のアイドル時間を指定します。指定しない場合は、ping_timeout
の値が使用されます。 - A (all)
- すべてのディレクティブが適用されることを指定する最も一般的な設定。高度な
*_timeout
ディレクティブについては、『Apache Tomcat Connector - Reference Guide』を参照してください。
- ping_timeout
- CPing 接続プローブに対する CPong 回答を待機する時間を指定します (
ping_mode
を参照)。デフォルト値は 10000 (ミリ秒) です。
worker.properties 負荷分散ディレクティブ
- lbfactor
- 個々のワーカーに対する負荷分散要素を指定します。ロードバランサのメンバーワーカーに対してのみ指定されます。このディレクティブは、ワーカーに分散された HTTP 要求負荷とクラスタ内の他のワーカーの相対的な量を定義します。このディレクティブが適用される一般的な例は、クラスタ内の他のサーバーよりも処理パワーが大きいサーバーを区別する場合です。たとえば、ワーカーが他のワーカーよりも 3 倍の負荷を引き受ける必要がある場合は、
worker.worker name.lbfactor=3
を指定します。 - balance_workers
- ロードバランサが管理する必要があるワーカーノードを指定します。ディレクティブは同じロードバランサに対して複数回使用でき、workers.properties ファイルで指定されたカンマ区切りのワーカー名リストから構成されます。
- sticky_session
- SESSION ID を持つワーカーに対する要求が同じワーカーに再びルーティングされるかどうかを指定します。デフォルト値は
0
(false) です。1
(true) に設定されると、ロードバランサの永続性が有効になります。たとえば、worker.loadbalancer.sticky_session=0
を指定する場合、各要求はクラスタ内の各ノード間で負荷分散されます。つまり、同じセッションの異なる要求はサーバーの負荷に基づいて異なるサーバーに送信されます。worker.loadbalancer.sticky_session=1
の場合、各セッションはセッションが終了するまで 1 つのサーバーに永続化 (ロック) され、そのサーバーが利用可能になります。