1.5. HTTP サービス

1.5. HTTP サービス

HTTP セッション複製は、クラスタの別のノード上の Web クライアントに関連するステートを複製するために使用されます。従って、ノードの1つがクラッシュした場合、クラスタ内の他のノードは正常な状態に戻ることができます。異なる2つの機能が実行されなければなりません:

ステート複製は、直接 JBoss により処理されます。 all 設定で JBoss を稼動するときは、セッションステート複製はデフォルトで有効になっています。ただ Web アプリケーションを配備さえすれば、そのセッションステートはクラスタ内の JBoss インスタンス全体で複製されます。

しかしながらロードバランシングは別で、それは JBoss 自身によって処理されているのではなく追加のソフトウェアが必要になります。一般的なシナリオとして、 Apache と mod_jk をどのようにしてセットアップするかを説明します。このアクティビティは特別なハードウェアスイッチかルーター (例えば Cisco LoadDirector) 、もしくはその他専用のソフトウェアのいずれかによって実行されます。

注意

ロードバランサーは HTTP リクエストをトラックし、リクエストにリンクされているセッションによってそのリクエストを適切なノードにディスパッチします。これはスティッキーセッションと一体のロードバランサーと呼ばれます: いったんノード上でセッションが作られると、将来のリクエストも全て同じノードで処理されます。セッションを複製することなくスティッキーセッションをサポートするロードバランサーを使用することにより、セッションステート複製の代償なしに確実にスケールすることができます: それぞれのクエリは常に同じノードによって処理されます。しかしノードが故障した場合では、このノードによってホストされた全てのクライアントセッションのステートは失われ (例えばショッピングカート) 、そしてクライアントのほとんどがほぼ確実に異なるノードにログインし、新しいセッションでリスタートすることが必要です。多くの状況で、全てのクリティカルなステートはデータベースに保存されているので、 HTTP セッションを複製しなくても許容されます。その他の状況では、クライアントのセッションを失うことは許容されないので、この場合はセッションステート複製の代償を払わなくてはなりません。

Apache はプラグインモジュールによって拡張できる有名な Web サーバーです。これらのモジュールの一つである mod_jk (と最新の mod_jk2) は Apache からのリクエストをサーブレットコンテナに転送することを可能にするために特別にデザインされています。さらにスティッキーセッションをメンテナンスしている間、 HTTP コールをサーブレットコンテナのセットへロードバランスすることができますが、これは大変興味深いことです。