分散トランザクション処理機能 OpenTP1 解説

[目次][用語][索引][前へ][次へ]

3.2.3 OpenTP1のノード管理

OpenTP1同士の通信はTCP/IPによって実装したRPCを使用します。TCP/IPでは,通信するサーバ間でコネクションを確立した状態で通信します。

ネットワーク障害によってOpenTP1との通信ができなくなった場合,コネクション障害を検知できません。このため,そのあとに実行したRPCが障害となることがあります。このような状態を防止するためのOpenTP1の機能について説明します。

<この項の構成>
(1) 起動通知機能
(2) ノード監視機能
(3) RPC抑止リストに登録されたノードの監視機能
(4) ノード自動追加機能
(5) ノードの情報表示

(1) 起動通知機能

OpenTP1の起動時に,他ノードで起動するOpenTP1のネームサービスに対して,自ノードが起動したことを通知し,それまで接続されていたコネクションを強制的に切断します。この機能は,系切り替えをする場合などに使用します。

OpenTP1の起動を通知する場合,送信側および受信側の両方のノードでシステム共通定義のname_notifyオペランドにYを指定してください。

この機能を使用するには,送信側および受信側の両方のノードでOpenTP1のバージョンを05-02以降にする必要があります。

起動通知機能を系切り替え時に使用した場合の構成例を次の図に示します。

図3-22 起動通知機能を系切り替え時に使用した場合

[図データ]

  1. OpenTP1-Bがサーバ障害などでダウンすると系切り替えが発生します。OpenTP1-Aでは,OpenTP1-Bからの障害を検知できなくてコネクションは残留します。
  2. 系切り替えが行われ,待機系でOpenTP1-Cが開始されます。
  3. 起動通知機能を使用した場合,OpenTP1-Cでは起動通知をOpenTP1-Aに通知します。
  4. OpenTP1-Aでは,OpenTP1-Bへのコネクションを強制切断します。

このように,OpenTP1-A,OpenTP1-B,OpenTP1-Cとの通信はコネクション確立から再開するため,通信障害を発生させることなく処理できます。

何らかの要因でOpenTP1-Aに起動通知できなかった場合,OpenTP1-CでKFCA00642-Wメッセージが出力されます。この場合,OpenTP1-Aでnamunavlコマンドを実行する必要があります。OpenTP1-Cで起動通知を通知できなかったノードは,namunavlコマンドに-lオプションを指定して実行することで確認できます。

注意
監視対象のホストで複数のOpenTP1が起動している場合や,系切り替え後に同一のIPアドレスで複数のOpenTP1が起動する(1LANボードだけ使用時)環境では,起動通知機能を使用できません。

(2) ノード監視機能

定期的にノードとの通信を行い,障害を検知します。

ノード監視機能を使用すると,システム共通定義のall_nodeオペランドおよびall_node_exオペランドに指定されたノードの起動状況を監視できます。この機能では,起動を検出できなかったOpenTP1ノードのすべてのサービス情報をキャッシュから削除し,さらに,そのノードとのコネクションを切断します。

障害を検知し,障害ノードと接続されているコネクションを強制切断できるため,障害を最小にできます。

ノード監視機能で,他ノードを監視する例を次の図に示します。

図3-23 ノード監視機能を使用した他ノードの監視

[図データ]

ノード監視機能を使用すると,OpenTP1-AからOpenTP1-B,OpenTP1-C,OpenTP1-Dを定期的に監視します。

  1. OpenTP1-Cでノードダウンが発生すると,ノード監視機能がOpenTP1-Cとの通信障害を検知します。
  2. OpenTP1-Cのコネクションを切断し,KFCA00650-Iを出力します。
  3. RPC抑止リストに登録します。キャッシュに登録しているサービス情報のうち,未起動を検知したノードのサービス情報を削除します。
    注※
    RPC抑止リストは,OpenTP1システムが未起動のOpenTP1ノードの情報を保持しているリストです。

ノード監視機能は,ネームサービス定義のname_audit_intervalオペランドに指定された時間ごとに,各ノードの起動状況を確認します。ノード監視機能を使用する場合は,ネームサービス定義のname_audit_confオペランドに1,または2を指定してください。

name_audit_confオペランドの指定値ごとにノード監視機能の動作を次に示します。

ノード監視機能を使用した場合のノードの起動状況によって次の動作をします。

ノードの起動状況は,namalivechkコマンドでも確認できます。ノード監視機能を使用した場合とnamalivechkコマンドを使用した場合のノード監視の違いについて,次の表に示します。

表3-4 ノード監視機能使用時とnamalivechkコマンド使用時のノード監視の比較

比較項目 ノード監視機能使用時 namalivechkコマンド使用時
監視対象
  • システム共通定義のall_nodeオペランドに指定されたすべてのノード(起動/未起動にかかわらずすべてのノード)
  • システム共通定義のall_node_exオペランドに指定されたすべてのノード(起動/未起動にかかわらずすべてのノード)

  • システム共通定義のall_nodeオペランドに指定されたノードのうち,OpenTP1が未起動を検知していないノード
  • システム共通定義のall_node_exオペランドに指定されたすべてのノード(起動/未起動にかかわらずすべてのノード)
ノードの未起動を検知した場合の動作
  • all_nodeオペランドに指定されたノードで,かつRPC抑止リストに登録されていないノードの場合,ノードの情報をRPC抑止リストへ登録します。すでにRPC抑止リストに登録されているノードの場合,何もしません。
  • 未起動を検知したノードとのコネクションを切断します。
  • キャッシュに登録しているサービス情報のうち,未起動を検知したノードのサービス情報を削除します。

  • all_nodeオペランドに指定されたノードのうち,起動を検出できなかったノードの情報をRPC抑止リストへ登録します。
  • 未起動を検知したノードとのコネクションを切断します。
  • キャッシュに登録しているサービス情報のうち,未起動を検知したノードのサービス情報を削除します。
ノードの起動を検知した場合の動作 all_nodeオペランドに指定されたノードで,かつRPC抑止リストに登録されているノードの場合,RPC抑止リストからノードの情報を削除します。 何もしません。
注意
  • 監視対象のホストで複数のOpenTP1が起動している場合や,系切り替え後に同一のIPアドレスで複数のOpenTP1が起動する(1LANボードだけ使用時)環境では,ノード監視機能を使用できません。
  • ノード監視機能の監視用通信処理で,ノードダウン検知の感度をチューニングする場合,次のオペランドを変更してください。
    name_audit_confオペランドに1を指定した場合
    システム共通定義のipc_conn_intervalオペランドを変更してください。
    name_audit_confオペランドに2を指定した場合
    ネームサービス定義のname_audit_watch_timeオペランドを変更してください。
  • ノード監視機能で同時に監視できるノード数は60ノードまでです。システム共通定義のall_nodeオペランド,およびall_node_exオペランドに指定したノード数が60を超える場合,60ノード単位で監視を繰り返します。
  • システム共通定義のall_nodeオペランド,およびall_node_exオペランドに多くのノードを指定している場合,ノード監視機能を使用するとUAPで実行するRPCに影響を及ぼすおそれがあります。この場合,name_audit_intervalオペランドに小さな値を指定しないでください。また,namalivechkコマンドを繰り返し実行する場合,その間隔を短くしないでください。

(3) RPC抑止リストに登録されたノードの監視機能

ネームサービスでは,ノード監視機能とは別に180秒ごとにRPC抑止リストに登録されたノードの起動状況を確認できます。この機能の使用有無は,ネームサービス定義のname_rpc_control_listオペランドで指定します。

ノードの監視機能の設定を考慮して,この機能を使用してください。例えば,次に示す状態の場合,RPC抑止リストに登録されたノードの監視機能を無効にする必要があります。

RPC抑止リストに登録されたノードの監視機能を無効にした場合,name_audit_intervalオペランドに指定した時間が180秒以上のとき,障害から復旧したノードがRPC抑止リストから削除されるまでの時間が従来よりも長くなります。

ノード監視機能とRPC抑止リストに登録されたノードの監視機能について,推奨する設定を次に示します。

(4) ノード自動追加機能

ノード自動追加機能とは,OpenTP1システムにノードを追加する手順を容易にするための機能です。ノード自動追加機能では,ノード情報を管理するノードを定義します。このノードのことをマネジャノードといいます。逆にマネジャノードに管理されるノードのことをエージェントノードといいます。

マネジャノードが管理するノードの情報のリストをノードリストといいます。ノードリストは,マネジャノードからエージェントノードへ配布され,OpenTP1システム内でノードリストを共有します。

ノード自動追加機能を使用してノードを追加する場合のノードリストの流れを次の図に示します。

図3-24 ノード自動追加機能を使用してノードを追加する場合のノードリストの流れ

[図データ]

図で示したノードリストの流れについて説明します。番号は図中の番号と対応しています。

  1. 追加するノード(ノードX)からマネジャノードに対して,ノードリスト要求を送信します。
  2. マネジャノードは,ノードXのノード情報をノードリストに追加します。
  3. マネジャノードからノードXにノードリストを返します。
  4. マネジャノードから各ノードへノードXのノード情報を配布します。
  5. 各ノードで,ノードXをノードリストに追加します。
(a) ノード自動追加機能を使用するメリット

ノード自動追加機能を使用すると,次のメリットがあります。

(b) ノードの追加手順

ノード自動追加機能を使用する場合と,使用しない場合のノードの追加手順の違いを次に示します。

●ノード自動追加機能を使用した場合のノードの追加手順
追加するノードの作業
  1. システム共通定義の次のオペランドを指定します。
    name_service_modeオペランドにagentを指定
    name_manager_nodeオペランドにマネジャノードのノード名を指定
OpenTP1システム内のそのほかのノードの作業は必要ありません。
●ノード自動追加機能を使用しない場合のノードの追加手順
追加するノードの作業
  1. システム共通定義のall_nodeオペランドにOpenTP1システム内のすべてのノードを指定します。
  2. 次のどちらかの方法で手順1で指定した定義を有効にします。
    namndchgコマンドを実行
    OpenTP1を停止し,再起動
OpenTP1システム内のそのほかのノードの作業
  1. システム共通定義のall_nodeオペランドに追加するノードを指定します。
  2. 次のどちらかの方法で手順1で指定した定義を有効にします。
    namndchgコマンドを実行
    OpenTP1を停止し,再起動
  3. OpenTP1システム内のすべてのノードに対して,手順1〜2を繰り返します。

ノード自動追加機能を使用する場合の運用方法については,マニュアル「OpenTP1 運用と操作」を参照してください。

(5) ノードの情報表示

namsvinfコマンドを実行すると,OpenTP1ノードの起動結果,IPアドレス,およびネームサービスのポート番号を表示できます。情報を表示できるOpenTP1ノードは,システム共通定義のall_nodeオペランドおよびall_node_exオペランドに指定されたノードです。