ここでは、Web Server ソフトウェアを Application Server のクラスタに対するロードバランサとして機能するように設定する方法の手順について説明します。また、ロードバランサの設定手順や Web Server にエクスポートする手順についても説明します。ロードバランサ機能は、エンタープライズプロファイルかクラスタプロファイルでドメインを実行している場合のみ使用できます。
ロードバランサはクラスタとともに配備されます。ロードバランサには次のような機能があります。
アプリケーションまたはサービスを、複数の物理 (または論理) ホストにまたがって水平方向にスケーリングすることに加え、単一の URL でユーザーを表すことができます。
セッションの持続性を使用することにより、ホストの障害またはサーバーのクラッシュからユーザーを保護します。
ユーザーから内部ネットワークを見えないようにして、セキュリティーを強化します。
Enterprise Server には、Sun JavaTM System Web Server、Apache、および Microsoft Windows IIS などの一般的な Web サーバー用のロードバランスプラグインが含まれています。
このセクションを完了するには、このマニュアルの手順に従って今までに作成したドメイン管理サーバーと 2 つのインスタンスに加え、Web Server を実行するための十分なメモリーがシステムに必要です。512M バイト~ 1024M バイトのメモリーをシステムに装備することをお勧めします。
このトピックでは、次の手順について説明します。
ロードバランスを設定する前に、ロードバランサプラグインをインストールする必要があります。ここでは、クラスタまたはエンタープライズプロファイルでドメインを実行していることを前提とします。
管理コンソールを使用してロードバランサを作成します。または、asadmin create-http-lb(1) コマンドを使用することもできます。
管理コンソールで「HTTP ロードバランサ」ノードをクリックします。
「新規」をクリックします。
ロードバランサの名前として lb1 と入力し、Web Server のインストールされているホスト、Web Server インスタンスのポートを入力します。このサンプルシナリオでは、Web Server ホストは localhost で、ポートは 38000 です。
「変更を自動的に適用」チェックボックスをオンにします。このオプションを選択した場合は、ロードバランサの設定をエクスポートする必要がありません。ロードバランサの設定に対するすべての変更が、自動的に伝達されます。
ターゲットとして cluster1 を選択します。
サンプルのクラスタ (cluster1) の作成方法は、「クラスタの作成 」を参照してください。
「保存」をクリックします。
cluster1 のロードバランスを有効にします。
asadmin enable-http-lb-server cluster1
clusterjsp アプリケーションのロードバランスを有効にします。
asadmin enable-http-lb-application –name clusterjsp cluster1
ロードバランサの設定や診断プログラムの作成などの詳細なトピックについては、『Sun GlassFish Enterprise Server 2.1 高可用性 (HA) 管理ガイド』の第 4 章「HTTP 負荷分散の設定」を参照してください。
Web Server を起動または再起動することでロードバランスを起動します。
ロードバランサとして機能する Web Server インスタンスがまだ実行されていない場合は、Web Server を起動します。
Web Server 7.0 を使用している場合は、wadm start-instance コマンドを使用します。
Web Server 6.1 を使用している場合は、<websvr-instance-dir> ディレクトリで start スクリプトを実行します。
ロードバランサとして機能する Web Server インスタンスがすでに実行されている場合は、Web Server を停止して再起動します。
Web Server 6.1 の場合は、web_server_install_dir /https-hostname で停止プログラムを使用し、起動プログラムを実行することでサーバーを再起動します。
Web Server 7.0 の場合は、wadm stop-instance を使用して、次に wadm start-instance コマンドを実行します。
アプリケーションを配備してロードバランサが実行されたら、ロードバランスが機能していることを検証します。
clusterjsp アプリケーションの最初のページを表示するには、ブラウザで次の URL を入力します。
http:// localhost:web_server_port /clusterjsp
localhost 変数を、Web Server を実行するシステム名に置き換えます。
web_server_port 変数を、web_server_install_dir /https-hostname /config/server.xml の LS 要素のポート属性の値に置き換えます。この例では、ポート 38000 を使用しています。
「アプリケーションの配備を確認する」で表示されたのと同じようなページが表示されます。
セッションおよびホスト情報が次のとおり表示されるかどうかを確認します。次に例を示します。
Executed From Server: localhost
Server Port Number: 38000
Executed Server IP Address: 192.18.145.133
Session Created: Day Mon 05 14:55:34 PDT 2005
Server Port Number は 38000、つまり Web Server のポートです。ロードバランサは、クラスタの 2 つのインスタンスに要求を転送しました。
別のブラウザソフトウェア、または別のマシン上のブラウザを使用して、新しいセッションを作成します。同じブラウザからの要求が何度も続いて、同じインスタンスに進みます。
これらのセッションは、クラスタの 2 つのインスタンスに分散されている必要があります。次の場所にあるサーバーアクセスログファイルを調べれば確認できます。
Solaris Java Enterprise System インストールの場合
/var/opt/SUNWappserver/nodeagents/nodeagent_name /instance1/logs/access/server_access_log
/var/opt/SUNWappserver/nodeagents/nodeagent_name /instance2/logs/access/server_access_log
Linux Java Enterprise System インストールの場合
/var/opt/sun/appserver/nodeagents/ nodeagent_name/instance1/logs/access/server_access_log
/var/opt/sun/appserver/nodeagents/ nodeagent_name/instance2/logs/access/server_access_log
Windows Java Enterprise System インストールの場合
as-install \nodeagents\nodeagent_name \instance1\logs\access\server_access_log
as-install\nodeagents\nodeagent_name \instance1\logs\access\server_access_log
スタンドアロンの Enterprise Server インストールの場合
as-install /nodeagents/nodeagent_name/instance1/logs/access/server_access_log
as-install/nodeagents/nodeagent_name /instance2/logs/access/server_access_log
HttpSession に格納する名前と値のペア (Name=Name Value=Duke) を追加します。
「セッションデータに追加」ボタンをクリックします。
セッションデータが追加されたかどうかを確認します。
GlassFish v2 は HADB を提供していません。高可用性とフェイルオーバーのために、GlassFish ではインメモリーレプリケーション機能が提供されています。この機能を実行するための手順を次に示します。
アプリケーションを配備する前にロードバランサプラグインをインストールした Web サーバーを再起動します。これによって、loadbalancer.xml ファイルに設定されている順序で、インスタンスによって要求が処理されます。この章で提供される loadbalancer.xml ファイルを使用する場合、instance1 が最初の要求を処理します。
すでに clusterjsp Web アプリケーションが配備済みなので、ここにセッションデータが格納されます。最初の要求を処理したのと同じインスタンスによって後続の要求が処理され、セッションデータが要求間で維持されていることを確認できるようにする必要があります。
いくつか要求を送信し、これらの要求を処理したインスタンスをメモしてから、その特定のインスタンスをシャットダウンします。インスタンスを停止するには次のコマンドを使用します。 asadmin stop-instance --user adminuser --password adminpassword instance1
次の要求を送信し、新しいデータが格納されていることと、これまでに追加されたデータもまだセッション内に存在することを確認します。要求を処理するサーバーのどれかが使用できない場合は、同じクラスタ内の別のサーバーが、それ以前のすべてのセッションとともにその要求を引き継ぎ、要求を完了させます。