watchdogプロセスはpgpool-II本体から起動される、高可用性を目的としたプロセスです。 以下の機能を提供します。
watchdogはpgpoolのプロセスではなく、サービスの応答を監視します。 監視対象のpgpoolからPostgreSQLに問い合わせを行い、その応答をチェックします。 またwatchdogは、pgpoolから上位のサーバ(アプリケーションサーバなど)への接続も監視します。上位サーバからPostgreSQLへの接続・応答をpgpoolのサービスとして生死監視します。
各watchdogはお互いの監視対象のサーバの情報を交換します。 これにより、pgpoolサーバの情報を最新に保てるだけでなく、各watchdogプロセスの相互監視を行っています。
pgpoolのサービスに障害を検知した場合、watchdogは他のwatchdogに障害検知を通知します。 故障したpgpoolがアクティブの場合、他のwatchdogは新しいアクティブを投票で決め、アクティブ・スタンバイの切り替えを行います。
スタンバイが新しいアクティブに昇格する際、新アクティブ機のwatchdogはアクティブ用の仮想IPインターフェースを起動します。 一方、旧アクティブ機のwatchdogはアクティブ用仮想IPインターフェースを停止します。 これにより、サーバが切り替わった後もアクティブは同じIPアドレスでサービスを継続することができます。
障害機の復旧や新規サーバを追加する場合、watchdogはサーバの情報を他のwatchdogに通知し、他のwatchdogからはアクティブや他のサーバの情報を受け取ります。これにより追加したサーバはスタンバイ機として自動的に追加されます。
watchdogプロセスを含むpgpool-IIサーバは以下の図のようなシステム構成をとります。
![]() |
watchdogプロセスはpgpool-IIから自動的に起動・停止されますので、固有の起動・停止コマンドはありません。 しかし、watchdogプロセスは仮想IPインターフェースの起動・停止を行いますので、 pgpool-IIの起動は root権限で 行う必要があります。
watchdogプロセスの設定項目はpgpool.confに記述します。 pgpool.conf.sampleファイルのWATCHDOGセクションにサンプルを記述していますので、参照してください。 watchdogプロセスは以下の項目すべてを指定する必要があります。
watchdog を有効にするには on にします。デフォルトは off です。
上位接続を確認するための信頼できるサーバリストです。 pingの応答が得られる必要があります。 hostA,hostB,hostC...のようにカンマで区切って複数のサーバを指定できます。
(アプリケーションサーバなど)外部からの接続されるpgpool-IIの仮想IPアドレスです。 スタンバイからアクティブに切り替わる際、pgpoolはこの仮想IPを引き継ぎます。
watchdogプロセスが相互監視を受信する為のホスト名またはIPアドレスです。
watchdogプロセスが相互監視を受信する為のポート番号です。
pgpool-IIへの生存監視の間隔(秒)です。 (1以上の数値)
上位サーバへの接続監視に利用するpingコマンドのパスです。 /bin のようにパスだけを指定します。
IPアドレス切り替えに利用するコマンドのパスです。 /sbin のようにパスだけを指定します。
仮想IPを起動するために実行するコマンドです。 ifconfig eth0:0 inet $_IP_$ netmask 255.255.255.0 のようにコマンドとパラメータを指定します。 $_IP_$ はdelegate_IPで指定されたIPアドレスに置換されます。
仮想IPを停止するために実行するコマンドです。 ifconfig eth0:0 down のようにコマンドとパラメータを指定します。
IPアドレス切り替え後にARPリクエストを送信するコマンドのパスです。 /usr/sbin のようにパスだけを指定します。
IPアドレス切り替え後にARPリクエストを送信するコマンドです。 arping -U $_IP_$ -w 1 のようにコマンドとパラメータを指定します。 $_IP_$ はdelegate_IPで指定されたIPアドレスに置換されます。
pgpool-IIの生死監視で応答が得られなかった場合のリトライ回数です。 (1以上の数値)
pgpool-II の死活監視のために発行されるクエリです。 デフォルトは "SELECT 1" です。
監視対象のpgpool-IIサーバのホスト名を指定します。 数値の部分は監視対象サーバの番号です。 監視対象のサーバ毎に0からの連番にします。
監視対象のpgpool-IIサーバのpgpool用のポート番号を指定します。 数値の部分は監視対象サーバの番号です。 監視対象のサーバ毎に0からの連番にします。
監視対象のpgpool-IIサーバのwatchdog用のポート番号を指定します。 数値の部分は監視対象サーバの番号です。 監視対象のサーバ毎に0からの連番にします。