[pgpool-general-jp: 1230] Re: watchdogのtrusted_serverの動きについて

Yugo Nagata nagata @ sraoss.co.jp
2013年 11月 11日 (月) 15:32:21 JST


On Thu, 7 Nov 2013 20:16:26 +0900
Takanori Urata <takanori.urata @ thot.co.jp> wrote:

> to:長田さま
> 
> ご連絡をいただきありがとうございます。
> 
> >>
> >> また、可能であればpgpool-II間の死活監視と上位サーバとの死活監視に対して重み付け等が設定できたりすれば、
> 利用者の判断に委ねることが出来るのではないかとも思います。
> >
> >「死活監視の重み付け」というのがよくイメージできなかったのですが、
> >どのようなものをお考えかおしえて頂けると助かります。
> >例えば「1:2」のように数字の比などで表せるものではないように思われます。
> 
> 当方の説明が不足(下手)で申し訳ございません。
> 「重み付け」と言うより「優先順位」と表現したほうがいいでしょうか?
> 
> 現状の仕様では上位サーバ(trusted_servers)との死活監視に異常があった場合
> 無条件にpgpool-IIの異常(ダウン)と判断しているとの事ですが。。。
> 
> 死活監視の条件を下記のように出来たらよいのではないかと考えました。
> 【死活監視の経路】
> 1.pgpool-II−pgpool-II
> 2.pgpool-II−上位サーバ
> 【異常(ダウン)の判定】
> 1.pgpool-II−pgpool-IIの死活監視が異常の場合
> 2.pgpool-II−上位サーバの死活監視が異常の場合
> 3.pgpol-II−pgpool-IIの死活監視は正常だが、pgpool-II−上位サーバが異常
> 4.pgpool-II−上位サーバの死活監視は正常だが、pgpool-II−pgpool-IIが異常
> 5.pgpool-II−pgpool-II、pgpool-II−上位サーバ共に異常
> 
> この異常(ダウン)の判定方法を設定ファイルで利用者が選択出来るようになればpgpool-IIの状態の判定を利用者に委ねることが可能ではないでしょうか?

{pgpool-II 同士の相互監視が正常 or 異常}×{上位サーバとの接続が正常 or 異常}
の組み合わせで、全体としてダウンするかどうかの条件を設定できればよい。

という感じでしょうか。

この場合前半の「pgpool-II 同士の相互監視が正常 or 異常」を無視してしまうと
そもそもの相互監視の意味が無くなってしまうので、こちらが「異常」の場合は全体
としても「異常」と見なすのが自然かと考えています。

また後半の「上位サーバとの接続」は、active である pgpool-II が複数存在する
「スプリットブレイン」と呼ばれる状態を回避するために有用な方法です。
(参考: http://lets.postgresql.jp/documents/technical/pgpool-II-3.3-watchdog/1#split_brain)

そもそも trusted_servers は pgpool の異常を判断するための設定ですので、
「上位サーバとの接続が途切れた場合に pgpool の異常と見なされては困る」
という場合には、このオプションを空欄するのが自然と考えます。
(その場合上位サーバとの接続チェックは行われません。
 ただし、スプリットブレインに陥る可能性は高くなってしまいます。)

こういった理由からこれらの条件に優先順位というものはなく、どちらかが異常ならば
全体としても異常とみなす、という設計になっています。

「異常(ダウン)の判定方法を設定ファイルで利用者が選択出来る」という観点ですと、
「上位サーバとの接続チェックを行うか、行わないか」という部分が該当するかと思われます。


> 
> 素人考えで大変恐縮ですがご検討をいただければ幸いです。
> 
> 以上、宜しくお願い致します。
> 
> 
> 2013年11月7日 19:54 Yugo Nagata <nagata @ sraoss.co.jp>:
> 
> > 長田です。
> >
> > On Wed, 6 Nov 2013 21:38:27 +0900
> > Takanori Urata <takanori.urata @ thot.co.jp> wrote:
> >
> > > to:長田さま
> > >
> > > ご連絡をいただきありがとうございます。
> > >
> > > > 上位サーバ(trusted_servers に指定したサーバをそう呼んでいます)への接続
> > > > が失敗した場合、上位サーバに障害が発生した可能性も考えられるのですが、
> > > > これは回線障害や pgpool-II サーバの障害と切り分けられないため、現状の
> > > > 実装では pgpool-II 自体がダウン状態へ遷移するようにしています。
> > >
> > 上位サーバ(trusted_servers)に指定がある場合、pgpool-II間で正常に死活監視が出来ている場合でも、pgpool-IIの異常と判定しているということですね?
> >
> > はい。その通りです。
> >
> > >
> > >
> > という事は、上位サーバを利用する場合は複数台指定したほうがよいと言うことで間違いないようなので、出来れば公式サイト等にそのように記述いただけると助かります。
> >
> > ご提案ありがとございます。
> > ドキュメントに記載させて頂きます。
> >
> > >
> > >
> > また、可能であればpgpool-II間の死活監視と上位サーバとの死活監視に対して重み付け等が設定できたりすれば、利用者の判断に委ねることが出来るのではないかとも思います。
> >
> > 「死活監視の重み付け」というのがよくイメージできなかったのですが、
> > どのようなものをお考えかおしえて頂けると助かります。
> > 例えば「1:2」のように数字の比などで表せるものではないように思われます。
> >
> >
> > >
> > > 以上、宜しくお願い致します。
> > >
> > >
> > >
> > > 2013年11月6日 19:53 Yugo Nagata <nagata @ sraoss.co.jp>:
> > >
> > > > 長田です。
> > > >
> > > > 返信が遅くなり申し訳ありません。
> > > >
> > > > On Thu, 31 Oct 2013 19:01:25 +0900
> > > > Takanori Urata <takanori.urata @ thot.co.jp> wrote:
> > > >
> > > > > to:pgpool-general-jp メーリングリスト 御中
> > > > >
> > > > > pgpool-II 3.3.1のwatchdogを下記のように設定しています。
> > > > >
> > > > > [pgpool.confの抜粋]
> > > > > use_watchdog = on
> > > > > trusted_servers = 'WS01'  <= (DB01 / DB02共同じ)
> > > > >
> > > > > wd_hostname = 'DB01'
> > > > > wd_lifecheck_method = 'heartbeat'
> > > > > heartbeat_destination0 = 'DB02'
> > > > >
> > > > > other_pgpool_hostname0 = 'DB02'
> > > > >
> > > > > この時、WS01とシャットダウンするとpcp_watchdog_infoコマンドのステータスが”4”になります。
> > > > >
> > > > > しかし、WS01を再起動してもpgpool-IIの状態は変化しません。
> > > > >
> > > > > 死活監視はheartbeatでDB01-DB02間でも行われているのではないでしょうか?
> > > > > なぜ、WS01がシャットダウンした段階で、pgpool-IIのステータスが"4(ダウン)"になってしまうのでしょうか?
> > > >
> > > > 上位サーバ(trusted_servers に指定したサーバをそう呼んでいます)への接続
> > > > が失敗した場合、上位サーバに障害が発生した可能性も考えられるのですが、
> > > > これは回線障害や pgpool-II サーバの障害と切り分けられないため、現状の
> > > > 実装では pgpool-II 自体がダウン状態へ遷移するようにしています。
> > > >
> > > > また、一度ダウン状態になった pgpool-II は原因調査の後手動で再起動することを前提
> > > > としているため、WS01 を再起動しただけでは状態は元に戻りません。
> > > >
> > > > そのため trusted_servers には常にアクセス可能であることが前提のサーバを指定する
> > > > 必要があります。ただし、複数のサーバをカンマ区切りで指定可能であり、その内どれか
> > > > 1つでもアクセス可能であれば障害発生とはみなされません。
> > > >
> > > > >
> > > > > ちなみに、WS01をシャットダウンした状態でDB01-DB02間でpingが通ることも確認しました。
> > > > >
> > > > > 以上、宜しくお願いします。
> > > >
> > > >
> > > > --
> > > > Yugo Nagata <nagata @ sraoss.co.jp>
> > > >
> > >
> > >
> > >
> > > --
> > > // 2011/9/1付けで社名を変更致しました。
> > > // 何卒これまでにも増してご支援のほどよろしくお願い申し上げます。
> > >
> > > // thot株式会社(thot, inc.)
> > > // 旧社名:ブルーオーシャンシステムズ株式会社
> > > // 営業部 浦田 隆徳 Takanori Urata
> > > //  080-3539-2703
> > > //  takanori.urata @ thot.co.jp
> > > // 〒811-1302 福岡市博多区住吉4-1-5
> > > //                   福岡GOAビル 9F
> > > //  TEL:092-434-4300 FAX:092-434-7556
> >
> >
> > --
> > Yugo Nagata <nagata @ sraoss.co.jp>
> >
> 
> 
> 
> -- 
> // 2011/9/1付けで社名を変更致しました。
> // 何卒これまでにも増してご支援のほどよろしくお願い申し上げます。
> 
> // thot株式会社(thot, inc.)
> // 旧社名:ブルーオーシャンシステムズ株式会社
> // 営業部 浦田 隆徳 Takanori Urata
> //  080-3539-2703
> //  takanori.urata @ thot.co.jp
> // 〒811-1302 福岡市博多区住吉4-1-5
> //                   福岡GOAビル 9F
> //  TEL:092-434-4300 FAX:092-434-7556


-- 
Yugo Nagata <nagata @ sraoss.co.jp>


pgpool-general-jp メーリングリストの案内