![]() | |
Sun Java System Application Server Enterprise Edition 8.1 2005Q1 |
高可用性フェイルオーバーの設定
前の章で使用した設定では、サーバーインスタンスがダウンした場合、ユーザーはセッション状態を失います。ここでは、2 つの高度なトピックの 2 番目のものとして、高可用性データベース (HADB) のインストール、高可用性クラスタの作成、および HTTP セッション持続性のテストの手順について説明します。
Application Server は、HTTP セッション持続性とステートフルセッション Bean の持続性の両方をサポートしています。この章で示す手順では、HTTP セッション持続性を取り扱います。
次の手順では、すでにこの『クイックスタートガイド』の前の項に記載されている手順を実行済みであると仮定しています。手順は、それらを完了させるために必要な順序で示されます。
高可用性クラスタと HADB についてSun Java System Application Server Enterprise Edition の高可用性クラスタは、状態の複製サービスを以前に作成したクラスタおよびロードバランサと統合し、その結果 HTTP セッションのフェイルオーバーが有効になります。
HttpSession オブジェクトとステートフルセッション Bean の状態は、HADB に格納されます。HADB は、セッション状態を格納するための高可用性データベースです。この水平的で拡張可能な状態管理サービスは、アプリケーションサーバー層とは無関係に管理できます。これは、ロードバランス、フェイルオーバー、および状態復元機能を含む、最大 99.999% のサービスとデータ可用性をサポートするように設計されています。
状態管理機能を Application Server から分離させておくことには、大きな利点があります。Application Server インスタンスは、状態複製を外部の高可用性状態サービスに委譲する、スケーラブルで高性能な JavaTM 2 Platform, Enterprise Edition (J2EETM platform) コンテナとして実行することで、そのサイクルを費やします。この疎結合アーキテクチャーのため、アプリケーションサーバーインスタンスはクラスタとの間で簡単に追加または削除することができます。HADB 状態複製サービスは、最適な可用性とパフォーマンスのために、単独で拡大縮小することができます。アプリケーションサーバーインスタンスも複製を行うと、J2EE アプリケーションのパフォーマンスが低下し、ガベージコレクションによる一時停止の時間が長くなる場合があります。
各 HADB ノードは 512M バイトのメモリーを必要とするため、同じマシン上で 2 つの HADB ノードを実行するには、1G バイトのメモリーが必要です。メモリーが少ない場合は、各ノードを別のマシン上に設定してください。耐障害性がないため、配備の際に 1 台のホストのみで 2 ノードのデータベースを実行することはお勧めできません。
HADB インストール前の手順この手順は、最も一般的なインストール前のタスクを取り扱います。HADB のインストール、ネットワーク冗長性の設定、ファイルシステムのサポートなどのその他のインストール前のトピックの詳細については、『High Availability Administration Guide』を参照してください。
- root ユーザーとしてアクセスします。
- 共有メモリーに関連する変数を定義します。
Solaris の場合
- /etc/system ファイルに次の行を追加します。次の行がコメントとしてファイル内にある場合は、それらのコメントを解除し、値が次の値と一致していることを確認します。
set shmsys:shminfo_shmmax=0x80000000
set shmsys:shminfo_shmseg=20
set semsys:seminfo_semmni=16
set semsys:seminfo_semmns=128
set semsys:seminfo_semmnu=1000
システムのメモリー合計に shminfo_shmmax を設定します。上に示されている値 0x80000000 は、2G バイトのメモリーの場合の 16 進表記です。
seminfo_* 変数がすでに定義されている場合は、示されている容量でそれらを増分します。
- 次のコマンドを使用して再起動します。
sync; sync; reboot
Linux の場合
- /etc/sysctl.conf ファイルに次の行を追加します。次の行がコメントとしてファイル内にある場合は、それらのコメントを解除します。マシン上の物理メモリー量に値を設定します。値は 10 進数のバイトとして指定します。たとえば、512M バイトの物理メモリーがあるマシンの場合は、次のように指定します。
kernel.shmmax=536870912
kernel.shmall=536870912
- 次のコマンドを使用して再起動します。
sync; sync; reboot
- スタンドアロンの Application Server をインストールしたときに既存の JDK ソフトウェアを使用した場合、HADB は Sun JDK 1.4.1_03 以上を必要とします。JDK バージョンの最新情報については、『リリースノート』を参照してください。インストールされているバージョンをチェックし、まだ行っていない場合は、JDK がインストールされているディレクトリに JAVA_HOME 環境変数を設定します。
- 再起動後、必要に応じてドメイン、Web Server、およびノードエージェントを再起動します。
ドメインを再起動するには、asadmin start-domain domain1 コマンドを使用します。
Web Server を再起動するには、web_server_install_dir/https-hostname/start コマンドを使用します。
ノードエージェントを再起動するには、asadmin start-node-agent hostname コマンドを使用します。hostname 変数を、Application Server を実行するホスト名に置き換えます。
HADB のインストールここでは、高可用性データベース (HADB) のインストールの手順を説明します。
注
高可用性データベースを Application Server マシンで実行する予定の場合、および Application Server をインストールしたときに HADB をインストールした場合は、「HADB の起動」に進んでください。
2G バイトのメモリーと 1 〜 2 個の CPU を持つマシンがある場合には、HADB コンポーネントを Application Server システムと同じマシン上にインストールできます。それ以外の場合は、追加のハードウェアを使用します。たとえば、次のように表示されます。
HADB をインストールするには、次の手順を実行します。
HADB の起動ここでは、ma-initd スクリプトの実行による、HADB 管理エージェントの起動について説明します。本番稼働の配備の場合は、管理エージェントをサービスとして起動して、その可用性を確実にします。詳細については、『High Availability Administration Guide』を参照してください。
複数のホスト上で HADB ノードを含むデータベースを起動する場合は、それぞれのホスト上の管理エージェントを起動します。
Java Enterprise System インストールの場合
スタンドアロンの Application Server インストールの場合
高可用性のためのクラスタおよびアプリケーションの設定
- ドメイン管理サーバーが稼働中のマシンから、次のコマンドを使用して、HADB を使用するよう FirstCluster を設定します。
asadmin configure-ha-cluster --hosts hadb_hostname,hadb_hostname --devicesize 256 FirstCluster
hadb_hostname 変数を、HADB を実行するマシンのホスト名と置き換えます。マシンを 1 台だけ使用する場合は、そのマシンに名前を 2 回付ける必要があります。
この単純な例では、同じマシン上で HADB の 2 つのノードを実行します。本番設定では、複数のマシンを使用します。
- 高可用性を有効にすることで、HTTP セッション持続性のための clusterjsp アプリケーションを設定します。
クラスタの再起動クラスタを再起動するには、次の手順を実行します。
HTTP セッションフェイルオーバーの検証セッションデータのフェイルオーバーをテストする手順は、「ロードバランスの検証」のトピックに記載されているロードバランスのテストの手順と同じです。ここでは、セッションデータは障害のあと保持されます。サンプルアプリケーションは障害が発生した後に自動的に再試行するように設定されているため、フェイルオーバーはユーザーには透過的に行われます。
- 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 ID: 41880f618e4593e14fb5d0ac434b1
- Session Created: Wed Feb 23 15:23:18 PST 2005
サーバーアクセスログファイルを表示して、アプリケーションを処理しているアプリケーションサーバーインスタンスを確認します。このログファイルは、次の場所にあります。
- Solaris Java Enterprise System インストールの場合
/var/opt/SUNWappserver/nodeagents/nodeagent_name/i1/logs/access/server_access_log
/var/opt/SUNWappserver/nodeagents/nodeagent_name/i2/logs/access/server_access_log- Linux Java Enterprise System インストールの場合
/var/opt/sun/appserver/nodeagents/nodeagent_name/i1/logs/access/server_access_log
/var/opt/sun/appserver/nodeagents/nodeagent_name/i2/logs/access/server_access_log- スタンドアロンの Application Server インストールの場合
install_dir/nodeagents/nodeagent_name/i1/logs/access/server_access_log
install_dir/nodeagents/nodeagent_name/i2/logs/access/server_access_log- このページを処理している Application Server インスタンスを停止します。
- clusterjsp サンプルアプリケーションページを読み込み直します。
セッション ID とセッション属性データは保持されます。
- その他の Application Server インスタンスのアクセスログをチェックし、この時点でこれが要求を処理していることに注目します。
HTTP セッションは持続的に HADB に格納されるため、状態のフェイルオーバー機能が作動します。HTTP セッション状態のほか、Application Server も EJBTM エンタープライズ Bean の状態を HADB に格納できます。
クリーンアップクリーンアップを行うには、「オプション 1: インストールした Application Server のアンインスール」で説明する手順を実行して、インストールした Application Server をアンインストールするか、または「オプション 2: サンプルクラスタの削除」で説明する手順を実行して、作成したサンプルクラスタを削除します。
オプション 1: インストールした Application Server のアンインスール
完全にアンインストールするには、次の手順に従います。
- 次のコマンドを使用して、Application Server プロセスを停止します。
asadmin stop-cluster FirstCluster
asadmin remove-ha-cluster --hosts hadb_hostname,hadb_hostname FirstCluster
hadb_hostname 変数を、HADB を実行するマシンのホスト名と置き換えます。マシンを 1 台だけ使用する場合は、そのマシンに名前を 2 回付ける必要があります。
asadmin stop-node-agent hostname
asadmin stop-domain domain1
- 次の方法のうちのいずれかで、HADB 管理エージェントを停止します。
Java Enterprise System インストールの場合
- Application Server をアンインストールします。
Java Enterprise System インストールでは、 var/sadm/prod/entsys/uninstall を実行して、アンインストールウィザードが示す手順に従います。
スタンドアロンの Application Server インストールでは、install_dir/uninstall を実行して、アンインストールウィザードが示す手順に従います。
- この実習用に新しい Web Server インスタンスを作成した場合は、次の手順で削除します。
- Web Server 製品をアンインストールするには、web_server_install_dir からアンインストールプログラムを実行します。
オプション 2: サンプルクラスタの削除
FirstCluster (サンプル用の高可用性クラスタ) と、この実習中に使用したサンプルアプリケーションだけを削除する場合は、次の手順に従います。
- 次のコマンドを使用して、Application Server プロセスを停止し、設定をクリーンアップします。
asadmin stop-cluster FirstCluster
asadmin remove-ha-cluster --hosts hadb_hostname,hadb_hostname FirstCluster
hadb_hostname 変数を、HADB を実行するマシンのホスト名と置き換えます。マシンを 1 台だけ使用する場合は、そのマシンに名前を 2 回付ける必要があります。
asadmin disable-http-lb-server FirstCluster
asadmin delete-http-lb-ref --config MyLbConfig FirstCluster
asadmin delete-http-lb-config MyLbConfig
asadmin delete-instance i1
asadmin delete-instance i2
asadmin delete-cluster FirstCluster
asadmin undeploy clusterjsp
- 次のコマンドを実行して、ロードバランサとして機能する Web サーバーインスタンスを停止します。
web_server_install_dir/https-hostname/stop
- web_server_install_dir/https-hostname/config にある loadbalancer.xml ファイルの名前を loadbalancer.xml.sav に変更します。
- 次の方法のうちのいずれかで、HADB 管理エージェントを停止します。
Java Enterprise System インストールの場合
ここでは、HADB をインストール、設定、および起動し、高可用性を使用するようクラスタとアプリケーションを設定しました。また、クリーンアップも行って、システムで他の操作を行う準備もできました。
おめでとうございます。これで、Application Server のクイックスタートの手順をすべて修了しました。
次のステップApplication Server ソフトウェアの学習や使用に活用できるリソースとして、さらに次のものがあります。