Sun Cluster 2.2 API 開発ガイド

キープアライブの使用

クライアントサーバー通信が TCP ストリームを使用する場合、クライアントとサーバーは両方とも TCP キープアライブ機構を有効にしなければなりません。これは、非高可用性の単一サーバーの場合でも適用されます。


注 -

他にも、キープアライブ機構を持つ接続指向の製品があります。


サーバー側で TCP キープアライブを有効にしておくと、サーバーはダウン時の (または、ネットワークで分割された) クライアントのリソースを浪費しません。(長時間稼働するようなサーバーで) このようなリソースがクリーンアップされない場合、浪費されたリソースが無制限に大きくなり、最終的にはクライアントに障害が発生して再起動します。

クライアント側で TCP キープアライブを有効にしておくと、ある物理ホストから別の物理ホストに論理ホストがフェイルオーバーまたはスイッチオーバーしたとき、(接続の切断が) クライアントに通知されます。論理ホストが移動すると、TCP 接続が切断されるためです。しかし、クライアント側で TCP キープアライブを有効にしておかなければ、接続が休止したとき、必ずしも接続の切断はクライアントに通知されません。

たとえば、長時間かかる要求に対するサーバーからの応答をクライアントが待っていると仮定します。このような状況では、クライアントの要求メッセージはすでにサーバーに到達しており、TCP 層で認識されています。したがって、クライアントの TCP モジュールは要求メッセージを再転送し続ける必要はありません。このとき、クライアントアプリケーションは要求に対する応答を待ち続けるため、ブロックされます。

TCP キープアライブ機構は必ずしもすべての場合に完全ではないため、クライアントアプリケーションは、可能であれば、TCP キープアライブ機構に加えて、独自の定期的なキープアライブをアプリケーションレベルで行うべきです。通常、アプリケーションレベルのキープアライブでは、クライアントサーバープロトコルがヌル操作、あるいは少なくとも効果的な読み取り専用操作 (状態操作など) をサポートすることが必要です。