Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)
振り分け先となるワーカのリストをロードバランサに定義することで,ラウンドロビン方式でワーカにリクエストを振り分けます。
振り分け先となる各ワーカに負荷分散値を設定して,リクエスト振り分けの比率を定義すると,ホストごとの負荷の割合を調整できます。リダイレクタは,この比率でHTTPリクエスト単位にラウンドロビンでリクエストを振り分けるので,比率が高いワーカほど転送されるリクエストの割合が多くなります。ただし,同じセッションに属するHTTPリクエストは前回と同じワーカに振り分けられます。
ラウンドロビン方式によるリクエスト振り分けは,次の手順で設定します。
条件 | 意味 |
---|---|
MaxSpareServers ≧ MaxClients | サーバプロセスはMaxClientsまで増加し,処理終了後も常駐します。 |
MaxRequestsPerChild 10000 | HTTPリクエストを10,000回処理後,リフレッシュのためにサーバプロセスを終了させます(10,000は推奨値)。振り分け先のJ2EEサーバ数に対して十分に大きな値を指定します。 |
StartServers = MaxClients | 最初に全サーバプロセスを起動しておく場合に指定します。 |
StartServers 256 MaxClients 256 MaxSpareServers 256 MaxRequestsPerChild 10000 |
ラウンドロビン方式によるリクエストの振り分けの設定は,workers.propertiesおよびmod_jk.confで定義します。workers.propertiesおよびmod_jk.confで定義するキーを次の表に示します。
表4-7 workers.propertiesおよびmod_jk.confで定義するキー(ラウンドロビン方式によるリクエストの振り分けの場合)
ファイルの種類 | キー名 | 説明 |
---|---|---|
workers.properties | worker.list | 一つまたは複数のワーカ名のリストを指定します。 |
worker.<ワーカ名>.host | ワーカのホスト名,またはIPアドレスを指定します。 | |
worker.<ワーカ名>.port | ワーカのポート番号を指定します。 | |
worker.<ワーカ名>.type | ワーカのタイプを指定します。ロードバランサには「lb」を,負荷分散の対象となるワーカには「ajp13」を指定します。 | |
worker.<ワーカ名>.balanced_workers | 負荷分散の対象となるワーカのリストを指定します。 | |
worker.<ワーカ名>.lbfactor | 負荷分散値を指定します。 | |
worker.<ワーカ名>.cachesize | リダイレクタで再利用するワーカのコネクション数を指定します。 Windowsの場合にだけ指定できます。 |
|
worker.<ワーカ名>.receive_timeout | 通信タイムアウト値を指定します。 | |
worker.<ワーカ名>.delegate_error_code | エラーページの作成をWebサーバに委任する場合に利用するエラーステータスコードを指定します。 | |
mod_jk.conf | JkMount | URLパターンと,worker.listで指定されているワーカのどれかとの組み合わせを指定します。 |
注 <ワーカ名>には,worker.listキー,またはworker.<ワーカ名>.balanced_workersキーで指定したワーカの名称を定義します。
ワーカの種類ごとに指定できるパラメタを次の表に示します。
表4-8 ワーカの種類ごとに指定できるキー
キー名 | ワーカの種類(worker.<ワーカ名>.typeキーの指定値) | |
---|---|---|
ロードバランサ (「lb」を指定) |
ワーカ (「ajp13」を指定) |
|
worker.<ワーカ名>.host | × | ○ |
worker.<ワーカ名>.port | × | ○ |
worker.<ワーカ名>.type | ○ | ○ |
worker.<ワーカ名>.balanced_workers | ○ | × |
worker.<ワーカ名>.lbfactor | × | △ |
worker.<ワーカ名>.cachesize | × | △ |
worker.<ワーカ名>.receive_timeout | × | △ |
worker.<ワーカ名>.delegate_error_code | × | △ |
(凡例)○:指定できる ×:指定できない △:任意に指定できる
ラウンドロビン方式によるリクエスト振り分けの例を次の図に示します。
図4-8 ラウンドロビン方式によるリクエスト振り分けの例
この例では,「/examples」以下のリクエストがホストA,ホストBに同じ比率で振り分けます。ホストAのワーカ名は「worker1」,ホストBのワーカ名は「worker2」です。
workers.propertiesの例を次に示します。ここでは,ロードバランサとワーカを定義します。リクエストを同じ比率で振り分けるので,「worker1」と「worker2」の負荷分散値はどちらも「1」を指定します。
worker.list=loadbalancer1 worker.loadbalancer1.balanced_workers=worker1,worker2 worker.loadbalancer1.type=lb worker.worker1.port=8007 worker.worker1.host=hostA worker.worker1.type=ajp13 worker.worker1.cachesize=64 worker.worker1.lbfactor=1 worker.worker2.port=8007 worker.worker2.host=hostB worker.worker2.type=ajp13 worker.worker2.cachesize=64 worker.worker2.lbfactor=1
worker.list=loadbalancer1 worker.loadbalancer1.balanced_workers=worker1,worker2 worker.loadbalancer1.type=lb worker.worker1.port=8007 worker.worker1.host=hostA worker.worker1.type=ajp13 worker.worker1.lbfactor=1 worker.worker2.port=8007 worker.worker2.host=hostB worker.worker2.type=ajp13 worker.worker2.lbfactor=1
mod_jk.confの例を次に示します。ここでは,ロードバランサ名「loadbalancer1」を指定します。
JkMount /examples/* loadbalancer1
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.