3.2.3 OpenTP1のノード管理
OpenTP1同士の通信はTCP/IPによって実装したRPCを使用します。TCP/IPでは,通信するサーバ間でコネクションを確立した状態で通信します。
ネットワーク障害によってOpenTP1との通信ができなくなった場合,コネクション障害を検知できません。このため,そのあとに実行したRPCが障害となることがあります。このような状態を防止するためのOpenTP1の機能について説明します。
(1) 起動通知機能
OpenTP1の起動時に,他ノードで起動するOpenTP1のネームサービスに対して,自ノードが起動したことを通知し,それまで接続されていたコネクションを強制的に切断します。この機能は,系切り替えをする場合などに使用します。
OpenTP1の起動を通知する場合,送信側および受信側の両方のノードでシステム共通定義のname_notifyオペランドにYを指定してください。
この機能を使用するには,送信側および受信側の両方のノードでOpenTP1のバージョンを05-02以降にする必要があります。
起動通知機能を系切り替え時に使用した場合の構成例を次の図に示します。
-
OpenTP1-Bがサーバ障害などでダウンすると系切り替えが発生します。OpenTP1-Aでは,OpenTP1-Bからの障害を検知できなくてコネクションは残留します。
-
系切り替えが行われ,待機系でOpenTP1-Cが開始されます。
-
起動通知機能を使用した場合,OpenTP1-Cでは起動通知をOpenTP1-Aに通知します。
-
OpenTP1-Aでは,OpenTP1-Bへのコネクションを強制切断します。
このように,OpenTP1-A,OpenTP1-B,OpenTP1-Cとの通信はコネクション確立から再開するため,通信障害を発生させることなく処理できます。
何らかの要因でOpenTP1-Aに起動通知できなかった場合,OpenTP1-CでKFCA00642-Wメッセージが出力されます。この場合,OpenTP1-Aでnamunavlコマンドを実行する必要があります。OpenTP1-Cで起動通知を通知できなかったノードは,namunavlコマンドに-lオプションを指定して実行することで確認できます。
- 注意事項
-
この機能は,ノードごとにユニークなIPアドレスが割り振られていることを前提としているため,同一のIPアドレスで複数のOpenTP1が起動する(1LANボードだけ使用時など)システムでは,起動通知機能を使用できません。
(2) ノード監視機能
定期的にノードとの通信を行い,障害を検知します。
ノード監視機能を使用すると,システム共通定義のall_nodeオペランドおよびall_node_exオペランドに指定されたノードの起動状況を監視できます。この機能では,起動を検出できなかったOpenTP1ノードのすべてのサービス情報をキャッシュから削除し,さらに,そのノードとのコネクションを切断します。
障害を検知し,障害ノードと接続されているコネクションを強制切断できるため,障害を最小にできます。
ノード監視機能で,他ノードを監視する例を次の図に示します。
ノード監視機能を使用すると,OpenTP1-AからOpenTP1-B,OpenTP1-C,OpenTP1-Dを定期的に監視します。
-
OpenTP1-Cでノードダウンが発生すると,ノード監視機能がOpenTP1-Cとの通信障害を検知します。
-
OpenTP1-Cのコネクションを切断し,KFCA00650-Iを出力します。
-
RPC抑止リスト※に登録します。キャッシュに登録しているサービス情報のうち,未起動を検知したノードのサービス情報を削除します。
- 注※
-
RPC抑止リストは,OpenTP1システムが未起動のOpenTP1ノードの情報を保持しているリストです。
ノード監視機能は,ネームサービス定義のname_audit_intervalオペランドに指定された時間ごとに,各ノードの起動状況を確認します。ノード監視機能を使用する場合は,ネームサービス定義のname_audit_confオペランドに1,または2を指定してください。
name_audit_confオペランドの指定値ごとにノード監視機能の動作を次に示します。
-
name_audit_confに1を指定した場合
一方送信型ノード監視を行います。送信処理が終了した時点で次の動作をします。
-
稼働状態だったノードとの送信処理が失敗したとき
送信処理に失敗したノードが停止状態になったと判断し,KFCA00650-Iメッセージを標準出力へ出力したあと,該当するノードの情報をRPC抑止リストに登録します。
-
停止状態だったノードとの送信処理が成功したとき
停止状態だったノードが稼働状態になったと判断し,KFCA00651-Iメッセージを標準出力へ出力したあと,該当するノードの情報をRPC抑止リストから削除します。
-
-
name_audit_confに2を指定した場合
送受信型ノード監視を行います。送受信処理が終了した時点で次の動作をします。
-
稼働状態だったノードとの送信処理が失敗,または,稼働状態だったノードからの受信処理に失敗※したとき
送受信処理に失敗したノードが停止状態になったと判断し,KFCA00650-Iメッセージを標準出力へ出力したあと,該当するノードの情報をRPC抑止リストに登録します。
-
停止状態だったノードとの送受信処理が成功したとき
停止状態だったノードが稼働状態になったと判断し,KFCA00651-Iメッセージを標準出力へ出力したあと,該当するノードの情報をRPC抑止リストから削除します。
- 注※
-
受信処理で受信タイムアウトが発生した場合も,失敗したと認識します。タイムアウト監視時間は,ネームサービス定義のname_audit_watch_timeオペランドに指定した値です。
-
ノード監視機能を使用した場合のノードの起動状況によって次の動作をします。
-
稼働状態だったノードとの通信が失敗したとき
通信に失敗したノードが停止状態になったと判断し,KFCA00650-Iメッセージを標準出力へ出力したあと,該当するノードの情報をRPC抑止リストへ登録します。
-
停止状態だったノードとの通信が成功したとき
停止状態だったノードが稼働状態になったと判断し,KFCA00651-Iメッセージを標準出力へ出力したあと,該当するノードの情報をRPC抑止リストから削除します。
ノードの起動状況は,namalivechkコマンドでも確認できます。ノード監視機能を使用した場合とnamalivechkコマンドを使用した場合のノード監視の違いについて,次の表に示します。
比較項目 |
ノード監視機能使用時 |
namalivechkコマンド使用時 |
---|---|---|
監視対象 |
|
|
ノードの未起動を検知した場合の動作 |
|
|
ノードの起動を検知した場合の動作 |
all_nodeオペランドに指定されたノードで,かつRPC抑止リストに登録されているノードの場合,RPC抑止リストからノードの情報を削除します。 |
何もしません。 |
- 注意事項
-
-
この機能は,ノードごとにユニークなIPアドレスが割り振られていることを前提としているため,同じIPアドレスを使用するノードをシステム共通定義のall_nodeオペランドまたはall_node_exオペランドに複数指定しているノードや,同一の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抑止リストに登録されたノードの監視機能を無効にする必要があります。
-
name_audit_intervalオペランドに指定した時間が経過していなくても,障害から復旧したノードがRPC抑止リストから削除されることがあります。この場合,KFCA00651-Iメッセージは出力されません。
-
name_audit_confオペランドに2を指定している場合,KFCA00650-Iメッセージが定期的に出力されることがあります。
RPC抑止リストに登録されたノードの監視機能を無効にした場合,name_audit_intervalオペランドに指定した時間が180秒以上のとき,障害から復旧したノードがRPC抑止リストから削除されるまでの時間が従来よりも長くなります。
ノード監視機能とRPC抑止リストに登録されたノードの監視機能について,推奨する設定を次に示します。
-
name_audit_confオペランドに1または2を指定し,かつname_audit_intervalオペランドに180以下を指定した場合
name_rpc_control_listオペランドにNを指定することをお勧めします。
-
name_audit_confオペランドを省略するか,または0を指定した場合
name_rpc_control_listオペランドを省略するか,Yを指定することをお勧めします。
なお,name_audit_confオペランドを省略するか,または0を指定した場合,name_rpc_control_listオペランドにNを指定したときは,ノード監視機能およびRPC抑止リストへの監視機能は無効になるので次に示す状態になります。
-
RPC抑止リストに登録したノードから自ノードに対して通信が発生しないかぎり,RPC抑止リストから該当ノードは削除されません。
-
RPC抑止リストに登録したノードのall_nodeオペランドに自ノードを指定していない場合,自ノードのOpenTP1を再起動しないかぎり,RPC抑止リストから該当ノードが削除されません。
-
(4) ノード自動追加機能
ノード自動追加機能とは,OpenTP1システムにノードを追加する手順を容易にするための機能です。ノード自動追加機能では,ノード情報を管理するノードを定義します。このノードのことをマネジャノードといいます。逆にマネジャノードに管理されるノードのことをエージェントノードといいます。
マネジャノードが管理するノードの情報のリストをノードリストといいます。ノードリストは,マネジャノードからエージェントノードへ配布され,OpenTP1システム内でノードリストを共有します。
ノード自動追加機能を使用してノードを追加する場合のノードリストの流れを次の図に示します。
図で示したノードリストの流れについて説明します。番号は図中の番号と対応しています。
-
追加するノード(ノードX)からマネジャノードに対して,ノードリスト要求を送信します。
-
マネジャノードは,ノードXのノード情報をノードリストに追加します。
-
マネジャノードからノードXにノードリストを返します。
-
マネジャノードから各ノードへノードXのノード情報を配布します。
-
各ノードで,ノードXをノードリストに追加します。
(a) ノード自動追加機能を使用するメリット
ノード自動追加機能を使用すると,次のメリットがあります。
-
ノード追加時の作業手順の軽減
ノード自動追加機能を使用すれば,ノード追加時に修正する定義は,追加ノード分だけです。また,そのほかのノードを再起動する必要もありません。
-
大規模構成への対応
ノード追加時の定義の修正作業が緩和されることによって,大規模システム構成への対応が容易になります。マネジャノードは最大511のノードを管理できます。
(b) ノードの追加手順
ノード自動追加機能を使用する場合と,使用しない場合のノードの追加手順の違いを次に示します。
- ●ノード自動追加機能を使用した場合のノードの追加手順
-
追加するノードの作業
OpenTP1システム内のそのほかのノードの作業は必要ありません。
- ●ノード自動追加機能を使用しない場合のノードの追加手順
-
追加するノードの作業
-
システム共通定義のall_nodeオペランドにOpenTP1システム内のすべてのノードを指定します。
-
次のどちらかの方法で手順1で指定した定義を有効にします。
namndchgコマンドを実行
OpenTP1を停止し,再起動
OpenTP1システム内のそのほかのノードの作業
-
システム共通定義のall_nodeオペランドに追加するノードを指定します。
-
次のどちらかの方法で手順1で指定した定義を有効にします。
namndchgコマンドを実行
OpenTP1を停止し,再起動
-
OpenTP1システム内のすべてのノードに対して,手順1〜2を繰り返します。
-
ノード自動追加機能を使用する場合の運用方法については,マニュアル「OpenTP1 運用と操作」を参照してください。
(5) ノードの情報表示
namsvinfコマンドを実行すると,OpenTP1ノードの起動結果,IPアドレス,およびネームサービスのポート番号を表示できます。情報を表示できるOpenTP1ノードは,システム共通定義のall_nodeオペランドおよびall_node_exオペランドに指定されたノードです。