[pgpool-general-jp: 1506] Re: pgpoolマスタとpostgresqlマスタ間のNW断時の挙動について

Tatsuo Ishii ishii @ sraoss.co.jp
2018年 3月 14日 (水) 21:55:49 JST


石井です。

Pgpool-II 3.7.2のバグである可能性があります。

Pgpool-II 3.7.2以外のバージョンを使用するか、git repositoryから3.7
stableのHEADを取得していただくか、本日リリースされたばかりのRPMをお試
しいただけますか?

本日リリースされたRPMは、3.7 stable HEADと同等の内容です。
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese:http://www.sraoss.co.jp

> 平光と申します。
> お世話になっております。
> 
> お聞きしたい事があり、投稿させて頂きます。
> 
> 3.7系で追加されたwatchdogクォーラム機能について質問させてください。
> 
> 以下の構成の環境において、pgpoolマスタ~postgresqlマスタ間のNWをダウン
> させた状態で仮想IP(またはpgpoolマスタ)に対してSQLを実行するとサービス
> がread-onlyであると返ってきます。
> 
> 以前の3.6系などクォーラム機能が追加される前はpgpoolがpostgresqlをフェ
> イルオーバさせていたのでサービスを継続できていましたが、3.7系では
> read-onlyになってしまっています。
> 
> ・環境
> CentOS 7.4
> pgpool-II 3.7.2(ノード3台)
> postgresql 10.2(ノード2台)
> 
> ・設定
> モード:ストリーミングレプリケーションモード
> watchdog:有効
> クォーラム機能:有効(デフォルト設定)
>   failover_when_quorum_exists = on
>   failover_require_consensus = on
>   allow_multiple_failover_requests_from_node = off
> 
> 
> NW断に利用したコマンドの例(pgpoolマスタで実行)
> ---
> # iptables -A OUTPUT -p all -s [pgpoolマスタ] -d [postgresqlマスタ] -j
> # DROP
> ---
> 
> SQLエラーの例
> ---
> $ psql -h [仮想IP] -p 9999 -U postgres -d postgres -c "create table
> test (i int)"
> ERROR:  cannot execute CREATE TABLE in a read-only transaction
> ---
> 
> pgpoolマスタでのshow pool_nodesの実行結果
> ---
>  node_id | hostname | port | status | lb_weight | role | select_cnt |
>  load_balance_node | replication_delay
> ---------+-------------+------+------------+-----------+---------+------------+-------------------+-------------------
>  0 | 192.168.1.1 | 5432 | quarantine | 0.500000 | standby | 0 | false |
>  0
>  1 | 192.168.1.2 | 5432 | up | 0.500000 | standby | 2 | true | 0
> (2 rows)
> ---
> ※192.168.1.1がpostgresqlマスタなので隔離されている
> 
> また、以下を確認しました。
> ・各pgpoolノードに対してpcp_watchdog_infoを実行した結果から
> pgpoolマスタはNW断前後でノードが切り替わっていないことを確認。
> 
> ・postgresqlサーバはフェイルオーバされていないことを確認。
> 
> 
> 上記の状況から、
> pgpoolマスタ~postgresqlマスタ間のNWをダウンさせた結果pgpoolマスタは
> postgresqlマスタを隔離したが、他の2台のpgpoolスタンバイノードは
> postgresqlマスタに正常にアクセスできるためクォーラム機能の投票の結果、
> フェイルオーバは実施されずpgpoolマスタも切り替わっていない。
> そのため、pgpoolマスタや仮想IPからはpostgresqlのスタンバイにアクセスし
> てしまうことでread-onlyになっていると推測しています。
> 
> このような場合はpgpool側のマスタがスタンバイのいずれかに切り替わればサー
> ビスには影響が出ないと思いのですが、当方の環境では切り替わりませんでし
> た。
> 
> 以下のページの「5.14.6. フェイルオーバの挙動の制御」の項目を見ると、上
> 記の挙動は想定通りにも見えますが、確認のため以下の2点を質問させてくだ
> さい。
> http://www.pgpool.net/docs/latest/ja/html/runtime-watchdog-config.html
> 
> 
> 質問:
> 1.前述の環境構成時にpgpoolマスタ~postgresqlマスタ間のNWをダウンさせ
> ると仮想IP、pgpoolマスタからのアクセスがread-onlyになってしまうのは仕
> 様通りでしょうか。
> 
> 2. 以下のようにクォーラム機能をoffに設定した場合は、クォーラム機能が
> 実装される以前の3.6系と同じ挙動になるという理解で正しいでしょうか。
>   failover_when_quorum_exists = off
>   failover_require_consensus = off
>   allow_multiple_failover_requests_from_node = off
> 
> 
> 以上です、よろしくお願いいたします。
> -- 
> +------------------------------------------------+
>   平光 友博 (Tomohiro Hiramitsu)
> 
>   NTT OSSセンタ 基盤技術ユニット DBMS担当
>   Tel: 03-5860-5115
>   E-mail: hiramitsu.tomohiro @ lab.ntt.co.jp
> +------------------------------------------------+
> 
> _______________________________________________
> pgpool-general-jp mailing list
> pgpool-general-jp @ sraoss.jp
> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp


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