Cosminexus 機能解説
Webコンテナがクラスタ構成で配置されている場合,リダイレクタを使用して,POSTデータサイズごとにそれぞれのWebコンテナにリクエストを振り分けられます。この機能を使用すると,処理に時間が掛かる長大なPOSTデータのリクエストを,特定のWebコンテナに転送できます。これによって,長大なPOSTデータ以外のリクエストのスループットの低下や,レスポンス時間の低下を防ぐことができます。この方式でリクエストを振り分ける場合は,振り分け処理をする各Webコンテナに,それぞれWebアプリケーションがデプロイされていることが前提になります。ただし,各J2EEサーバにデプロイするWebアプリケーションが同一である必要はありません。
クラスタ構成でのPOSTデータサイズによるリクエストの振り分けには,POSTリクエスト振り分けワーカというワーカ定義を使用します。POSTリクエスト振り分けワーカには,振り分け先となるワーカプロセスのリストが定義されています。この定義を基に,ワーカプロセスに対するPOSTデータサイズの振り分けが実行されます。POSTリクエスト振り分けワーカの振り分け先となるワーカプロセスをPOSTリクエスト転送先ワーカといいます。
POSTリクエスト転送先ワーカへの振り分けは,HTTPリクエスト単位で実行されます。
POSTデータサイズでリクエストを振り分ける場合,POSTリクエスト振り分けワーカに転送されるリクエストが限定できるかどうかによって,POSTデータサイズの上限値に設定する値が異なります。
図4-41 POSTデータサイズによるリクエストの振り分けの例(リクエストが限定できる場合)
この図では,POSTリクエスト転送先ワーカを二つ用意し,POSTデータサイズが100メガバイト以上200メガバイト未満のリクエストがワーカプロセスBに転送されるように,それぞれにPOSTデータサイズの上限値を設定しています。リクエストのPOSTデータサイズが上限値未満の場合に,それぞれのPOSTリクエスト転送先ワーカに振り分けられます。リクエストのPOSTデータサイズが,複数のPOSTリクエスト転送先ワーカに当てはまる場合,POSTデータサイズの上限値が最も小さいPOSTリクエスト転送先ワーカに,リクエストは振り分けられます。例えば,POSTデータサイズが80メガバイトのリクエストの場合は,どちらのワーカにも該当しますが,ワーカプロセスAに振り分けられます。図4-42 POSTデータサイズによるリクエストの振り分けの例(リクエストが限定できない場合)
この図では,POSTリクエスト転送先ワーカを二つ用意し,それぞれにPOSTデータサイズの上限値を設定しています。長大なPOSTデータのリクエストすべてをワーカプロセスBで処理するように,ワーカプロセスBのPOSTデータサイズの上限値には最大値を設定しています。ワーカプロセスAの上限値以上(100メガバイト以上)のPOSTデータのリクエストは,すべてワーカプロセスBに転送されます。なお,この場合,POSTデータ以外のリクエストや,POSTデータサイズが参照できないリクエストなどが転送されると,リクエスト振り分けワーカで振り分けられないため,リダイレクタによってエラーステータスコード400が返されてエラーとなります。POSTデータサイズでリクエストを振り分ける場合,リクエストの振り分け条件に満たないリクエストがPOSTリクエスト振り分けワーカに転送されると,リダイレクタによってエラーステータスコード400が返されてエラーとなります。リクエストの振り分け条件については,「(2) リクエストの振り分け条件」を参照してください。
リクエストの振り分け条件に満たないリクエストも処理したい場合は,そのリクエストを転送するワーカプロセスを設定する必要があります。リクエストの振り分け条件に満たないリクエストを転送するワーカプロセスをデフォルトワーカといいます。なお,デフォルトワーカの設定は任意です。
リクエストが限定できない場合に,リクエストの振り分け条件に満たないリクエストをデフォルトワーカに転送する例を次の図に示します。
図4-43 POSTデータサイズによるリクエストの振り分けの例(デフォルトワーカを設定した場合)
この図では,リクエストの振り分け条件に満たないリクエストを,デフォルトワーカのワーカプロセスAに転送するように設定しています。
POSTリクエスト転送先ワーカに振り分けられるリクエストは,次の条件を満たしている必要があります。
どれか一つでも条件を満たさないリクエストは,デフォルトワーカに振り分けられます。デフォルトワーカが設定されていない場合は,エラーとなり,エラーステータスコード400のエラーが返されます。
標準で提供されるworkers.propertiesには,あらかじめ次に示すPOSTリクエスト割り分けワーカが定義されています。
#worker.list=postsizelb1 #worker.postsizelb1.type=post_size_lb #worker.postsizelb1.post_size_workers=worker1,worker2 #worker.postsizelb1.default_worker=worker1 |
worker.postsizelb1.typeでは,ワーカのタイプを設定します。worker.postsizelb1.post_size_workersでは,振り分け対象となるPOSTリクエスト転送先ワーカのワーカプロセス名を設定します。worker.postsizelb1.default_workerでは,デフォルトワーカを設定します。workers.propertiesには,postsizelb1として,ワーカのタイプに「post_size_lb」,POSTリクエスト転送先ワーカに「worker1,worker2」,デフォルトワーカに「worker1」が定義されています。
ただし,この定義はコメントとして記述されています。このため,この定義のPOSTリクエスト割り分けワーカを利用する場合は,workers.propertiesの該当する行の先頭の「#」を削除してください。
リクエストを振り分けるPOSTデータサイズは,workers.propertiesのワーカ定義のpost_dataパラメタで設定します。
例えば,標準提供のpostsizelb1の定義を利用して,worker1とworker2という二つのPOSTリクエスト転送先ワーカに,それぞれ次のようにPOSTデータサイズを定義しているとします。
この場合,worker1には100メガバイト未満のリクエストが,worker2には100メガバイト以上200メガバイト未満のリクエストが振り分けられます。リクエスト振り分けワーカが,200メガバイト以上のリクエストを振り分けた場合,そのリクエストはデフォルトワーカに設定されているworker1に転送されます。
POSTデータサイズでのリクエスト振り分けの設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.