Sun Cluster 3.1 Data Service for Sun ONE Application Server ガイド

検証アルゴリズムと機能

Sun Cluster HA for Sun ONE Application Server の検証機能はサーバーに要求を送り、Sun ONE Application Server サーバーの状態を問い合わせます。検証機能は、次の作業を行います。

  1. Probe_timeout リソースプロパティで設定されたタイムアウト値に基づいて、Sun ONE Application Server インスタンスを検証します。

  2. ネットワークリソース構成とリソースグループの Port_list 設定によって定義された IP アドレスとポートの組に接続します。リソースに Port_list も指定されている場合、この手順は省略されます。正常に接続できた場合、検証機能は切り離されます。接続に失敗した場合は、障害が記録されます。

    大量のネットワークトラフィック、高システム負荷、構成の誤りは、問い合わせが失敗する原因になることがあります。検証対象のすべての IP アドレス/ポートの組で待ち受けるように Sun ONE Application Server サーバーを構成しなかった場合は、設定ミスになります。Sun ONE Application Server サーバーは、リソースに指定した各 IP アドレスに対し、それぞれのポートを提供する必要があります。

  3. Sun ONE Application Server サーバーに接続し、Monitor_Uri_List の各 URI に対して HTTP 要求を送り、応答を受け取ることによって、HTTP 1.1 GET チェックを実行します。

    HTTP 要求の結果は、失敗または成功のどちらかです。すべての要求に対して、Sun ONE Application Server サーバーから応答があった場合、検証機能は復帰して次の検証とスリープのサイクルを続けます。

    大量のネットワークトラフィック、高システム負荷、構成の誤りは、HTTP GET 検証が失敗する原因になることがあります。Monitor_Uri_List の URI に無効なポートまたはホスト名が含まれていた場合、Monitor_Uri_List プロパティの設定ミスになります。たとえば、アプリケーションサーバーインスタンスが論理ホスト schost-1 で待ち受けていて、URI が http://schost-2/servlet/monitor として指定されていた場合、検証機能は schost-2 に接続して /servlet/monitor を要求しようとします。

  4. Probe_timeout 内に検証機能が応答を受け取らなかった場合、履歴ログに障害が記録されます。検証機能はこの状況を Sun ONE Application Server データサービスに属す障害とみなします。Sun ONE Application Server の検証障害は、完全障害の場合もあれば、部分障害の場合もあります。

    Probe_timeout 内に検証機能が応答を受け取らなかった場合、HTTP 応答コードを調べます。応答コードが 500 (Internal Server Error) だった場合、検証は完全障害とみなされます。それ以外の応答コードはすべて無視されます。

    完全検証障害は、次のとおりです。

    • サーバーとの接続に失敗すると、次のエラーメッセージが出されます。%s はホスト名、%d はポート番号を表します。


      Failed to connect to the host <%s> and port <%d>. Receiving a response code of 500 "Internal Server Error" HTTP GET Response Code for probe of %s is 500. Failover will be in progress

    • サーバーに検証文字列を正常に送信できなかった場合は、次のエラーメッセージが出されます。最初の %s はホスト名、%d はポート番号、2 番めの %s はエラーの詳細を表します。


      Write to server failed: server %s port %d: %s.

  5. モニターは、完全障害と等しくなるまで、すなわち、Retry_interval リソースプロパティで設定された値になるまで、発生した部分障害を累積します。

    部分検証障害は、次のとおりです。

    • Probe_timeout で設定された時間が経過するまでに、切断できなかった場合は、次のエラーメッセージが出されます。最初の %d はポート番号、%s はリソース名です。


      Failed to disconnect from port %d of resource %s.

    • Probe_timeout の時間内ですべての検証手順を完了できないと、部分障害になります。

    • その他の理由でサーバーからデータを読み取ることができなかった場合は、次のエラーメッセージが出されます。%s はホスト名、%d はポート番号を表します。2 番めの %s はエラーの詳細を意味します。


      Failed to communicate with server %s port %d: %s

  6. 異常履歴に基づいて、データサービスのローカルでの再起動、またはデータサービスのフェイルオーバーのいずれかを実行します。