3.4.5 実行環境での設定(Smart Composer機能を使用しない場合)

振り分け先となるワーカのリストをロードバランサに定義することで,ラウンドロビン方式でワーカにリクエストを振り分けます。

振り分け先となる各ワーカに負荷分散値を設定して,リクエスト振り分けの比率を定義すると,ホストごとの負荷の割合を調整できます。リダイレクタは,この比率でHTTPリクエスト単位にラウンドロビンでリクエストを振り分けるので,比率が高いワーカほど転送されるリクエストの割合が多くなります。ただし,同じセッションに属するHTTPリクエストは前回と同じワーカに振り分けられます。

<この項の構成>
(1) 設定の手順
(2) workers.propertiesおよびmod_jk.confでの設定
(3) 設定例

(1) 設定の手順

ラウンドロビン方式によるリクエスト振り分けは,次の手順で設定します。

  1. workers.propertiesでロードバランサ,およびワーカを定義します。
    ロードバランサの定義
    ワーカ名のリスト,ワーカのタイプ(「lb」を設定),負荷分散の対象となるワーカのリストなどを設定します。
    各ワーカの定義
    ワーカのタイプ(「ajp13」を設定),ポート番号,ホスト名,負荷分散値などを設定します。
    標準で提供されるworkers.propertiesには,デフォルト値が定義されています。コメントとして定義されているデフォルトの定義を使用する場合は,該当する行の先頭の「#」を削除してください。
  2. Hitachi Web Serverを使用する場合は,mod_jk.confでURLパターンとワーカのマッピングを定義します。Microsoft IISを使用する場合は,uriworkermap.propertiesでURLパターンとワーカのマッピングを定義します。
    すでにマッピングが定義されている場合は,定義を削除,または置き換えてください。
  3. Webサーバの環境を設定して,Webサーバを再起動します。
    Webサーバの設定については,「付録B Hitachi Web Serverの設定に関する注意事項」,または「付録C Microsoft IISの設定」を参照してください。
注意事項
  • リダイレクタで負荷分散を使用する場合に,あるワーカで障害を検出すると,障害を検出してから60秒間はそのワーカはリダイレクト先ワーカの選択肢から除外されます。そのため,障害が回復しても,最大で60秒間はそのワーカが使用されない場合があります。
  • Microsoft IISを使用してリダイレクタが動作するワーカプロセスを複数に設定した場合,ワーカを2以上に設定していると,最初のリダイレクト先がworkers.propertiesの最初に定義したワーカに多く割り振られることがあります。
    また,リクエストがどのワーカプロセスに割り振られるかはMicrosoft IISの制御によるため,同じ負荷分散値を指定してもラウンドロビンにならないことがあります。
    この場合,アプリケーションプールの数を一つにすることで,最初のリダイレクトの割り振り先もラウンドロビンになります。
  • UNIXの場合,Hitachi Web Serverのサーバプロセスを負荷に応じて生成・消滅させているときは,workers.propertiesの最初に定義したワーカによって多く割り振られます。また,サーバプロセス数を固定にしても,リクエストがどのサーバプロセスに割り振られるかは不定のため,同じ負荷分散値を指定してもラウンドロビンにならないことがあります。サーバプロセスは,消滅しなければ負荷に応じて増えてもよいため,サーバプロセスが短時間で生成・消滅しないようにディレクティブを指定する必要があります。
    Hitachi Web Serverのhttpsd.confのディレクティブが次に示す条件を満たすように,指定してください。
    条件意味
    MaxSpareServers ≧ MaxClientsサーバプロセスはMaxClientsまで増加し,処理終了後も常駐します。
    MaxRequestsPerChild 10000HTTPリクエストを10,000回処理後,リフレッシュのためにサーバプロセスを終了させます(10,000は推奨値)。振り分け先のJ2EEサーバまたはWebコンテナサーバ数に対して十分に大きな値を指定します。
    StartServers = MaxClients最初に全サーバプロセスを起動しておく場合に指定します。
ディレクティブの指定例

StartServers 256
MaxClients 256
MaxSpareServers 256
MaxRequestsPerChild 10000

(2) workers.propertiesおよびmod_jk.confでの設定

workers.propertiesおよびmod_jk.confでの設定については,Smart Composerを使用する場合と同様です。「3.4.4(2) workers.propertiesおよびmod_jk.confでの設定」を参照してください。

(3) 設定例

ラウンドロビン方式によるリクエスト振り分けの例を次の図に示します。

図3-9 ラウンドロビン方式によるリクエスト振り分けの例

[図データ]

この例では,「/examples」以下のリクエストがホストA,ホストBに同じ比率で振り分けます。ホストAのワーカ名は「worker1」,ホストBのワーカ名は「worker2」です。

workers.propertiesの例を次に示します。ここでは,ロードバランサとワーカを定義します。リクエストを同じ比率で振り分けるので,「worker1」と「worker2」の負荷分散値はどちらも「1」を指定します。

workers.propertiesの例(Windowsの場合)

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

workers.propertiesの例(UNIXの場合)

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およびuriworkermap.propertiesの例を次に示します。ここでは,ロードバランサ名「loadbalancer1」を指定します。

mod_jk.confの例(Hitachi Web Serverの場合)

JkMount /examples/* loadbalancer1

uriworkermap.propertiesの例(Microsoft IISの場合)

/examples/*=loadbalancer1