5.15. Watchdog

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

5.15.1. Watchdogを有効にする

use_watchdog (boolean)

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

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

Pgpool-II 4.2より前では、watchdogは自ノードとそれを基準に他ノードの設定を記述するため、 ノードごとに異なる設定を記述する必要がありました。 Pgpool-II 4.2以降では、watchdogの設定はノード間で共通するようにしました。 そのため、Pgpool-II 4.2以降、Watchdog機能が有効になっている場合、 どの設定がどのホストであるかを区別するには、 設定ファイルpgpool.confを格納するディレクトリにpgpool_node_idファイルの作成が必要になります。 そのファイルにpgpool(watchdog)ホストを識別するためのノード番号(0、1、2など)を指定します。

例 5-10. pgpool_node_idの設定例

Pgpool ノードが3つあり、それぞれのホスト名が server1、server2、server3 の場合、各ホスト上でpgpool_node_idファイルを以下のように作成します。 RPMからインストールした場合は、pgpool.conf/etc/pgpool-II/配下にインストールされます。

  • server1

    [server1]# cat /etc/pgpool-II/pgpool_node_id
    0
            
  • server2

    [server2]# cat /etc/pgpool-II/pgpool_node_id
    1
            
  • server3

    [server3]# cat /etc/pgpool-II/pgpool_node_id
    2
            

5.15.2. Watchdog通信

hostnameX (string)

Pgpool-IIサーバのホスト名またはIPアドレスを指定します。 クエリやパケットの送受信の他、watchdogの識別子としても用います。 パラメータ名の最後にある数字は「pgpool ノードID」で、0から始まります(たとえばhostname0)。

wd_portX (integer)

watchdogが接続を受け付けるために監視するポート番号です。 デフォルト値は9000です。 パラメータ名の最後にある数字は「pgpool ノードID」で、0から始まります(たとえばwd_port0)。

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

pgpool_portX (integer)

Pgpool-IIサーバのポート番号を指定します。 デフォルト値は9999です。 パラメータ名の最後にある数字は「pgpool ノードID」で、0から始まります(たとえばpgpool_port0)。

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

例 5-11. Watchdogの設定例

Pgpool ノードが3つあり、それぞれのホスト名が server1、server2、server3 の場合、 hostnamewd_port 及びpgpool_portを以下のように設定します。

     hostname0 = 'server1'
     wd_port0 = 9000
     pgpool_port0 = 9999

     hostname1 = 'server2'
     wd_port1 = 9000
     pgpool_port1 = 9999

     hostname2 = 'server3'
     wd_port2 = 9000
     pgpool_port2 = 9999
    

wd_authkey (string)

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

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

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

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

5.15.3. 上位サーバへの接続

Pgpool-IIのサービス提供先(DB クライアント)のサーバを上位サーバと呼びます。 Pgpool-IIが生きていてPostgreSQLと繋がっている場合でも、 上位サーバとのリンクが切れていれば、Pgpool-IIはサービスを提供できません。 そのため、watchdogは上位サーバとのリンクが繋がっているかどうかも監視します。

trusted_servers (string)

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

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

trusted_server_command (string)

信頼できるサーバのping応答を確認するユーザコマンドを指定します。 %hはtrusted_serversで指定された各ホスト名に置換されます。 デフォルトはping -q -c3 %hです。

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

5.15.4. 仮想IP制御

delegate_ip (string)

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

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

if_cmd_path (string)

Pgpool-IIが仮想IPを切り替えるために使用するコマンドへのパスを指定します。 "/sbin"のようにパスだけを指定します。 if_up_cmdif_down_cmdに指定したコマンドが"/"で始まる場合、 フルパスとみなしif_cmd_pathの設定を無視します。 デフォルト値は/sbinです。

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

if_up_cmd (string)

仮想IPを起動するために実行するコマンドを指定します。 "ip addr add $_IP_$/24 dev eth0 label eth0:0"のようにコマンドとパラメータを指定します。 このコマンドを実行するにはroot権限が必要となりますので、一般ユーザが実行できるように ipコマンドにsetuidを設定するか、 Pgpool-II起動ユーザ(デフォルトではpostgres)がパスワードなしにsudoを実行できるように設定し、 sudoを介したコマンドを"/usr/bin/sudo /sbin/ip addr add $_IP_$/24 dev eth0 label eth0:0"のように指定します。 $_IP_$delegate_ipで指定されたIPアドレスに置換されます。

デフォルト値は/usr/bin/sudo /sbin/ip addr add $_IP_$/24 dev eth0 label eth0:0です。

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

if_down_cmd (string)

仮想IPを停止するために実行するコマンドを指定します。 "ip addr del $_IP_$/24 dev eth0"のようにコマンドとパラメータを指定します。 このコマンドを実行するにはroot権限が必要となりますので、一般ユーザが実行できるように ipコマンドにsetuidを設定するか、 Pgpool-II起動ユーザ(デフォルトではpostgres)がパスワードなしにsudoを実行できるように設定し、 sudoを介したコマンドを"/usr/bin/sudo /sbin/ip addr del $_IP_$/24 dev eth0"のように指定します。 $_IP_$delegate_ipで指定されたIPアドレスに置換されます。

デフォルト値は/usr/bin/sudo /sbin/ip addr del $_IP_$/24 dev eth0です。

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

arping_path (string)

IPアドレス切り替え後にPgpool-IIがARPリクエストを送信するコマンドへのパス指定します。 "/usr/sbin"のようにパスだけを指定します。 arping_cmdに指定したコマンドが"/"で始まる場合、 フルパスとみなしarping_pathの設定を無視します。 デフォルト値は/usr/sbinです。

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

arping_cmd (string)

IPアドレス切り替え後にARPリクエストを送信するコマンドです。 "arping -U $_IP_$ -w 1 -I eth0"のようにコマンドとパラメータを指定します。 このコマンドを実行するにはroot権限が必要となりますので、一般ユーザが実行できるように arpingコマンドにsetuidを設定するか、 Pgpool-II起動ユーザ(デフォルトではpostgresユーザ)がパスワードなしにsudoを実行できるように設定し、 sudoを介したコマンドを"/usr/bin/sudo /usr/sbin/arping -U $_IP_$ -w 1 -I eth0"のように設定します。 $_IP_$delegate_ipで指定されたIPアドレスに置換されます。

デフォルト値は/usr/bin/sudo /usr/sbin/arping -U $_IP_$ -w 1 -I eth0です。

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

ping_path (string)

仮想IPの起動を確認するために利用するpingコマンドのパスを指定します。 "/bin"のようにパスだけを指定します。 デフォルト値は/binです。

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

5.15.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が停止したとき、ネットワーク切断やクォーラム(quorum)が失われたことを検出した時に、リーダーから辞任します。

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

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

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

5.15.6. フェイルオーバの挙動の制御

これらの設定は、watchdog機能が有効な場合に、バックエンドノードのフェイルオーバの動作を制御するために使用されます。 これらの設定は、内部的なPgpool-IIのフェイルオーバ/縮退要求のみに影響します。 一方、(PCPコマンドを使った)ユーザが起動したバックエンド切り離し操作では、これらの設定項目は迂回され適用されません。

failover_when_quorum_exists (boolean)

このパラメータを有効にすると、Pgpool-IIがバックエンドノードの縮退/フェイルオーバを実行する際にクォーラムが存在するかどうかを考慮するようになります。

「クォーラムが存在する」とは、生きているwatchdogノードの数(Pgpool-IIの数)を全部足して、すべてのwatchdogノードの数に対して多数派を形成できる場合のことを指します。 たとえば、watchdogノード数が5のとき、生きているノード数が3以上なら多数派を形成できるのでクォーラムは存在しますが、生きているノード数が2以下なら多数派を形成できないのでクォーラムは存在しません。

クォーラムが存在すると、一つのwatchdogノードがバックエンドの障害を誤検知しても他の多数派のノードに否決されるので、障害誤検知に対して堅牢になります。 これはfailover_require_consensusがオン(デフォルト)の動作ですが、設定によって多数派を形成しなくても直ちにフェイルオーバするようにすることもできます。 バックエンドの障害を誤って検出したPgpool-IIノードは、障害の発生したバックエンドノードを隔離します。

クォーラムの存在の有無は、pcp_watchdog_infoコマンドを--verboseオプション付きで起動することで確認できます。 Quorum stateQUORUM EXISTまたはQUORUM IS ON THE EDGEならクォーラムは存在します。 Quorum stateQUORUM ABSENTならクォーラムは存在しません。

クォーラムが存在しない場合、クォーラムが再び存在するまで、バックエンドの障害を検出したPgpool-IIノードは、障害の発生したバックエンドノードを隔離します。

隔離されたノードをpcp_detach_nodeコマンドで強制的にフェイルオーバさせることは可能ですが、pcp_attach_nodeコマンドで再びアタッチ状態にすることはできません。

隔離されたノードの動作は切り離されたバックエンドノードと似ていますが、フェイルオーバ/縮退と異なり、隔離ステータスはwatchdogクラスタ内の他のPgpool-IIノードに伝播されません。 したがって、他のPgpool-IIノードは引き続きそのバックエンドを使用し続ける可能性があります。

隔離とフェイルオーバ操作には多くの類似点がありますが、どちらも非常に基本的な方法で異なります。 隔離操作はfailover_commandを実行せず、障害の発生したノードを隔離します。 この隔離されたノードがプライマリの場合、Pgpool-IIはスタンバイをプライマリに昇格させないので、プライマリノードが隔離されている間は、使用可能なプライマリバックエンドノードはありません。

更に、障害ノードとは違い、Pgpool-IIは隔離されたノードに対してはヘルスチェックを実行し続けます。 隔離されたノードが到達可能になり次第、そのノードは自動的に再度アタッチされます。 これはPgpool-II V4.1以降にのみ適用されることに注意してください。 それ以前のバージョンをお使いの場合は、隔離されたノードに対する接続性の問題が解決されたら、pcp_attach_nodeを使ってそのノードを復帰させなければなりません。

Pgpool-II V4.1以後では、プライマリノードのフェイルオーバに関してwatchdogのリーダノードが合意形成に失敗し、その結果プライマリバックエンドが隔離状態になった場合、そのリーダノードはリーダ/コーディネータの役割を辞退し、次のリーダの選挙の際にwd_priorityを引き下げることにより、クラスタが新しいリーダを選ぶように仕向けます。

注意: スタンバイバックエンドの障害時にリーダノードが合意形成に失敗した場合は、特にアクションは起こしません。 watchdogリーダが管理する隔離されたスタンバイバックエンドは新しいリーダの選挙を引き起こしません。

このパラメータがoffなら、クォーラムが存在しなくても障害が発生するとフェイルオーバします。

デフォルト値はonです。

failover_when_quorum_existsはPgpool-II V3.7より前では利用できません。

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

注意: ネイティブレプリケーションモードではfailover_when_quorum_exists機能は利用できません。

failover_require_consensus (boolean)

このパラメータを有効にすると、Pgpool-IIは、watchdogクォーラムが存在し、少なくともクォーラム投票に必要なノードの最小数があれば、バックエンドノードで縮退/フェイルオーバを実行します。

たとえば、3ノードのwatchdogのクラスタでは、フェイルオーバは、少なくとも2つのノードが特定のバックエンドノードに対してフェイルオーバの実行要求をするときのみ実行されます。

このパラメータがoffなら、投票で合意が取れなくてもフェイルオーバします。

デフォルト値はonです。

注意

failover_require_consensusが有効な場合、Pgpool-IIは他 のPgpool-IIノードから充分な投票を得るまでフェイルオーバしません。 ですから、正しくバックエンドの障害を検出するために、すべてのPgpool-IIノードでヘルスチェックを有効にすることを強く推奨します。 ヘルスチェックに関する詳細については、項5.9をご覧ください。

注意: ネイティブレプリケーションモードではfailover_require_consensus機能は利用できません。

Pgpool-II V3.7より前ではfailover_require_consensusは利用できません。 failover_when_quorum_existsが有効な場合にのみ有効です。

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

allow_multiple_failover_requests_from_node (boolean)

このパラメータは、failover_require_consensusと連携して動作します。 有効にすると、単一のPgpool-IIノードが複数のフェイルオーバ投票をできます。

たとえば、3ノードのwatchdogクラスタでは、1つのPgpool-IIノードが特定のバックエンドノードのフェイルオーバに対して2つのフェイルオーバ要求を送信すると、両方の要求が別の投票としてカウントされ、たとえ他のPgpool-IIノードからの投票を得なくても、Pgpool-IIがフェイルオーバを実行します。

たとえば、ヘルスチェックでエラーが検出されても有効投票数に達しない場合、障害が引き続き発生していて次のヘルスチェックで再度エラーが検出されれば、都合2票が投票されることになります。ほかのwatchdogが検出しない恒久的な障害が発生した際にフェイルオーバを引き起こしたい時に有用です。

デフォルト値はoffです。

allow_multiple_failover_requests_from_nodeは、Pgpool-II V3.7以前では利用できません。 failover_when_quorum_existsfailover_require_consensusの両方が有効な場合にのみ有効です。

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

enable_consensus_with_half_votes (boolean)

このパラメータはPgpool-IIが、クォーラムとフェイルオーバにおける合意を解決する際に、どのように多数決ルールにおける計算を行うかを設定します。

注意: このパラメータはバックエンドのフェイルオーバの挙動のみならず、Pgpool-II自身のクォーラムとフェイルオーバの挙動にも影響を与えます。

このパラメータがオンなら、クォーラムとフェイルオーバの合意のために、全体のうち半数の投票だけでよくなります。 そうでなければ、全体のうち少なくとも半数に加えて1票の投票が必要になります。 フェイルオーバにおいては、これはfailover_require_consensusと同期して動作します。 クォーラムの存在決定、フェイルオーバにおける合意形成の両方において、watchdogクラスタが偶数のPgpool-IIノードから構成されている場合にのみこのパラメータは効果があります。 参加者が奇数のwatchdogクラスタにおける多数決決定の際には、このパラメータの設定値は影響しません。

たとえば、このパラメータがオンのときは、2ノードのwatchdogクラスタではクォーラムが存在するためには一つのPgpool-IIノードが生きている必要があります。 このパラメータがオフのときは、2ノードのwatchdogクラスタではクォーラムが存在するためには2つのPgpool-IIノードが生きている必要があります。

このパラメータがオンのときは、4ノードのwatchdogクラスタではクォーラムが存在するためには2つのPgpool-IIノードが生きている必要があります。 このパラメータがオフのときは、4ノードのwatchdogクラスタではクォーラムが存在するためには3つのPgpool-IIノードが生きている必要があります。

このパラメータがオンのときは、split-brainが発生するリスクがあることに注意してください。 たとえば、ノードA, B, C, Dからなる4ノードのクラスタでは、(A, B)と(C, D)の分断された2つのネットワークになる可能性があります。 (A, B)と(C, D)にとっては、それぞれ生きた2つのノードが存在するので、クォーラムは依然として存在します。 各々のグループはそれぞれのリーダwatchdogを選び、これはすなわちsplit-brainです。

デフォルト値はオフです。

enable_consensus_with_half_votesPgpool-IIV4.1よりも前には存在しません。 以前のバージョンは、あたかもこのパラメータがオンであるかのように動作します。

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

5.15.7. watchdogクラスタメンバーシップの管理

デフォルトではwatchdogクラスタは、現在のノードの状態とは無関係にpgpool.confファイルに定義されたすべてのwatchdogノードから構成されます。 ノードがLOSTSHUTDOWN、あるいはノードが起動されなかった場合でも、設定ファイルにて設定されている限りはそのノードはwatchdogクラスタの定義に含まれると考えられます。 クォーラムの存在と、合意の解決のためのすべての多数決ルールの計算は、watchdogクラスタを構成するwatchdogノードの数に基づいて行われます。

Pgpool-II V4.3ではメンバー非メンバーの概念を導入することにより動的にクラスタの定義を変えることができるようになりました。

設定されたノードの合計数ではなく、メンバーwatchdogの数に基づいてすべての多数決ルールの計算が行われます。

たとえば5つのノードのクラスタ(pgpool.confに5つのwatchdogノードが定義されています)では、クォーラムを作成するためには少なくとも3つのノードが生きていることが必要です。 動的なクラスタメンバー管理の機構では、クラスタはメンバーノード(メンバーノードは必ずしも生きている必要はありません)だけを数えるために、自分自身を再調整できます。 このことは、ある時点でクラスタが1つあるいは2つのノードだけから構成されているときに、実質的に単一の生きているノードが(メンバーシップ管理の設定によって)クォーラム存在の条件を満たすことができることを意味します。

注意

動的クラスタメンバーシップを使うことにより、split-brainが起こるリスクがあります。 設定において動的クラスタメンバーシップが必要かどうかを注意深くレビューし、関連する設定に保守的な設定を行うことを検討することを強く推奨します。

これらの設定項目は非メンバーであると印をつけられたノードを設定します。 これらの設定をデフォルト値のままにしておくと、V4.3以前の振る舞いになります。

wd_remove_shutdown_nodes (boolean)

有効ならば、SHUTDOWNノードは直ちに非メンバーであると印を付けられ、クラスタから削除されます。 以前停止されたノードが再起動すると、自動的にクラスタに追加されます。

デフォルトはoffです。

wd_lost_node_removal_timeout (integer)

LOST状態のwatchdogノードに非メンバーであると印を付けて、クラスタから削除するまでのタイムアウトの秒単位の時間です。 LOSTノードが再接続すると、クラスタメンバーシップは復元されます。

タイムアウトを0にすると、LOSTノードをクラスタから削除しません。

デフォルトは0です。

wd_no_show_node_removal_timeout (integer)

クラスタ起動時にノードが現れない(NO-SHOW)場合に、非メンバーであると印を付けるまでのタイムアウトの秒単位の時間です。 そのノードが起動してクラスタに接続すると、直ちにその非メンバーノードはクラスタメンバーになります。

タイムアウトを0にすると、NO-SHOWノードをクラスタから削除しません。

デフォルトは0です。

5.15.8. 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 が生きているかどうかを判断します。 Pgpool-IIサーバ間の設置場所が離れている場合、queryモードが有効かもしれません。

注意

クエリモードでは、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が同じなら、早いもの勝ちでリーダーになります。

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.15.9. 死活監視:ハートビートモードの設定

heartbeat_hostnameX (string)

ハートビート信号を送受信するためのIPアドレスまたは ホスト名を指定します。 パラメータ名の最後にある数字は「pgpool ノードID」で、0から始まります(たとえばheartbeat_hostname0)。 複数のハートビート信号の送り先をセミコロン(;)で区切って指定することができます。

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

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

heartbeat_portX (integer)

ハートビート信号を受信するためのUDPポート番号を指定します。 1つのみを指定してください。デフォルトは9694です。 パラメータ名の最後にある数字は「pgpool ノードID」で、0から始まります(たとえばheartbeat_port0)。

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

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

heartbeat_deviceX (string)

ハートビートの送受信に用いるネットワークデバイス名を指定します。 パラメータ名の最後にある数字は「pgpool ノードID」で、0から始まります(たとえばheartbeat_device0)。 複数のネットワークデバイス名をセミコロン(;)で区切って指定することができます。

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

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

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

例 5-12. Heartbeat 信号を用いた死活監視の設定例

Pgpool ノードが3つあり、それぞれのホスト名が server1、server2、server3 の場合、 heartbeat_hostnameheartbeat_port 及びheartbeat_deviceを以下のように設定します。

heartbeat_hostname0 = 'server1'
heartbeat_port0 = 9694
heartbeat_device0 = ''

heartbeat_hostname1 = 'server2'
heartbeat_port1 = 9694
heartbeat_device1 = ''

heartbeat_hostname2 = 'server3'
heartbeat_port2 = 9694
heartbeat_device2 = ''
      

wd_heartbeat_keepalive (integer)

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

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

wd_heartbeat_deadtime (integer)

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

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

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

wd_life_point (integer)

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

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

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

wd_lifecheck_query (string)

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

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

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

wd_lifecheck_dbname (string)

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

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

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

wd_lifecheck_user (string)

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

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

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

wd_lifecheck_password (string)

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

wd_lifecheck_passwordが空白のままであった場合、Pgpool-IIは空のパスワードを使用する前にpool_passwdファイルからwd_lifecheck_userのパスワードの取得を試みます。

wd_lifecheck_passwordにAES256-CBCで暗号化されたパスワードも指定することができます。 AESで暗号化されたパスワードを指定するためには、パスワード文字列は暗号化(aes-256-cbcアルゴリズムを使用)およびbase64でエンコードした後、AESを接頭辞として付けなければいけません。

暗号化されていないクリアテキストパスワードを指定するためには、TEXTをパスワード文字列の前に付けます。 例えば、パスワードとしてmypassを設定したい場合、パスワードフィールドにTEXTmypassと指定すべきです。

正しくフォーマットされたAESで暗号化されたパスワード文字列をpg_encコマンドを使用して作成することもできます。

注意: Pgpool-IIは暗号化されたパスワードを使うために起動時に有効な復号鍵を要求します。 Pgpool-IIに復号鍵を提供する方法の詳細は項6.4.2を参照してください。

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

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

デフォルトは''(空文字)です.