|
以下の節では、Oracle Communications Converged Application Server の「エコー サーバ」プロセスをコンフィグレーションし、サーバがネットワークから物理的に切断された場合の SIP データ層のフェイルオーバ パフォーマンスを向上させる方法について説明します。
プロダクション システムでは、エンジン層サーバは SIP データ層のレプリカに頻繁にアクセスし、呼状態データの取得および書き込みを行います。Oracle Communications Converged Application Server アーキテクチャでは、SIP データ層サーバの障害や切断の検出がエンジン層ノードに任されています。レプリカが利用不能となり、呼状態データにアクセスも書き込みもできなくなると、エンジンは同じパーティション内の別のレプリカに接続し、オフライン状態にあるサーバのことを報告します。レプリカは SIP データ層の現在のビューを更新し、オフライン状態にあるサーバをビューに反映させます。他のエンジンは呼状態データにアクセスしてデータを取得するときに、この更新されたビューの情報を受け取ります。
デフォルトでは、エンジン層サーバはレプリカに対する RMI 接続を使用して、レプリカで障害が発生したのか、ネットワークから切断されたのかを判断します。RMI 接続の障害を判断するために使われるアルゴリズムは、信頼性は高いものの、最終的には TCP プロトコルの再送信タイマーを利用して切断を診断します (たとえば、レプリカへのネットワーク ケーブルが外れているかどうか)。一般に、TCP の再送信タイマーは丸 1 分間以上持続するため、Oracle Communications Converged Application Server には障害を検出するための別の方法が用意されています。この方法では、切断されたレプリカをわずか数秒で診断することができます。
WlssEchoServer は、SIP データ層のレプリカと同じサーバ ハードウェア上で実行できる独立したプロセスです。WlssEchoServer の目的は、たとえばネットワーク ケーブルが切断された場合に SIP データ層サーバがオフライン状態になったことを判断できるように、簡単な UDP エコー サービスをエンジン層ノードに提供することです。WlssEchoServer を使って障害を検出するためのアルゴリズムは次のようなものです。
WlssEchoServer を使用しているかどうかにかかわらず、エンジン層と SIP データ層の間の基本トランスポートには TCP が使用されます。WlssEchoServer に対し、UDP を介してハートビート メッセージを定期的に送信します。通常の運用時には、WlssEchoServer はハートビートに応答し、それによってエンジン ノードとレプリカの間の接続が確認されます。
また、SIP データ層サーバが、自身のローカル WlssEchoServer プロセスが停止したことを検出すると、そのサーバは自動的に停止します。この動作により、「フェイルオーバ検出の概要」で説明したエンジン ノードによる障害の検出と報告が不要になるため、フェイルオーバの時間がさらに短縮されます。
エンジン層サーバでハートビート メカニズムをコンフィグレーションし、必要に応じてフェイルオーバ検出のパフォーマンスを向上させることができます。また、WlssEchoServer がデータ層サーバ上で使用するリスン ポートとログ ファイルをコンフィグレーションすることもできます。
別のエンジン層サーバが特定のレプリカで交信することができない場合、エンジンは SIP データ層でオフライン サーバを報告するために、別の利用可能なレプリカにアクセスします。レプリカは、影響を受けるパーティションのビューを更新してオフラインサーバを削除します。次に更新されたビューはその後パーティションにアクセスするすべてのエンジン層サーバに配布されます。このようにビューを伝播することで、エンジン サーバのオフライン レプリカへのアクセスを防止することができます。
ビューを更新するレプリカは、オフライン レプリカに停止を求めるリクエストを 1 回のみ行ないます。これにより、ネットワーク故障のために 1 つまたは複数のエンジン サーバがアクセスできない実行中のレプリカ サーバを停止することができます。アクティブなレプリカが「オフライン」状態のレプリカに達した場合は、オフライン レプリカは停止します。
| 注意 : | Oracle Communications Converged Application Server のすべてのインストール環境で WlssEchoServer を使用する必要はありません。エコー サーバは、コンフィグレーションされた TCP タイムアウト間隔より速くネットワークやレプリカの障害を検出する必要がある場合にのみ有効にしてください。 |
WlssEchoServer を使用してレプリカの障害を検出する場合は、以下の要件と制約に注意してください。
WlssEchoServer は、シェルまたはコマンド プロンプトから直接起動できる Java プログラムです。WlssEchoServer を起動するための基本的な構文は次のとおりです。
java -classpath WLSS_HOME/server/lib/wlss/wlssechosvr.jar options com.bea.wcp.util.WlssEchoServer
WLSS_HOME は、Oracle Communications Converged Application Server インストール環境のパスです。options には、表 B-1 に示すいずれかのオプションを指定できます。
WlssEchoServer を起動するコマンドは、各 Oracle Communications Converged Application Server の SIP データ層インスタンスの起動に使用するのと同じスクリプトで指定することをお勧めします。startManagedWebLogic.sh スクリプトを使ってエンジン層サーバまたは SIP データ層サーバのインスタンスを起動している場合は、サーバを起動する最後のコマンドの前に WlssEchoServer を起動するコマンドを追加します。たとえば、次の行を編集し、
"$JAVA_HOME/bin/java" ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} \ -Dweblogic.Name=${SERVER_NAME} \ -Dweblogic.management.username=${WLS_USER} \ -Dweblogic.management.password=${WLS_PW} \ -Dweblogic.management.server=${ADMIN_URL} \ -Djava.security.policy="${WL_HOME}/server/lib/weblogic.policy" \weblogic.Server
"$JAVA_HOME/bin/java" -classpath WLSS_HOME/server/lib/wlss/wlssechosvr.jar \
-Dwlss.ha.echoserver.ipaddress=192.168.1.4 \
-Dwlss.ha.echoserver.port=6734 com.bea.wcp.util.WlssEchoServer &
"$JAVA_HOME/bin/java" ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} \ -Dweblogic.Name=${SERVER_NAME} \ -Dweblogic.management.username=${WLS_USER} \ -Dweblogic.management.password=${WLS_PW} \ -Dweblogic.management.server=${ADMIN_URL} \ -Djava.security.policy="${WL_HOME}/server/lib/weblogic.policy" \weblogic.Server
WlssEchoServer ハートビート メカニズムを有効にするには、すべてのエンジン層サーバおよび SIP データ層サーバを起動するコマンドで -Dreplica.host.monitor.enabled JVM 引数を指定する必要があります。このオプションは、システムの管理対象サーバを起動するスクリプトに直接追加することをお勧めします。たとえば、startManagedWebLogic.sh スクリプトの次の行を編集し、
# JAVA_OPTIONS="-Dweblogic.attribute=value -Djava.attribute=value"
JAVA_OPTIONS="-Dreplica.host.monitor.enabled=true"
ハートビート メカニズムの機能をコンフィグレーションする追加の JVM オプションがいくつかあります。表 B-2 に、障害検出をコンフィグレーションするためのオプションを示します。
|