8.3. アプリケーションスタビリティエージェント(ASA)

ASA は、単純なサービスチェックを実行するプログラム、またはスクリプトです。ASA は ATM で稼動し、各サービスノードのサービスポートに接続します。これらは、サービスが正常に実行されることを検証するために単純なトランザクションを実行します。これらのチェックがないと、ATM はサービスノードが応答不可能なときであっても、そのノードにサービス要求を送信してしまいます。

他のいくつかのクラスタリングソリューションは、完全な機能のエージェントを搭載していません。代わりに、単に ping を実行して、サービスポートがコネクションを作成できるかどうかだけをチェックします。Turbolinux Cluster LoadBalancer 11 における ASA の利点は、サービスがポートコネクションに応答できることを検証するだけでなく、ポートにアタッチされたサービスが要求に応答できるかどうかも検証することです。

ASA は、プライマリ ATM で稼動します。これらは構成ファイルの UserCheck セクションおよび tlclbconfig の[クラスタ化されたサービス]→[アプリケーションスタビリティエージェント(ASA)]で定義されます。ASA は、サーバーグループの設定項目にある[サービスのチェック]の[間隔(秒)]で指定された頻度で、定期的に呼び出されます。ASA は、[サービスのチェック]の[タイムアウト]で指定された秒数内に応答を受け取らなかった場合、サービスは停止したと見なされます。構成ファイルでは、ServerPool セクションの CheckPortFrequency および CheckPortTimeout で定義されます。

ATM が ASA を呼び出すとき、いくつかの引数がエージェントに渡されます。最初の引数は、チェックするサービスノードの IP アドレスです。2 番めの引数は、チェックするポート番号です。最後の引数は、サービスが UDP ポートまたは TCP ポートのどちらで実行されているかを指定します。それが TCP サービスの場合、最後の引数は 1 で、UDP の場合は 2 が渡されます。エージェントプログラムは、この情報を使用して指定されたサービスノードのサービスに接続します。ASA はサービスが起動していることを見つけると 0 を返し、それ以外の場合は 1 を返します。

サービスが停止していると判断された場合、そのノードは ip_cs モジュールのテーブルから一時的に削除されます。また、サービスが停止したときに別のスクリプトを実行させることが可能です。このスクリプトは 、tlclbconfig の[クラスタ化されたサービス]→[アプリケーションスタビリティエージェント(ASA)]にある[終了時に発生させるイベント]で定義します。構成ファイルでは、UserCheck セクションの Down で定義されます。これらの Up および Down スクリプトは、ASA と同じ引数で呼び出されます。

Down スクリプトは、サービスの再起動をするときに便利です。Down スクリプトは ATM で実行されますが、停止したサービスを持つサービスノードのサーバー名を引数で渡します。したがって、スクリプトはある別の方法を使ってサーバーに接続し、そのサービスを起動するために、このサーバー名を使用できます。そのようなスクリプトを開発するときは、リモートでコマンドを実行できる ssh を使用すると便利です。Up や Down スクリプトを使用する別の可能性としては、フェイルオーバーのための I/O フェンシングです。I/O フェンシングは、指定した時間にシステムの 1 つだけが共有リソースをアクセスすることを保証するのに使用します。

ASA チェックは、/var/log/clusterserverd.log ログファイルでモニタできます。チェックには、「info 021」というプレフィックスが付きます。サービスが起動されると、「info 007」メッセージがログされ、サーバー名とポート番号が提供されます。サービスが停止すると、「info 009」メッセージがログされます。以下は、いくつかの ASA チェックを示すログの例です。

08/06 10:12:01 info 021 Checking cluster1.tl.usa service node1.tl.usa:80 (pid 143)

08/06 10:12:05 info 007 Service node1.tl.usa:80 is up

08/06 10:21:41 info 009 Service node1.tl.usa:80 is down

以下の ASA が、Turbolinux Cluster LoadBalancer 11 に搭載されています。

これらのエージェントは実行プログラムとして構築されていますが、簡単にシェルスクリプトまたは Perl スクリプトとして記述できます。これらの各エージェントの詳細については、man ページを参照してください。man ページは、CMC ホームページからも参照できます。

注意すべき点として説明する必要があるのは、httpsAgent の指定方法です。httpsAgent を定義する方法が他のエージェントと多少異なります。httpsAgent を指定する場合は、パラメータに timeout 値を指定する必要があります。例えば、tlclbconfig の[クラスタ化されたサービス]→[アプリケーションスタビリティエージェント(ASA)]の[チェック方法]には、「/usr/bin/httpsAgent 15」のように指定します。構成ファイルでは、UserCheck セクションに、次のように定義されます。

Example
UserCheck
check /usr/bin/httpsAgent 15
EndServices

注意

httpsAgent の timeout パラメータに負数、もしくはゼロを指定すると httpsAgent は永遠にサービスからのレスポンスを待つことになってしまいますので注意してください。