| Pgpool-II 4.6.2 文書 | |||
|---|---|---|---|
| 前のページ | 上に戻る | 第 4章Watchdog | 次のページ | 
Pgpool-II watchdogプロセスは、すべてのPgpool-IIプロセスとBSDソケットを使って通信します。 そのBSDソケットは、ローカルとリモートのPgpool-II watchdogノードをサードパーティのシステムが死活監視するために使用することができます。 IPCのためのBSDソケットの名前は、"s.PGPOOLWD_CMD."文字列の後にPgpool-IIのwd_portを付けたもので、そのソケットファイルはwd_ipc_socket_dirディレクトリに置かれます。
watchdogのIPCコマンドパケットは3つのフィールドから構成されます。 以下のテーブルはメッセージフィールドの詳細な説明です。
watchdogのIPCコマンド結果パケットは3つのフィールドから構成されます。 以下のテーブルはメッセージフィールドの詳細な説明です。
watchdogプロセスに送られ、またwatchdogプロセスから返却されるIPCコマンドのパケットの最初のバイトは、コマンドまたはコマンド結果型と認識されます。
表 4-3. Watchdog IPC command packet types
| 名前 | バイト値 | 型 | 説明 | 
|---|---|---|---|
| REGISTER FOR NOTIFICATIONS | '0' | コマンドパケット | 現在の接続をwatchdog通知を受け取るために登録するコマンド | 
| NODE STATUS CHANGE | '2' | コマンドパケット | watchdogノードの状態変化をwatchdogに通知するためのコマンド | 
| GET NODES LIST | '3' | コマンドパケット | 全ての設定済み watchdog ノードのリストを要求します | 
| NODES LIST DATA | '4' | 結果パケット | パケット中のJSONデータにすべてのwatchdogノードのリストが含まれます | 
| CLUSTER IN TRANSITION | '7' | 結果パケット | クラスタが遷移中なのでコマンドを処理できないときにwatchdogはこのパケットを返します | 
| RESULT BAD | '8' | 結果パケット | IPCコマンドが失敗すると、watchdogはこのパケット型を返します | 
| RESULT OK | '9' | 結果パケット | IPCコマンドが成功すると、watchdogはこのパケット型を返します | 
watchdogの"GET NODES LIST"、"NODES LIST DATA"、"NODE STATUS CHANGE"IPCメッセージは、外部死活監視システムを統合するために使用できます。 pgpoolの組み込み死活監視も同じチャンネルと技術を使っていることに注意してください。
サードパーティの死活監視システムは、wd_authkeyが設定されている時は認証キーとデータを含むJSONデータを、wd_authkeyが設定されていない時は空のパケットデータを含む"GET NODES LIST"パケットをwatchdogのIPCソケットに送ることにより、"NODES LIST DATA"結果パケットを入手できます。
"GET NODES LIST"に対するwatchdogに返却される結果パケットは、死活監視を実施する対象となる、構成されているすべてのwatchdogノードのリストを含むJSONフォーマットです。
      -- The example JSON data contained in "NODES LIST DATA"
      {
      "NodeCount":3,
      "WatchdogNodes":
      [
      {
      "ID":0,
      "State":1,
      "NodeName":"Linux_ubuntu_9999",
      "HostName":"watchdog-host1",
      "DelegateIP":"172.16.5.133",
      "WdPort":9000,
      "PgpoolPort":9999
      },
      {
      "ID":1,
      "State":1,
      "NodeName":"Linux_ubuntu_9991",
      "HostName":"watchdog-host2",
      "DelegateIP":"172.16.5.133",
      "WdPort":9000,
      "PgpoolPort":9991
      },
      {
      "ID":2,
      "State":1,
      "NodeName":"Linux_ubuntu_9992",
      "HostName":"watchdog-host3",
      "DelegateIP":"172.16.5.133",
      "WdPort":9000,
      "PgpoolPort":9992
      }
      ]
      }
      -- Note that ID 0 is always reserved for local watchdog node
     
構成されているwatchdogノード情報をwatchdogから入手したら、外部死活監視システムはwatchdogノードの死活監視を実施できます。 ノードの状態変化を検知したら、watchdogの"NODE STATUS CHANGE"IPCメッセージを使って、watchdogに通知できます。 メッセージには、状態変化したノードIDとノードの新しい状態を伴うJSONでデータを格納してください(ノードIDは、watchdogから返却されたWatchdogNodesリスト中のノードと同じノードIDを使わなければなりません)。
      -- The example JSON to inform pgpool-II watchdog about health check
      failed on node with ID 1 will look like
      {
      "NodeID":1,
      "NodeStatus":1,
      "Message":"optional message string to log by watchdog for this event"
      "IPCAuthKey":"wd_authkey configuration parameter value"
      }
      -- NodeStatus values meanings are as follows
      NODE STATUS DEAD  =  1
      NODE STATUS ALIVE =  2