| |
| Sun Java System Application Server Enterprise Edition 7 2004Q2 入門ガイド | |
第 3 章
エンタープライズ機能の設定のチュートリアルこの章では、Sun Java System Application Server 7, Enterprise Edition 環境のセットアップと使用方法に関する、一連のチュートリアルを記載しています。この章には次の節があります。
チュートリアルを使用する準備このマニュアルでは、クラスタ環境のセットアップ、その環境へのアプリケーションの配備、アプリケーションを使用したロードバランスと HTTP セッション持続性の機能のテスト手順について説明しています。このマニュアルには 2 つのチュートリアルがあります。「エンタープライズ機能の設定のチュートリアル」ではクラスタとロードバランサの設定について説明しています。「クラスタ JSP サンプルアプリケーションのチュートリアル」では、アプリケーションの配備と、ロードバランスとセッション持続性の機能の確認について説明しています。
この節には次の項目があります。
インストールの要件
ここで例示しているインストールの設定は、このチュートリアルで使用するための、基本的な単一マシンの構成です。この設定は、必ずしも、実務の環境に適切なものではないかもしれません。Sun Java System Application Server の導入に先立ち、実際の要求事項について、慎重な検討が必要です。推奨される設定の詳細については、『Sun Java System Application Server System Deployment Guide』を参照してください。
このマニュアルに記載されているチュートリアルを実行するために、次の基本設定を使います。
チュートリアルを使用する前の必要な手順
チュートリアルを始める前に、次の手順をすべて行なっておく必要があります。
チュートリアルの手順の概要次の表には、チュートリアル内で必要となる、システム設定やアプリケーションの配備、Enterprise Edition の独自の機能の確認について、手順の概要を記載しています。左側の列には手順を示し、右側の列には該当の手順を実行するために必要な情報の参照先を示しています。
サーバーの起動このマニュアルのチュートリアルを使用するには、クラスタ内の管理サーバーとすべてのアプリケーションサーバーインスタンスを起動する必要があります。Sun Java System Web Server も稼働させる必要があります。
すべてのサーバーインスタンスと管理サーバーが 1 つのドメイン内にあるときに管理サーバーとアプリケーションサーバーインスタンスを起動するもっとも簡単な方法は、asadmin ユーティリティの start-domain コマンドを使うことです。
この節には次の項目があります。
PATH 変数の設定
asadmin の実行に先立ち、簡単に使用できるように、PATH 変数を設定します。
PATH 変数を設定すれば、asadmin、cladmin、および asant (アプリケーションサーバーの Ant ユーティリティ) を、どこからでもコマンド行で実行できます。PATH 環境変数に次のディレクトリを追加します。
Application Server の bin ディレクトリをログインプロファイルに追加すると、環境の PATH 設定がログイン時に自動的に追加されます。
たとえば、.cshrc ファイルに次のように追加します。
set path=( /opt/SUNWAppserver7/bin)
ファイルを保存し、source コマンドを使用して設定を有効にします。
source .cshrc
コマンドプロンプトで asadmin ユーティリティを実行することで、変更内容をテストできます。次のように入力します。
asadmin
実行結果が、次のように表示されます。
終了するには「exit」を使用し、オンラインヘルプを表示するには「help」を使用しま す。
asadmin>
exit と入力して、asadmin インタフェースを終了します。
コマンドが見つからない場合は、次のようにします。
PATH 環境変数を設定しない場合でも、コマンドとユーティリティが置かれているディレクトリ (install_dir/bin) からそれらを実行できます。たとえば、次のようにします。
cd /opt/SUNWappserver7/bin
./asadmin
asadmin start-domain の実行
管理サーバーとすべてのアプリケーションサーバーインスタンスを起動するには、asadmin start-domain コマンドを実行します。コマンドプロンプトに次のように入力します。
asadmin start-domain --domain domain1
domain1 は、サーバーをインストールして clsetup コマンドを実行したときに設定されたデフォルトのドメインです。
注
このマニュアルで示している設定では、すべてのインスタンスが同じドメイン内にあります。サーバーインスタンスが同じドメイン内にない場合は、使用するドメインごとに asadmin start-domain を実行する必要があります。いったんクラスタを作成したら、cladmin start-instance を使ってクラスタ内のすべてのインスタンスを起動することもできます。cladmin 構文については、「cladmin コマンドの構文」を参照してください。
次のコマンドを使って、最初に設定したドメインの管理サーバーとアプリケーションサーバーインスタンスを両方とも停止します。
asadmin stop-domain --domain domain1
domain1 は、アプリケーションサーバーのインストール時に定義された管理ドメインの名前です。
すべての asadmin コマンドの完全なリストは、asadmin のヘルプを参照してください。ヘルプを表示するには、コマンドプロンプトに次のように入力します。
asadmin
PATH 変数が正しく設定されている場合、プロンプトが「asadmin」に変わります。ここで help と入力すると、asadmin のコマンドの一覧が表示されます。また、asadmin の特定のコマンドのヘルプを表示するには、「asadmin」のプロンプトから、次のように、コマンドに help オプションを付けて入力します。次に例を示します。
asadmin> start-domain --help
サーバーの起動の確認管理サーバーとアプリケーションサーバーインスタンスを起動したら、起動が正常であることを確認します。具体的な手順については、次に示す節で説明します。
管理サーバーの起動の確認
次の項目で説明するように、Sun Java System Application Server の管理インタフェースにアクセスするか、管理サーバーのイベントログを確認することによって、管理サーバーが起動したことを確認できます。
管理インタフェースへのアクセス
Sun Java System Application Server の Web ベースの管理インタフェースにアクセスして、管理サーバーが正常に起動したことを確認できます。このインタフェースを使って、Sun Java System Application サーバーインスタンスを管理できます。ただし、クラスタ化されたインスタンスの場合は cladmin コマンドを使うほうが便利で、エラーが発生しにくくなります。
管理インタフェースにアクセスするには、次の手順に従います。
- ブラウザウィンドウを開き、管理サーバーのポートを指定します。
インストール時に管理サーバーのデフォルトのポート番号は 4848 に指定されます。インストール時にこのポートが使用中か、別のポート番号を選択した場合は、そのポート番号を指定します。
次に例を示します。
http://test.sun.com:4848
- 製品のインストール時に指定した管理ユーザー名およびパスワードを使って管理インタフェースにサインインします。
ヒント
ポートにアクセスできない場合 : 管理サーバーの管理インタフェースに接続しようとしても拒否される場合は、管理サーバーが稼働していない可能性があります。起動手順と管理サーバーのログファイルの内容をチェックして、サーバーが稼働していない理由を確認してください。ログファイルの表示方法については、「管理サーバーのイベントログの表示」を参照してください。
管理サーバーのイベントログの表示
管理サーバーのイベントログでサーバーの起動メッセージを表示することもできます。イベントログファイルを開いて表示するには、次の手順に従います。
tail -f コマンドを使ってサーバーログを表示することもできます。
tail -f server.log
-f オプションにより tail コマンドの実行が保持されるため、新しいログエントリはファイルに書き込まれたとおりに表示されます。
管理インタフェースから、管理サーバーとアプリケーションサーバーインスタンスのイベントログファイルにアクセスすることもできます。左側の区画でサーバー名 (管理サーバーまたはアプリケーションサーバーインスタンス) をクリックし、右側の区画で「ログ」タブをクリックします。
詳細は、『Sun Java System Application Server Administration Guide』を参照してください。
サーバーインスタンスの起動の確認
clsetup を実行したあとは、domain1 に server1 と server2 という 2 つのサーバーインスタンスがあるはずです。この節では、これらのインスタンスが存在することと、稼働していることを確認する方法について説明します。
asadmin を使ったインスタンスの確認
確認には asadmin list-instances コマンドを使います。
HTTP サーバーへのアクセスによるインスタンスの確認
アプリケーションサーバーインスタンスが起動したかどうかを確認するもう 1 つの方法は、Web ブラウザからインスタンスの HTTP サーバーのトップページにアクセスすることです。
ブラウザで次の URL にアクセスします。
http://server_instance:server_instance_port_number
server_instance_port_number は、インストール時またはサーバーインスタンスの作成時に指定した HTTP サーバーのポート番号です。
アプリケーションサーバーのインスタンスが正常に稼働している状態では、HTTP サーバーのデフォルトのトップページがブラウザに表示されます。
loadbalancer.xml ファイルの作成コンポーネントのインストールと clseup の実行が完了し、管理サーバーを起動したら、インストール設定の準備が完了したことになります。設定の最初の手順は、クラスタの作成です。
このマニュアルのクラスタの設定では 1 つのロードバランサプラグインを使用するため、Web Server の loadbalancer.xml 設定ファイルでクラスタを定義する必要があります。このファイルは、Web Server の設定ファイルディレクトリにあります。loadbalancer.xml ファイルはデフォルトでは存在しません。このファイルは作成する必要があります。
loadbalancer.xml ファイルを作成するには、次の手順に従います。
loadbalancer.xml ファイルの例は、コード例 3-1 に記載されています。
コード例 3-1 loadbalancer.xml.example ファイル
<!DOCTYPE loadbalancer PUBLIC "-//Sun Microsystems Inc.//DTD Sun ONE Application Server 7.0//EN" "sun-loadbalancer_1_1.dtd">
<loadbalancer>
<cluster name="cluster1">
<instance name="instance1" enabled="true" disable-timeout-in-minutes="60" listeners="<REPLACE_WITH_LISTENER1> <REPLACE_WITH_LISTENER2>"/>
<web-module context-root="/abc" enabled="true" disable-timeout-in-minutes="60" enabled="true" />
<health-checker url="/" interval-in-seconds="10" timeout-in-seconds="30" />
</cluster>
<property name="reload-poll-interval-in-seconds" value="60"/>
<property name="response-timeout-in-seconds" value="30"/>
<property name="https-routing" value="true"/>
<property name="require-monitor-data" value="false"/>
</loadbalancer>
サンプルファイルは sun-loadbalancer_1_1.dtd を指し、Web Server の config ディレクトリにもあります。
loadbalancer.xml ファイルへのクラスタの追加次に、クラスタ (このチュートリアルでは cluster1) を loadbalancer.xml ファイルに追加します。このクラスタには、2 つの Sun Java System Application Server またはサーバーインスタンスがあります。
新たに作成した loadbalancer.xml を編集して、インスタンスと URL を HTTP リスナーに組み込みます。
- Web サーバーの config ディレクトリに移動し、loadbalancer.xml をテキストエディタで開きます。
サンプルファイルには、cluster1 というクラスタがあらかじめ組み込まれています。
<cluster name=cluster1>
- clsetup を使って作成した 2 つのアプリケーションサーバーインスタンス (server1 と server2) を cluster1 に追加します。
インスタンスのそれぞれに対して、クラスタのインスタンスのサブ要素を作成します。インスタンスは有効 (true) にする必要があります。また、URL を HTTP リスナーに追加することも必要です。デフォルトのサーバーインスタンス (server1) と、追加した 2 番目のサーバーインスタンス (server2) の場合、それぞれのインスタンスには HTTP リスナーが 1 つあります。別の環境ではもっと多い場合があります。
サンプルの loadbalancer.xml ファイルには、編集可能な次の行があります。
<instance name="instance1" enabled="true" disable-timeout-in-minutes="60" listeners="<REPLACE_WITH_LISTENER1> <REPLACE_WITH_LISTENER2>"/>
- このチュートリアルでは、「instance1」を「server1」と置き換えます。
- <REPLACE_WITH_LISTENER1> を、次のようなサーバーインスタンスのリスナー URL と置き換えます。
http://test.sun.com:81
リスナー URL は、サーバー名とポートで構成されます。リスナーのセキュリティが有効になっている場合、URL は HTTPS で始まります。リスナーがセキュリティ保護されていない場合、URL は HTTP で始まります。Sun Java System Application Server の各インスタンスの HTTP リスナーに関する情報を検索するには、次のようにします。
- 変更を loadbalancer.xml に保存します。この時点で、ファイルには次のような行があります。
<instance name="server1" enabled="true" disable-timeout-in-minutes="60" listeners="http://test.sun.com:81"/>
- disable-timeout-in-minutes の値を 5 に変更します。
disable timeout in minutes はインスタンスレベルの休止時間です。この間に、サーバーインスタンスのために終了するセッション時間をみておきます。サーバーは稼働を続けますが、新しいセッションになるような要求は送信されません。ただし、サーバーは既存のセッションに対する要求は受け入れます。実際には、この数はかなり大きくなることがあります。例で指定した時間は 60 分です。ただし、このチュートリアルではサーバーをシャットダウンする必要があるため、タイムアウトは短く設定してください。
<instance name="server1" enabled="true" disable-timeout-in-minutes="5" listeners="http://test.sun.com:81"/>
- 2 番目のインスタンスをクラスタ要素に追加します。これは、上記の行をコピーして既存の行の下に貼り付けてから、サーバー名とリスナー URL を変更することによって実行できます。次に例を示します。
<instance name="server2" enabled="true" disable-timeout-in-minutes="5" listeners="http://test.sun.com:82"/>
- 変更を保存します。
この時点で、loadbalancer.xml ファイルは次のようになっているはずです。
<!DOCTYPE loadbalancer PUBLIC "-//Sun Microsystems Inc.//DTD Sun ONE Application Server 7.0//EN" "sun-loadbalancer_1_1.dtd">
<loadbalancer>
<cluster name="cluster1">
<instance name="server1" enabled="true" disable-timeout-in-minutes="5" listeners="http://test.sun.com:81"/>
<instance name="server2" enabled="true" disable-timeout-in-minutes="5" listeners="http://test.sun.com:82"/>
<web-module context-root="/abc" enabled="true" disable-timeout-in-minutes="60" enabled="true" />
<health-checker url="/" interval-in-seconds="10" timeout-in-seconds="30" />
</cluster>
<property name="reload-poll-interval-in-seconds" value="60"/>
<property name="response-timeout-in-seconds" value="30"/>
<property name="https-routing" value="true"/>
<property name="require-monitor-data" value="false"/>
</loadbalancer>
後述の手順で、配備したアプリケーションに関連する情報 (サンプルでは「web-module」で始まる行) を追加します。
ロードバランスの設定loadbalancer.xml ファイルを作成し、クラスタを追加したら、loadbalancer.xml ファイルを編集してロードバランサ設定を組み込みます。
この節には次の項目があります。
ヘルスチェッカーの設定
ヘルスチェッカーが有効な場合、ロードバランサは、ダウンしているというフラグが立てられたすべての Sun Java System Application Server インスタンスを定期的にチェックして、稼働したかどうかを確認します。ダウンしているとマークされたアプリケーションサーバーインスタンスが稼働すると、そのインスタンスは稼働インスタンスのリストに追加され、要求がもう一度配信されます。
ヘルスチェッカーは、loadbalancer.xml の health-checker 要素で設定します。ヘルスチェッカーで ping してサーバーが稼働しているかどうかを確認するリスナー URL と、ヘルスチェッカーでサーバーを ping する頻度、サーバーがダウンしているとマークするまでにヘルスチェッカーが応答を待機する時間を設定します。
サンプルの loadbalancer.xml ファイルには次の行が組み込まれています。このマニュアルで説明しているタスクを完了させるためには、編集は必要ありません。
- health-checker url は、サーバーインスタンスが稼働しているかどうか (つまり、応答するかどうか) を ping で確認する URL を指定します。例では "/" の URL です。たとえば、リスナー URL が http://www.example.com:80 の場合、"/" のヘルスチェッカー URL は http://www.example.com:80/ を ping します。このマニュアルの目的のために、この値は "/" のままにします。
- interval-in-seconds 属性は、ロードバランサのヘルスチェックの時間間隔を指定します。この値はデフォルトの 10 から変更する必要はありません。
- timeout-in-seconds 属性は、サーバーインスタンスが稼働しているとみなすために、ロードバランサが ping されたサーバーインスタンスから応答を受け取る必要がある時間間隔を指定します。この値はデフォルトの 30 から変更する必要はありません。
たとえば、デフォルト値を使うと、ヘルスチェッカーの動作は次のようになります。
- ヘルスチェッカーは、ヘルスチェッカー URL を使ってダウンしているリスナーを ping します。
- リスナーごとに、応答を 30 秒間 (timeout-in-seconds) 待機します。
サーバーが 30 秒以内に応答すると、リスナーに稼働しているというマークが付けられます。サーバーが応答しないと、ヘルスチェッカーはサーバーがまだダウンしているとみなします。
- ヘルスチェッカーは、ヘルスチェックの次のサイクルが始まるまで、10 秒間 (interval-in-seconds) 待機します。
ヘルスチェッカーが起動したときにダウンしているインスタンスがない場合は、最初の 2 つの手順がスキップされます。
ロードバランサの監視の有効化
ロードバランサプラグインは、Web Server のログメカニズムを使ってログメッセージを書き込みます。監視が有効になっている場合は、Web Server のログファイルに次の情報が記録されます。
- 各要求の開始と停止の情報
- 要求がダウンしているインスタンスから稼働しているインスタンスに引き継がれたときのフェイルオーバー要求情報
- ヘルスチェッカーの各サイクルの最後に記録される、ダウンしているインスタンスのリスト
ロードバランスを監視するには、次のことを行う必要があります。
loadbalancer.xml で監視を有効にするには、次の手順に従います。
さらに、Web Server のデフォルトのログレベルを変更するには、次の手順に従います。
Sun Java System Web Server の詳細ログを有効にする場合
ロードバランサのその他のプロパティ
例の loadbalancer.xml には、次のような追加のロードバランサプロパティが含まれています。
<property name="reload-poll-interval-in-seconds" value="60"/>
<property name="response-timeout-in-seconds" value="30"/>
<property name="https-routing" value="true"/>
このチュートリアルでは、デフォルト値を変更する必要はありません。これらのプロパティの詳細については、次の節を参照してください。
再読み込みのポーリング間隔を使った動的再設定
初期設定のあと、ロードバランサプラグインはその設定に対する変更を検出し、それを自動的に読み込みます。変更は、loadbalancer.xml ファイルのタイムスタンプを調べることによって検出されます。タイムスタンプが変更された場合、ロードバランサは自動的に再設定されます。再読み込みのポーリング間隔では、ロードバランサがタイムスタンプをチェックする頻度を指定します。
応答タイムアウト
応答タイムアウトは、サーバーが要求に応答するためにインスタンスを待機する時間を指定します。指定した秒数の間、インスタンスが応答しなかった場合、その秒数の経過後にブラウザにエラーメッセージが送信されます。
HTTPS ルーティング
HTTPS ルーティングが無効になっているとき、loadbalancer.xml ファイルのリストに指定されている HTTPS リスナーは無視され、ロードバランスには HTTP リスナーのみが使用されます。HTTPS ルーティングが有効になっているとき、HTTPS 要求は HTTPS ポートのみに引き継がれます。
loadbalancer.xml ファイルのサンプル次のサンプルの loadbalancer.xml ファイルには、2 つのインスタンスの 1 つのクラスタが含まれています。loadbalancer.xml ファイルの構文をこの例と照らし合わせてチェックしてください。
コード例 3-2 loadbalancer.xml ファイル
<!DOCTYPE loadbalancer PUBLIC "-//Sun Microsystems Inc.//DTD Sun ONE Application Server 7.0//EN" "sun-loadbalancer_1_1.dtd">
<loadbalancer>
<cluster name="cluster1">
<instance name="server1" enabled="true" disable-timeout-in-minutes="5"
listeners="http://test.sun.com:81"/>
<instance name="server2" enabled="true" disable-timeout-in-minutes="5"
listeners="http://test.sun.com:82"/>
<web-module context-root="/abc" enabled="true" disable-timeout-in-minutes="60" enabled="true" />
<health-checker url="/" interval-in-seconds="10" timeout-in-seconds="30" />
</cluster>
<property name="reload-poll-interval-in-seconds" value="60"/>
<property name="response-timeout-in-seconds" value="30"/>
<property name="https-routing" value="true"/>
<property name="require-monitor-data" value="true"/>
</loadbalancer>
これでエンタープライズ機能の設定が完了したので、サンプルアプリケーションを配備して実行することができます。第 4 章「クラスタ JSP サンプルアプリケーションのチュートリアル」に進んでください。