5.14. Watchdog

Watchdogの設定パラメータはpgpool.confに記述されています。 pgpool.conf.sampleのWATCHDOG節に設定の例があります。 以下のすべてのオプションがwatchdogプロセスでは指定されている必要があります。

5.14.1. Watchdogを有効にする

use_watchdog (boolean)

onならwatchdogを有効にします。 デフォルトはoffです。

このパラメータは、サーバ起動時にのみ設定できます。

5.14.2. Watchdog通信

wd_hostname (string)

Pgpool-IIサーバのホスト名またはIPアドレスを指定します。 クエリやパケットの送受信の他、watchdogの識別子としても用います。

wd_port (integer)

watchdogが接続を受け付けるために監視するポート番号です。 デフォルト値は9000です。

このパラメータは、サーバ起動時にのみ設定できます。

wd_authkey (string)

wachdog間通信で用いられる認証キーを指定します。 全てのPgpool-IIで同じキーを指定する必要があります。 認証キーが異なるwatchdogからの通信は拒絶されます。 死活監視をheartbeatモードで行う場合には、この認証はハートビート信号にも適用されます。

Pgpool-IIV3.5以降ではwd_authkeyがwatchdog IPCクライアントの認証にも使われるため、Pgpool-IIと通信するwatchdogプロセスは、"IPCAuthKey"のコマンドのJSONデータにwd_authkey値を設定しなければなりません。

デフォルトは''(空文字)で、この場合watchdogの認証は行われません。

このパラメータは、サーバ起動時にのみ設定できます。

5.14.3. 上流サーバへの接続

trusted_servers (string)

上位接続を確認するための信頼できるサーバのリストを指定します。 リスト中の各サーバは、pingの応答に答える必要があります。 "hostA,hostB,hostC"のようにカンマで区切って複数のサーバを指定できます。 全てのサーバに到達できなくなると、watchdogはPgpool-IIに障害が発生したと判断します。 そのため、複数のサーバを指定することを推奨します。 なお、このパラメータにPostgreSQLサーバを指定することはしないでください。

このパラメータは、サーバ起動時にのみ設定できます。

ping_path (string)

上位サーバへの接続監視に利用するpingコマンドのパスを指定します。 "/bin"のようにパスだけを指定します。

このパラメータは、サーバ起動時にのみ設定できます。

5.14.4. 仮想IP制御

delegate_IP (string)

(アプリケーションサーバなど)クライアントサーバから接続されるPgpool-IIの仮想IP(VIP) アドレスを指定します。 Pgpool-IIがスタンバイからアクティブに切り替わった時、Pgpool-IIはこのVIPを引き継ぎます。 デフォルトは''(空文字)で、この場合仮想IPは決して立ち上がりません。

このパラメータは、サーバ起動時にのみ設定できます。

if_cmd_path (string)

Pgpool-IIが仮想IPを切り替えるために使用するコマンドへのパスを指定します。 "/bin"のようにパスだけを指定します。

このパラメータは、サーバ起動時にのみ設定できます。

if_up_cmd (string)

仮想IPを起動するために実行するコマンドを指定します。 "ip addr add $_IP_$/24 dev eth0 label eth0:0"のようにコマンドとパラメータを指定します。 $_IP_$delegate_IPで指定されたIPアドレスに置換されます。

このパラメータは、サーバ起動時にのみ設定できます。

if_down_cmd (string)

仮想IPを停止するために実行するコマンドを指定します。 "ip addr del $_IP_$/24 dev eth0"のようにコマンドとパラメータを指定します。

このパラメータは、サーバ起動時にのみ設定できます。

arping_path (string)

IPアドレス切り替え後にPgpool-IIがARPリクエストを送信するコマンドへのパス指定します。 "/usr/sbin"のようにパスだけを指定します。

このパラメータは、サーバ起動時にのみ設定できます。

arping_cmd (string)

IPアドレス切り替え後にARPリクエストを送信するコマンドです。 "arping -U $_IP_$ -w 1"のようにコマンドとパラメータを指定します。 $_IP_$delegate_IPで指定されたIPアドレスに置換されます。

このパラメータは、サーバ起動時にのみ設定できます。

5.14.5. 昇格および降格時の振る舞い

Pgpool-IIがアクティブ(仮想IPを保持しているステータス)に昇格した時の振る舞いを指定します。

clear_memqcache_on_escalation (boolean)

このオプションがonの場合、pgpool-II がアクティブに昇格した時に、共有メモリ上のクエリキャッシュを全て削除します。 これにより、新しいアクティブのPgpool-IIが旧アクティブと非整合な古いクエリキャッシュを使うことを防止します。

デフォルトはonです。

memqcache_methodが'shmem'の場合のみ有効です。

このパラメータは、サーバ起動時にのみ設定できます。

wd_escalation_command (string)

マスターwatchdogに昇格した時に、ここで指定したコマンドがwatchdogによって実行されます。

コマンドは、そのノードに仮想IPが設定されていた場合、それが立ち上がる直前のタイミングで実行されます。

このパラメータは、サーバ起動時にのみ設定できます。

wd_de_escalation_command (string)

Pgpool-IIのマスターwatchdogが責務を辞退し降格するときに、ここで指定したコマンドが実行されます。 マスターwatchdogノードは、そのマスターノードのPgpool-IIが停止したとき、ネットワーク切断やクォーラムが失われたことを検出した時に、マスターから辞任します。

このコマンドは、watchdogノードに仮想IPアドレスが設定されていた場合、それが停止される直前のタイミングで実行されます。

wd_de_escalation_commandは、Pgpool-IIV3.5より前のバージョンには提供されていません。

このパラメータは、サーバ起動時にのみ設定できます。

5.14.6. Pgpool-IIの死活監視

Watchdogは、定期的にpgpool-IIの状態を監視します。

wd_lifecheck_method (string)

死活監視の方法を指定します。 指定できる値は 'heartbeat' (デフォルト)、'query'、または'external' です。

'heartbeat'を指定した場合には、監視は「ハートビートモード」で行われます。 watchdog は一定間隔でハートビート信号(UDP パケット)を他のPgpool-IIへ送信します。 またwatchdogは他のPgpool-IIから送られてくる信号を受信します。 これが一定時間以上途絶えた場合にはそのPgpool-IIに障害が発生したと判断します。

query: このモードではwatchdogは監視用のクエリをPgpool-IIに発行し、それが成功するかどうかで pgpool-II が生きているかどうかを判断します。

注意

クエリモードでは、num_init_childrenを十分大きな値にしてください。 watchdogプロセスもPgpool-IIにクライアントとして接続するからです。

external: このモードでは、Pgpool-IIに組み込みの死活監視は無効になり、watchdogはローカルとリモートのノード死活監視を行うために外部システムを使います。

externalモードはPgpool-II V3.5よりも前のバージョンでは提供されていません。

このパラメータは、サーバ起動時にのみ設定できます。

wd_monitoring_interfaces_list (string)

watchdogプロセスがネットワークリンクの状態を監視するネットワークデバイス名をカンマ区切りのリストで指定します。 リスト中の全てのネットワークインタフェースが(無効化あるいはケーブルを抜かれることで)非アクティブになると、watchdog はネットワークが完全に故障したと見なし自らを停止させませす。 ''(空文字)を指定するとネットワークインタフェースの監視が無効になります。 'any'を指定すると、ループバック以外の存在する全てのネットワークインタフェースを監視します。 デフォルトの値は''空リスト '' (監視は無効)です。

wd_monitoring_interfaces_listは、Pgpool-II V3.5よりも前のバージョンでは提供されていません。

このパラメータは、サーバ起動時にのみ設定できます。

wd_interval (integer)

Pgpool-IIが死活監視を行う間隔を秒単位で指定します(1以上の数字)。 デフォルトは10です。

このパラメータは、サーバ起動時にのみ設定できます。

wd_priority (integer)

このパラメータによってローカルのwatchdogノードがマスターに選ばれる優先度を上げることができます。 古いマスターノードが故障した状況でクラスタがマスターノードの選択を行う際に、wd_priorityが高いノードがマスターwatchdogノードに選ばれます。 wd_priorityはクラスタの初期起動時にも有効なので、 複数のwatchdogノードを同時に起動した場合、wd_priorityが高いノードがマスターwatchdogノードに選ばれます。 このため、watchdogノードは意図しないノードがマスターに選ばれることが無いようにwd_priorityの優先順位が高い順に起動するべきです。

wd_priorityは、Pgpool-II V3.5よりも前のバージョンでは提供されていません。

このパラメータは、サーバ起動時にのみ設定できます。

wd_ipc_socket_dir (string)

Pgpool-II watchdog のIPC通信で受け付ける UNIX ドメインソケットが作成されるディレクトリを指定します。 デフォルトは'/tmp'です。 このソケットが cron ジョブで削除されることのないよう気をつけてください。 この値は '/var/run'などのディレクトリに設定することを推奨します。

wd_ipc_socket_dirは、Pgpool-II V3.5よりも前のバージョンでは提供されていません。

このパラメータは、サーバ起動時にのみ設定できます。

5.14.7. 死活監視:ハートビートモードの設定

wd_heartbeat_port (integer)

ハートビート信号を受信するUDPポート番号を指定します。 デフォルトは 9694 です。 wd_lifecheck_method'heartbeat'に設定されている場合のみ有効です。

このパラメータは、サーバ起動時にのみ設定できます。

wd_heartbeat_keepalive (integer)

ハートビート信号を送信する間隔(秒)を指定します。 デフォルトは2です。 wd_heartbeat_keepaliveは、wd_lifecheck_method'heartbeat'に設定されている場合のみ有効です。

このパラメータは、サーバ起動時にのみ設定できます。

wd_heartbeat_deadtime (integer)

このオプションで指定された間隔(秒)の間ハートビート信号が途絶えた場合、リモートのwatchdogに障害が発生したとみなされます。 デフォルトは30です。

このパラメータは、サーバ起動時にのみ設定できます。

heartbeat_destination0 (string)

ハートビート信号の送る先のIPアドレスまたは ホスト名を指定します。 複数のハートビート信号の送り先が指定可能です。 0から始まるパラメータの最後の部分は送り先の番号です。

heartbeat_destinationは、wd_lifecheck_method'heartbeat'に設定されている場合のみ有効です。

このパラメータは、サーバ起動時にのみ設定できます。

heartbeat_destination_port0 (integer)

ハートビート信号の送る先のポート番号を指定します。 複数のハートビート信号の送り先が指定可能です。 0から始まるパラメータの最後の部分は送り先の番号です。

heartbeat_destination_portは、wd_lifecheck_method'heartbeat'に設定されている場合のみ有効です。

このパラメータは、サーバ起動時にのみ設定できます。

heartbeat_device0 (string)

heartbeat_destinationX:heartbeat_destination_portXで指定されるハートビートの送信先に用いるネットワークデバイス名を指定します。 パラメータ名の最後にあるXの値(送信先番号)を変えることにより、ハートビートの送信先ごとに異なるハートビートデバイス番号を設定することが可能です。 送信先番号は0から始まります。

heartbeat_deviceは、Pgpool-IIをroot権限で起動しているときのみ使用可能です。 それ以外の場合は空文字('')のままにしておいてください。

heartbeat_deviceは、wd_lifecheck_method'heartbeat'に設定されている場合のみ有効です。

このパラメータは、サーバ起動時にのみ設定できます。

5.14.8. 死活監視:クエリモードの設定

wd_life_point (integer)

監視クエリの応答が得られなかった場合のリトライ回数を指定します。 有効な値は1以上の整数です。

wd_lifecheck_method'query'の場合のみ、wd_life_pointは有効です。

このパラメータは、サーバ起動時にのみ設定できます。

wd_lifecheck_query (string)

リモートのPgpool-IIの死活監視に使うクエリを指定します。 デフォルトは"SELECT 1"です。

wd_lifecheck_method'query'の場合のみ、wd_life_check_queryは有効です。

このパラメータは、サーバ起動時にのみ設定できます。

wd_lifecheck_dbname (string)

リモートのPgpool-IIの死活監視用の接続先のデータベース名です。 デフォルトは'template1'です。

wd_lifecheck_method'query'の場合のみ、wd_life_check_dbnameは有効です。

このパラメータは、サーバ起動時にのみ設定できます。

wd_lifecheck_user (string)

リモートのPgpool-IIの死活監視用の接続先のユーザ名です。 デフォルトは'nobody'です。

wd_lifecheck_method'query'の場合のみ、wd_life_check_userは有効です。

このパラメータは、サーバ起動時にのみ設定できます。

wd_lifecheck_password (string)

リモートのPgpool-IIの死活監視用の接続先のパスワードです。 デフォルトは''(空文字)です。

wd_lifecheck_method'query'の場合のみ、wd_life_check_passwordは有効です。

このパラメータは、サーバ起動時にのみ設定できます。

5.14.9. Watchdogサーバの設定

other_pgpool_hostname0 (string)

リモートのwatchdogノードに対するPgpool-IIサーバのホスト名を指定します。 パラメータ名の最後にある数字は「サーバ番号」で、0から始まります。

このパラメータは、サーバ起動時にのみ設定できます。

other_pgpool_port0 (integer)

リモートのwatchdogノードに対するPgpool-IIサーバのポート番号を指定します。 パラメータ名の最後にある数字は「サーバ番号」で、0から始まります。

このパラメータは、サーバ起動時にのみ設定できます。

other_wd_port0 (integer)

リモートのPgpool-IIサーバにおけるwatchdogのポート番号を指定します。 パラメータ名の最後にある数字は「サーバ番号」で、0から始まります。

このパラメータは、サーバ起動時にのみ設定できます。