Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

4.23.3 ラウンドロビン方式でのリクエストの振り分け

Webコンテナがクラスタ構成で配置されている場合,リダイレクタを使用して,ラウンドロビン方式でそれぞれのWebコンテナにリクエストを振り分けられます。リダイレクタは,各リクエストに付けられたセッションIDを参照することで,同一のWebクライアントから来たリクエストが常に同一のWebコンテナへ転送されるように,リクエストを振り分けます。

また,振り分け先のWebコンテナの処理性能が異なる場合などには,負荷パラメタを定義することで,ホストごとの負荷の割合を調整することもできます。この方式でリクエストを振り分ける場合は,振り分け処理をする各Webコンテナに,それぞれ同じWebアプリケーションがデプロイされていることが前提になります。

クラスタ構成でのラウンドロビン方式によるリクエスト振り分けには,ロードバランサというワーカ定義を使用します。ロードバランサには,振り分け先となるワーカプロセスのリストが定義されています。この定義を基に,ワーカプロセスに対するラウンドロビン方式の振り分けが実行されます。

振り分けはHTTPリクエスト単位で実行されます。ただし,同じセッションに属するHTTPリクエストは,前回の振り分け先と同じワーカに振り分けられます。

参考
Webサーバ連携時に,リダイレクタの設定でラウンドロビン方式によるリクエストの振り分けを指定すると,HttpSessionのセッションIDにワーカ名が付加されます。また,サーバIDを付加するかどうかの設定に関係なく,HttpSessionのセッションIDにサーバIDは付加されません。
<この項の構成>
(1) ラウンドロビン方式によるリクエストの振り分けの例
(2) ラウンドロビン方式によるリクエストの振り分けの定義
(3) ラウンドロビン方式によるリクエストの振り分けに関する注意事項

(1) ラウンドロビン方式によるリクエストの振り分けの例

ロードバランサを使用したリクエストの振り分けの例を次の図に示します。

図4-40 ロードバランサを使用したリクエストの振り分けの例

[図データ]

(2) ラウンドロビン方式によるリクエストの振り分けの定義

標準で提供されるworkers.propertiesには,あらかじめ次に示すロードバランサが定義されています。

#worker.list=loadbalancer1
 
#worker.loadbalancer1.type=lb
#worker.loadbalancer1.balanced_workers=worker1,worker2

worker.loadbalancer1.typeでは,ワーカのタイプを設定します。worker.loadbalancer1.balanced_workersでは,振り分け対象となるワーカプロセス名を設定します。workers.propertiesには,loadbalancer1として,それぞれ「lb」と「worker1,worker2」が定義されています。

ただし,この定義はコメントとして記述されています。このため,上記のロードバランサを利用する場合は,workers.propertiesの該当する行の先頭の「#」を削除してください。

リクエスト振り分けの比率は,振り分け対象となる各ワーカ定義のlbfactorパラメタに定義できます。lbfactorが大きければ大きいほどそのワーカプロセスに転送されるリクエストの割合は大きくなります。

例えば,worker1とworker2という二つのワーカプロセスでリクエストを振り分ける場合,ワーカ定義のlbfactorパラメタに次に示すように定義されているとします。

この場合,worker1はworker2の2倍の数のWebクライアントを担当することになります。

ラウンドロビン方式でのリクエストの振り分けは,ワーカに設定します。ラウンドロビン方式でのリクエスト振り分けの設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。

(3) ラウンドロビン方式によるリクエストの振り分けに関する注意事項

リダイレクタのラウンドロビン方式によるリクエストの振り分けに関する注意事項を次に示します。