Sun GlassFish Enterprise Server 2.1 高可用性 (HA) 管理ガイド

HTTP ロードバランサの動作

ロードバランサの目的は、スタンドアロンまたはクラスタ化された複数のインスタンスの間でワークロードを均等に分散させ、それにより、システムの全体的なスループットを向上させることです。

HTTP ロードバランサにより、Java EE アプリケーションサーバーに配備されるサービスの高可用性を実現できます。負荷分散処理の間、それまでサービスを提供していたインスタンスが稼働していないか、または正常な状態でないために要求を処理できないことが検出された場合、HTTP ロードバランサはセッション要求を別のサーバーインスタンスにフェイルオーバーします。HTTP セッション情報を持続させるには、クラスタプロファイルを使用していることと、インメモリーレプリケーションまたは HADB を使用するように HTTP セッション持続性を設定することが必要です。詳細については、第 7 章高可用性 (HA) セッション持続性とフェイルオーバーの設定を参照してください。


注 –

ロードバランサは、8K バイトを超える URI や URL を処理しません。


HTTP 負荷分散アルゴリズム

デフォルトでは、HTTP ロードバランサは「スティッキラウンドロビンアルゴリズム」を使用して、着信 HTTP および HTTPS 要求を負荷分散します。

新しい HTTP 要求がロードバランサプラグインに送信されると、単純なラウンドロビンスキーマに基づいて、アプリケーションサーバーインスタンスに転送されます。要求がセッションベースのアプリケーションに対するものである場合、これには新しいセッションに対する要求も含まれます。同じセッションベースのアプリケーションに対する同じクライアントからの後続の要求は、割り当て済み要求 (スティッキ要求) と見なされ、ロードバランサによって同じインスタンスにルーティングされます。スティッキ (sticky: 粘着性の) ラウンドロビンという名前が付いているのはそのような理由からです。セッションベースでないアプリケーションへの要求や、セッションベースのアプリケーションに対する最初の要求は未割り当て要求と呼ばれます。スティッキー性は Cookie を使用して、または明示的 URL 書き換えによって実現されます。ロードバランサは、スティッキ度を判断する方法を自動的に決定します。

ロードバランサプラグインは次の方法を使ってセッションのスティッキ度を判断します。

スティッキ情報から、ロードバランサプラグインは、まず、以前に要求が転送されたインスタンスを判断します。そのインスタンスが正常であるとわかると、ロードバランサプラグインは、要求をその特定のインスタンスに転送します。したがって、特定のセッションに対するすべての要求が同じインスタンスに送信されます。

HTTP ロードバランサプラグインの機能

ロードバランサの次の機能により、柔軟性と使いやすさが向上します。

自動適用

Enterprise Server では、管理コンソールで行なったロードバランサ設定の変更を、ネットワーク経由で自動的に Web サーバーの構成ディレクトリに送信できます。Enterprise Server の以前のバージョンでは、ロードバランサ設定をエクスポートしてから、Web サーバーの構成ディレクトリにコピーする必要がありました。

重み付きラウンドロビン

ロードバランサでは、HTTP 要求の配信の改良を実現しています。管理者は「重み」と呼ばれる属性を使用して、重みに比例した形で要求をインスタンスにルーティングする方式を指定できます。たとえば、クラスタに 2 つのインスタンスがあり、管理者はインスタンス x に対して 100、インスタンス y に対して 400 の重みをそれぞれ設定しているとします。この場合、100 の要求があると、20 の要求がインスタンス x に、80 の要求がインスタンス y に送られます。

ユーザー–定義の負荷分散

Enterprise Server では、HTTP 要求の分散に関するカスタムポリシーを管理者が定義できます。カスタムポリシーでは、ロードバランサプラグインが使用しなければならない負荷分散アルゴリズムを定義します。言い換えると、どのインスタンスが HTTP 要求を処理するかを管理者が定義できます。この機能を使用するには、管理者は共有ライブラリを作成する必要があります。共有ライブラリでは、loadbalancer.h というインタフェースを実装する必要があります。たとえば、共有ライブラリを使用すると、受け取った着信要求のヘッダーを評価し、その要求を処理できるインスタンスを何らかの基準に従って選択することができます。この共有ライブラリはロードバランサによって読み込まれます。

インタフェース loadbalancer.h は、webserver_install_dir/plugins/lib/install にあります。Enterprise Server には、共有ライブラリの roundrobin.c も付属しています。管理者はこのライブラリをテンプレートに使用して、共有ライブラリを構築できます。