[pgpool-general-jp: 1552] Re: DBフェイルオーバ後の「show pool_nodes」コマンドの role列について

中村憲一 nakamura.kenichi @ po.ntt-tx.co.jp
2018年 6月 19日 (火) 10:20:51 JST


彭様

お世話になっております、中村です。


ご連絡および、修正対応を頂き、ありがとうございます。

修正内容を確認しました。
次期リリースを楽しみにしています。


よろしくお願い致します。


On 2018/06/18 17:58, Bo Peng wrote:
> 中村 憲一さま
> 
> 彭です。
> 
> ご報告頂いている不具合が以下のコミットで修正されました。
> 
>    https://git.postgresql.org/gitweb?p=pgpool2.git;a=commitdiff;h=3c02bd050ef66a0c7572639b3705efdd1c7cda6c
> 
> ご確認お願いします。
> 
> 以上、よろしくお願いします。
> 
> On Mon, 4 Jun 2018 12:02:43 +0900
> Bo Peng <pengbo @ sraoss.co.jp> wrote:
> 
>> 中村 憲一さま
>>
>> 彭です。
>>
>> 情報のご提供ありがとうございます。
>> ご報告頂いている事象を再現しました。
>> Watchdog の不具合の可能性が高いので、現在調査中です。
>>
>> 調査に進展がございましたら、連絡いたします。
>>
>> 以上、よろしくお願いします。
>>
>> On Fri, 1 Jun 2018 17:43:13 +0900
>> 中村憲一 <nakamura.kenichi @ po.ntt-tx.co.jp> wrote:
>>
>>> 彭様
>>>
>>> お世話になっております、中村です。
>>>
>>> ご連絡を頂きありがとうございます。
>>>
>>>
>>> 以下について、添付いたします。
>>>
>>> - Pgpool-II 設定ファイル:pgpool.conf
>>>  ・pgpoolマスタのファイル pgpool.conf-master
>>>  ・pgpoolスタンバイのファイル pgpool.conf-standby
>>>
>>> - PostgreSQL 設定ファイル:postgresql.conf
>>>  ・PostgreSQLマスタのファイル(スタンバイも同じファイルを使用)
>>>
>>> - フェイルオーバスクリプト
>>>  ・failover.sh
>>>
>>> - オンラインリカバリスクリプト
>>>  ・未設定のため、ファイルがありません
>>>
>>>
>>> 以上となります。
>>>
>>> ご確認のほど、よろしくお願い致します。
>>>
>>>
>>> On 2018/05/31 0:31, Bo Peng wrote:
>>>> 彭です。
>>>>
>>>> 確認しますので、以下の情報を提供していただけないでしょうか。
>>>>
>>>> - Pgpool-II 設定ファイル:pgpool.conf
>>>> - PostgreSQL 設定ファイル:postgresql.conf
>>>> - フェイルオーバスクリプト
>>>> - オンラインリカバリスクリプト
>>>>
>>>> 以上、よろしくお願いします。
>>>>
>>>> On Mon, 28 May 2018 14:44:30 +0900
>>>> 中村憲一 <nakamura.kenichi @ po.ntt-tx.co.jp> wrote:
>>>>
>>>>> お世話になっております、中村です。
>>>>>
>>>>> こちらのご確認のほうはいかがでしょうか?
>>>>>
>>>>>
>>>>> 原因特定のための情報など、不足しているのであれば再取得しますので、
>>>>> ご指摘いただければと思います。
>>>>>
>>>>>
>>>>> ご対応のほど、よろしくお願い致します。
>>>>>
>>>>>
>>>>> On 2018/05/11 11:13, 中村憲一 wrote:
>>>>>> はじめまして、お世話になります、中村と申します。
>>>>>>
>>>>>>
>>>>>> DBフェイルオーバを実施した際の、DBノード情報の各pgpoolノードへの
>>>>>> 伝播タイミングについてご質問させてください。
>>>>>>
>>>>>>
>>>>>> 【概要】
>>>>>> DBフェイルオーバ後に pgpoolのスタンバイノードから「show pool_nodes」コマ
>>>>>> ンドを
>>>>>> 実行すると、フェイルオーバによる role列の変更が反映されていませんでした。
>>>>>> また、role列の反映漏れに伴うエラーログが、pgpoolのスタンバイノード上で、
>>>>>> 継続的に出力されています。
>>>>>>
>>>>>> なお、pgpoolのマスタノードでは role列の情報が変わっています。
>>>>>> また、status 列の値は pgpoolの両ノードで up から down へと遷移しています。
>>>>>>
>>>>>> 【質問】
>>>>>> 上記の事象は、
>>>>>> ・pgpool-IIの再起動
>>>>>> ・障害になったDBノードの復旧と pcp_attach_node の実行
>>>>>> のいずれかを行うことで解消しますが、DBノードの情報の変更を、
>>>>>> 自動的に pgpoolのスタンバイノードへ反映させる方法はないでしょうか?
>>>>>>
>>>>>>
>>>>>> 以下、検証環境、DB構成および再現手順です。
>>>>>>
>>>>>> 【環境】
>>>>>>  CentOS 7.2
>>>>>>  PostgreSQL 10.2
>>>>>>  pgpool-II 3.7.3(3.7.2でも同様)
>>>>>>
>>>>>> 【構成】
>>>>>>  DBノード0(マスタ)
>>>>>>  DBノード1(スタンバイ)
>>>>>>   ※同期レプリケーション構成
>>>>>>  pgpoolノード0(MASTER)
>>>>>>  pgpoolノード1(STANDBY)
>>>>>>   ※pgpoolは2台構成
>>>>>>
>>>>>> 【再現手順】
>>>>>> 1. DBノード2台、pgpoolノード2台 ともに正常に稼動させる(pgpoolノード3台
>>>>>> でも同様)
>>>>>> 2. DBノード0(マスタ)を pg_ctl stop で停止させる
>>>>>> 3. DBノード0(マスタ)の障害を pgpoolノード0(MASTER)が検知し、DBフェイ
>>>>>> ルオーバを行う
>>>>>> 4. DBフェイルオーバにより、DBノード1(スタンバイ)がマスタに昇格する
>>>>>>
>>>>>> この状態で pgpoolノード1(STANDBY)の psqlより「show pool_nodes」コマンドを
>>>>>> 実行すると、実態と異なる、role列の値が出力されます。
>>>>>>
>>>>>> 5. DBノード0 をスタンバイとして復旧し、レプリケーション構成に再組み込み
>>>>>> (pcp_attach_node)する
>>>>>>
>>>>>> この状態で pgpoolノード1(STANDBY)上で「show pool_nodes」コマンドを実行
>>>>>> すると、
>>>>>> role列の結果が正しい値になります。
>>>>>>
>>>>>>
>>>>>>
>>>>>> 「show pool_nodes」で表示される情報は以下のとおり変化します。
>>>>>>
>>>>>> (1) 正常動作時
>>>>>> pgpoolノード0(MASTER)、pgpoolノード1(STANDBY)の status列、role列の値
>>>>>> が同じである。(正しい状態)
>>>>>>
>>>>>> ▼pgpoolノード0(MASTER)
>>>>>> -bash-4.2$ psql -p 9999 -U postgres -c "show pool_nodes" postgres
>>>>>>     node_id |    hostname    | port | status | lb_weight |  role   |
>>>>>> select_cnt | load_balance_node | replication_delay
>>>>>> ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
>>>>>>
>>>>>>     0       | 192.168.56.246 | 5432 | up     | 0.500000  | primary | 2
>>>>>>         | true              | 0
>>>>>>     1       | 192.168.56.243 | 5432 | up     | 0.500000  | standby | 0
>>>>>>         | false             | 0
>>>>>> (2 行)
>>>>>>
>>>>>> ▼pgpoolノード1(STANDBY)
>>>>>> -bash-4.2$ psql -p 9999 -U postgres -c "show pool_nodes" postgres
>>>>>>     node_id |    hostname    | port | status | lb_weight |  role   |
>>>>>> select_cnt | load_balance_node | replication_delay
>>>>>> ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
>>>>>>
>>>>>>     0       | 192.168.56.246 | 5432 | up     | 0.500000  | primary | 0
>>>>>>         | false             | 0
>>>>>>     1       | 192.168.56.243 | 5432 | up     | 0.500000  | standby | 0
>>>>>>         | true              | 0
>>>>>> (2 行)
>>>>>>
>>>>>>
>>>>>> (2) DBフェイルオーバ実施後
>>>>>> DBノード0(マスタ)を停止し、フェイルオーバで DBノード1(スタンバイ)が
>>>>>> マスタに昇格すると、
>>>>>> pgpoolノード0(MASTER)と pgpoolノード1(STANDBY)の status列の値は同じ
>>>>>> であるが、
>>>>>> role列の値が異なる。(誤った状態との認識)
>>>>>>
>>>>>> ▼pgpoolノード0(MASTER)
>>>>>> -bash-4.2$ psql -p 9999 -U postgres -c "show pool_nodes" postgres
>>>>>>     node_id |    hostname    | port | status | lb_weight |  role   |
>>>>>> select_cnt | load_balance_node | replication_delay
>>>>>> ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
>>>>>>
>>>>>>     0       | 192.168.56.246 | 5432 | down   | 0.500000  | standby | 2
>>>>>>         | false             | 0
>>>>>>     1       | 192.168.56.243 | 5432 | up     | 0.500000  | primary | 0
>>>>>>         | true              | 0
>>>>>> (2 行)
>>>>>>
>>>>>> ▼pgpoolノード1(STANDBY)
>>>>>> -bash-4.2$ psql -p 9999 -U postgres -c "show pool_nodes" postgres
>>>>>>     node_id |    hostname    | port | status | lb_weight |  role   |
>>>>>> select_cnt | load_balance_node | replication_delay
>>>>>> ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
>>>>>>
>>>>>>     0       | 192.168.56.246 | 5432 | down   | 0.500000  | primary | 0
>>>>>>         | false             | 0
>>>>>>     1       | 192.168.56.243 | 5432 | up     | 0.500000  | standby | 0
>>>>>>         | true              | 0
>>>>>> (2 行)
>>>>>>
>>>>>> ※しばらく放置しても role列の値に変化なし。
>>>>>>
>>>>>>
>>>>>> (3) DB復旧、再組み込み後
>>>>>> 停止した DBノード0(マスタ)をスタンバイとして再組み込みし、
>>>>>> pcp_attach_node すると
>>>>>> pgpoolノード1(STANDBY)の role列の値が、pgpoolノード0(MASTER)の role
>>>>>> 列の値と同じ値になった。(正しい状態)
>>>>>>
>>>>>> ▼pgpoolノード0(MASTER)
>>>>>> -bash-4.2$ pcp_attach_node -n 0
>>>>>> Password:
>>>>>> pcp_attach_node -- Command Successful
>>>>>>
>>>>>> -bash-4.2$ psql -p 9999 -U postgres -c "show pool_nodes" postgres
>>>>>>     node_id |    hostname    | port | status | lb_weight |  role   |
>>>>>> select_cnt | load_balance_node | replication_delay
>>>>>> ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
>>>>>>
>>>>>>     0       | 192.168.56.246 | 5432 | up     | 0.500000  | standby | 2
>>>>>>         | false             | 0
>>>>>>     1       | 192.168.56.243 | 5432 | up     | 0.500000  | primary | 0
>>>>>>         | true              | 0
>>>>>> (2 行)
>>>>>>
>>>>>> ▼pgpoolノード1(STANDBY)
>>>>>> -bash-4.2$ psql -p 9999 -U postgres -c "show pool_nodes" postgres
>>>>>>     node_id |    hostname    | port | status | lb_weight |  role   |
>>>>>> select_cnt | load_balance_node | replication_delay
>>>>>> ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
>>>>>>
>>>>>>     0       | 192.168.56.246 | 5432 | up     | 0.500000  | standby | 0
>>>>>>         | false             | 0
>>>>>>     1       | 192.168.56.243 | 5432 | up     | 0.500000  | primary | 0
>>>>>>         | true              | 0
>>>>>> (2 行)
>>>>>>
>>>>>>
>>>>>> 以上です。
>>>>>> ご確認のほど、よろしくお願い致します。
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> -- 
>>>>> /*------------------------------------------------
>>>>> 中村 憲一
>>>>> NTTテクノクロス株式会社 IV2BU
>>>>> 横浜アイマークプレイス13階
>>>>> TEL  : 045-212-7393
>>>>> MAIL : nakamura.kenichi @ po.ntt-tx.co.jp
>>>>> ------------------------------------------------*/
>>>>>
>>>>> _______________________________________________
>>>>> pgpool-general-jp mailing list
>>>>> pgpool-general-jp @ sraoss.jp
>>>>> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp
>>>>
>>>>
>>>
>>> -- 
>>> /*------------------------------------------------
>>> 中村 憲一
>>> NTTテクノクロス株式会社 IV2BU
>>> 横浜アイマークプレイス13階
>>> TEL  : 045-212-7393
>>> MAIL : nakamura.kenichi @ po.ntt-tx.co.jp
>>> ------------------------------------------------*/
>>
>>
>> -- 
>> Bo Peng <pengbo @ sraoss.co.jp>
>> SRA OSS, Inc. Japan
>>
>> _______________________________________________
>> pgpool-general-jp mailing list
>> pgpool-general-jp @ sraoss.jp
>> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp
> 
> 

-- 
/*------------------------------------------------
中村 憲一
NTTテクノクロス株式会社 IV2BU
横浜アイマークプレイス13階
TEL  : 045-212-7393
MAIL : nakamura.kenichi @ po.ntt-tx.co.jp
------------------------------------------------*/



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