コンフィグレーション ガイド

     前  次    新しいウィンドウで目次を開く     
コンテンツの開始位置

物理的なネットワーク障害に対するフェイルオーバ パフォーマンスの向上

以下の節では、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 による障害検出

WlssEchoServer は、SIP データ層のレプリカと同じサーバ ハードウェア上で実行できる独立したプロセスです。WlssEchoServer の目的は、たとえばネットワーク ケーブルが切断された場合に SIP データ層サーバがオフライン状態になったことを判断できるように、簡単な UDP エコー サービスをエンジン層ノードに提供することです。WlssEchoServer を使って障害を検出するためのアルゴリズムは次のようなものです。

  1. 通常のすべてのトラフィックについては、エンジン層サーバは TCP を使用して SIP データ層のレプリカと通信します。WlssEchoServer を使用しているかどうかにかかわらず、エンジン層と SIP データ層の間の基本トランスポートには TCP が使用されます。
  2. エンジン層サーバは、コンフィグレーションされた各 WlssEchoServer に対し、UDP を介してハートビート メッセージを定期的に送信します。通常の運用時には、WlssEchoServer はハートビートに応答し、それによってエンジン ノードとレプリカの間の接続が確認されます。
  3. SIP データ層スタックで全面的な障害が発生した場合、またはネットワーク ケーブルが切断された場合は、ハートビート メッセージがエンジン ノードに返されません。このような場合、エンジン ノードは通常の TCP 接続タイムアウトを待たずに、レプリカをオフライン状態と見なすことができます。
  4. オフライン状態にあるサーバを特定した後、エンジン ノードは利用可能な SIP データ層のレプリカに障害を報告し、前の節で説明したように SIP データ層のビューが更新されます。

また、SIP データ層サーバが、自身のローカル WlssEchoServer プロセスが停止したことを検出すると、そのサーバは自動的に停止します。この動作により、「フェイルオーバ検出の概要」で説明したエンジン ノードによる障害の検出と報告が不要になるため、フェイルオーバの時間がさらに短縮されます。

エンジン層サーバでハートビート メカニズムをコンフィグレーションし、必要に応じてフェイルオーバ検出のパフォーマンスを向上させることができます。また、WlssEchoServer がデータ層サーバ上で使用するリスン ポートとログ ファイルをコンフィグレーションすることもできます。

障害が発生したレプリカの強制的停止

別のエンジン層サーバが特定のレプリカで交信することができない場合、エンジンは SIP データ層でオフライン サーバを報告するために、別の利用可能なレプリカにアクセスします。レプリカは、影響を受けるパーティションのビューを更新してオフラインサーバを削除します。次に更新されたビューはその後パーティションにアクセスするすべてのエンジン層サーバに配布されます。このようにビューを伝播することで、エンジン サーバのオフライン レプリカへのアクセスを防止することができます。

ビューを更新するレプリカは、オフライン レプリカに停止を求めるリクエストを 1 回のみ行ないます。これにより、ネットワーク故障のために 1 つまたは複数のエンジン サーバがアクセスできない実行中のレプリカ サーバを停止することができます。アクティブなレプリカが「オフライン」状態のレプリカに達した場合は、オフライン レプリカは停止します。

 


WlssEchoServer の要件と制約

注意 : Oracle Communications Converged Application Server のすべてのインストール環境で WlssEchoServer を使用する必要はありません。エコー サーバは、コンフィグレーションされた TCP タイムアウト間隔より速くネットワークやレプリカの障害を検出する必要がある場合にのみ有効にしてください。

WlssEchoServer を使用してレプリカの障害を検出する場合は、以下の要件と制約に注意してください。

 


SIP データ層サーバ マシンでの 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 に示すいずれかのオプションを指定できます。

表 B-1 WlssEchoServer のオプション
オプション
説明
-Dwlss.ha.echoserver.ipaddress
WlssEchoServer インスタンスには、ハートビート メッセージをリスンするための IP アドレスを指定する。IP アドレスを指定しない場合は、インスタンスは、そのサーバ マシン上で利用できるすべての IP アドレス (0.0.0.0) でリスンする。
-Dwlss.ha.echoserver.port
ハートビート メッセージをリスンするポート番号を指定する。サーバ マシンの他のプロセスが同じポート番号を使用していないことを確認する。デフォルトでは、WlssEchoServer はポート 6734 を使用する。
-Dwlss.ha.echoserver.logfile
ログ ファイルの場所と名前を指定する。デフォルトでは、ログ メッセージは ./echo_servertime.log に書き込まれる。time の単位はミリ秒。

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 に、障害検出をコンフィグレーションするためのオプションを示します。

表 B-2 WlssEchoServer のオプション
オプション
説明
-Dreplica.host.monitor.enabled
ハートビート メカニズムを有効にするには、エンジン層サーバと SIP データ層サーバの両方でこのシステム プロパティを指定する必要がある。
-Dwlss.ha.heartbeat.interval
ハートビート メッセージの間隔をミリ秒単位で指定する。デフォルトでは、ハートビート メッセージは 1,000 ミリ秒ごとに送信される。
-Dwlss.ha.heartbeat.count
ハートビート メッセージへの応答が、ここで指定した回数だけ連続して返らなかった場合、レプリカはオフライン状態と見なされる。デフォルトでは、サーバの WlssEchoServer プロセスがハートビート メッセージに 3 回応答しなかった場合、レプリカはオフライン状態と見なされる。
-Dwlss.ha.heartbeat.SoTimeout
UDP ソケットのタイムアウト値を指定する。


  ページの先頭       前  次