Sun Java System Application Server 9.1 では、ロードバランサの機能が強化されており、次の各機能を通じて柔軟性と使いやすさの向上を実現しています。
Application Server では、管理コンソールで行ったロードバランサ設定の変更を、ネットワーク経由で自動的に Web サーバーの構成ディレクトリに送信できます。Application Server の以前のバージョンでは、ロードバランサ設定をエクスポートしてから、Web サーバーの構成ディレクトリにコピーする必要がありました。
ロードバランサでは、HTTP 要求の配信の改良を実現しています。管理者は「重み」と呼ばれる属性を使用して、重みに比例した形で要求をインスタンスにルーティングする方式を指定できます。たとえば、あるクラスタに 2 つのインスタンスがあり、管理者がインスタンス x に 100 の重みを、インスタンス y に 400 の重みを割り当てたとします。その場合、100 個の要求のうち 20 個がインスタンス x に、80 個がインスタンス y に振り分けられます。
Application Server では、HTTP 要求の分散に関するカスタムポリシーを管理者が定義できます。カスタムポリシーでは、ロードバランサプラグインが使用しなければならない負荷分散アルゴリズムを定義します。言い換えると、どの Application Server インスタンスが HTTP 要求を処理するかを管理者が定義できます。この機能を使用するには、指定された着信要求のヘッダーを評価し、その要求を処理できるインスタンスを何らかの基準に従って選択するなどの目的に使用できる共有ライブラリを管理者が開発する必要があります。この共有ライブラリはロードバランサによって読み込まれます。
この共有ライブラリは、appserver_install_dir/lib/install/templates 下の loadbalancer.h で定義されているインタフェースを実装する必要があります。
Application Server には、基本的なラウンドロビンアルゴリズムを実装するサンプルモジュール roundrobin.c も付属しています。管理者はこのサンプルモジュールを、共有ライブラリを構築するためのテンプレートとして使用できます。このサンプルモジュールは appserver_install_dir/lib/install/templates にも収録されています。
roundrobin.c を、appserver_install_dir/lib/install/templates から作業ディレクトリ (例: /home/user/workspacelb) にコピーします。
Sun Studio コンパイラや GCC などの ANSI C/C++ コンパイラを使用して、roundrobin.c をコンパイルします。必ず、静的な実行可能ファイルではなく動的な共有ライブラリとしてビルドしてください。
Sun Studio CC Compiler を使用している場合、次のコマンドを使用してコンパイルを行います。
cc -G -I<appserver install dir>/lib/install/templates roundrobin.c -o roundrobin.so
GCC を使用している場合、次のコマンドで共有ライブラリをコンパイルします。
gcc -shared -I<appserver install dir>/lib/install/templates roundrobin.c -o roundrobin.so
再配置エラーが発生した場合、オプション「-fPIC」を使用してもう一度コンパイルします。コマンドは次のようになります。
gcc -shared -fPIC -I <appserver install dir>/lib/install/templates roundrobin.c -o roundrobin.so
Microsoft Windows では、http://www.redhat.com/services/custom/cygwin から Cygwin ユーティリティーをダウンロードします。このユーティリティーには GCC が付属しています。次の GCC コマンドを使用して、ダイナミックリンクライブラリ (dll) を作成します。
gcc -shared -I<appserver_install_dir>/lib/install/templates roundrobin.c -o roundrobin.dll
新しく構築されたモジュールを指すように loadbalancer.xml を変更します。編集後の loadbalancer.xml は次のようになります。
<cluster name="cluster1" policy="user-defined" policy-module="home/user/workspacelb/roundrobin.so">
roundrobin.so を Web サーバーインスタンスのディレクトリにコピーします。
稼働していない場合は Web サーバーを起動するか、またはロードバランサが再構成されるまで待ちます。