[pgpool-general-jp: 1741] Re: pgpool2と接続したレプリケーション構成でverify_backend_node_statusから出力されるプライマリからスタンバイへの接続エラーメッセージ出力を抑止したい
Masao Tomofuji (Fujitsu)
tomofu @ fujitsu.com
2024年 10月 4日 (金) 18:05:14 JST
石井様
富士通)友藤です。
お世話になっております。
先のlisten_addressesのお客様の設定値に関しまして補足させて頂きます。
> listen_addresses = '127.0.0.1, プライマリサーバ側のIPアドレス,スタンバイサーバ側のIPアドレス'
次のように、プライマリサーバ側のIPアドレスとスタンバイサーバ側のIPアドレスでは、別ネットワークの
IPアドレスが設定されております。'
listen_addresses = '127.0.0.1,〇〇〇.□□□. □□□, 〇〇〇.■■■.■■■.〇〇'
〇 :プライマリサーバ側のIPアドレスとスタンバイサーバ側のIPアドレスで同一値の部分
□/■:プライマリサーバ側のIPアドレスとスタンバイサーバ側のIPアドレスで異なる値の部分
以上、どうぞよろしくお願い致します。
> -----Original Message-----
> From: Tomofuji, Masao/友藤 正雄
> Sent: Wednesday, October 2, 2024 9:46 PM
> To: 'Tatsuo Ishii' <ishii @ postgresql.org>; 'pgpool-general-jp @ pgpool.net' <pgpool-general-jp @ pgpool.net>
> Subject: RE: [pgpool-general-jp: 1736] Re: pgpool2と接続したレプリケーション構成でverify_backend_node_statusから
> 出力されるプライマリからスタンバイへの接続エラーメッセージ出力を抑止したい
>
> 石井様
>
> 富士通)友藤と申します。
> この度はご返信いただきありがとうございます。
>
> 文末にて、ご確認依頼事項に対しまして回答させて頂きます。
>
> > -----Original Message-----
> > From: Tomofuji, Masao/友藤 正雄
> > Sent: Tuesday, October 1, 2024 5:55 PM
> > To: 'Tatsuo Ishii' <ishii @ postgresql.org>;
> > pgpool-general-jp @ pgpool.net
> > Subject: RE: [pgpool-general-jp: 1736] Re:
> > pgpool2と接続したレプリケーション構成でverify_backend_node_statusから
> > 出力されるプライマリからスタンバイへの接続エラーメッセージ出力を抑止したい
> >
> > > -----Original Message-----
> > > From: Tatsuo Ishii <ishii @ postgresql.org>
> > > Sent: Tuesday, October 1, 2024 5:47 PM
> > > To: pgpool-general-jp @ pgpool.net
> > > Cc: Tomofuji, Masao/友藤 正雄 <tomofu @ fujitsu.com>
> > > Subject: Re: [pgpool-general-jp: 1736] Re:
> > > pgpool2と接続したレプリケーション構成でverify_backend_node_statusから
> > > 出力されるプライマリからスタンバイへの接続エラーメッセージ出力を抑止したい
> > >
> > > >> 以下の構成にした場合に発生する事象について、対処方法をご相談させてください。
> > > >>
> > > >> [事象]
> > > >> * プライマリとスタンバイ間で、ストリーミングレプリケーションが正しく
> > > >> 接続されているにもかかわらず、以下のメッセージが出力されます。
> > > >> LOG: verify_backend_node_status: primary XXX does not connect to standby XXX
> > > >> LOG: verify_backend_node_status: primary XXX owns only XXX
> > > >> standbys out of XXX
> > > >>
> > > >> [事象が発生する構成]
> > > >> * pgpoolサーバーが1台、バックエンドノードが2台(プライマリ1台、
> > > >> スタンバイ1台)の構成で、バックエンドノードへの接続とレプリケーションの
> > > >> 接続で利用するネットワークが異なる場合に発生します。
> > > >> 具体的には、以下のようにIPアドレスを設定した場合に発生します。
> > > >> [pgpool Server: pgpool.conf]
> > > >> * backend_hostname0 = '${APP_HOST_DB#0}' # DB#0はプライマリ
> > > >> * backend_hostname1 = '${APP_HOST_DB#1}' # DB#1はスタンバイ
> > > >>
> > > >> [DB#1: postgresql.conf]
> > > >> * primary_conninfo = '... host=${REP_HOST_DB#0} ...' # backend_hostname0 と異なるホスト名
> > > >>
> > > >> [調査して判明したこと]
> > > >> * 過去のメーリスでは、backend_hostnameとprimary_conninfoで
> > > >> 異なるホスト名を指定した場合には、上記のエラーが発生するとコメントがありました。
> > > >> * [pgpool-hackers: 3943] Re: verify_backend_node_status does
> > > >> not recognise that the primary is connected to
> > > standbys
> > > >>
> > > >> https://www.pgpool.net/pipermail/pgpool-hackers/2021-July/003944.
> > > >> ht
> > > >> ml
> > > >>
> > > ====================================================================
> > > ==
> > > ===
> > > >> I think the reason you are seeing these errors is that pgpool tries to
> > > >> compare backend_hostname2 (dbod-ag-pg03.ch) and backend_port2 (6600)
> > > >> with host and port (dbod-hac-c02.ch, 6600) in primary_conninfo. In
> > > >> this case port matches but hostname does not match and Pgpool-II
> > > >> regards that the standbys do not connect to the primary node,.
> > > >>
> > > >> =================================================================
> > > >> ==
> > > >> ==
> > > >> ====
> > > >>
> > > >> * verify_backend_node_status()のソースコードを確認したところ、
> > > >> 確かにbackend_hostnameとprimary_conninfoのhostの文字列比較を
> > > >> 行っていることを確認しました。
> > > >> また、このエラーが出力される場合には、デタッチ対象のノードである
> > > >> フラグを更新できないため、detach_false_primary パラメータの処理が
> > > >> 動作しない影響があるように見えました。
> > > >>
> > > >> [相談事項]
> > > >> (1) verify_backend_node_status()では、バックエンドノードへの接続と
> > > >> レプリケーション接続でネットワークが異なる場合に対応していないという
> > > >> 認識で合ってますでしょうか。
> > > >
> > > > はい、ご認識の通りです。
> > > >
> > > >> (2) 上記(1)の認識が正しい場合、本事象のメッセージを抑止するために、
> > > >> detach_false_primaryパラメータを無効化するしかないでしょうか。
> > > >
> > > > はい、そうです。
> > > >
> > > >> [気になっている点]
> > > >> ・今回のエラーが出力される場合には、デタッチ対象のノードである
> > > >> フラグを更新できないため、detach_false_primary パラメータの処理が
> > > >> 動作しない影響がある、という認識は正しいでしょうか。
> > > >
> > > > primary/standbyそれぞれ1台の構成では、detach_false_primaryが検出できる
> > > > 異常状態は、standbyをオペミスなどで間違って昇格してしまい、primaryが2
> > > > 台、standbyが0台の状況だけです。この場合は、2台のprimaryのうちどちらが
> > > > 正しいprimaryなのかはpgpoolは判定できないため、node 1のprimaryを切り離
> > > > すことになります(決め打ちでnode番号のわかりprimaryを残します)。この一
> > > > 連の動作において、primaryとstandbyの接続性の検証は行われないので、今回
> > > > のエラーは影響しません。
> > >
> > > ところで念の為に教えていただきたいのですが、primary PostgreSQLの
> > > listen_addressesには、以下のように複数のIPが設定されている状態でしょうか?
> > >
> > > listen_addresses = '${APP_HOST_DB#0},${REP_HOST_DB#0}'
> >
> > ご指摘ありがとうございます。
> > 確認を取れ次第、返信させて頂きます。
>
> 想定されておられます通り、primary PostgreSQLのlisten_addressesには、
> 次のように複数のIPが設定されておりました。
> listen_addresses = '127.0.0.1, プライマリサーバ側のIPアドレス,スタンバイサーバ側のIPアドレス'
>
> 以上、どうぞよろしくお願い致します。
> > > --
> > > Tatsuo Ishii
> > > SRA OSS K.K.
> > > English: http://www.sraoss.co.jp/index_en/
> > > Japanese:http://www.sraoss.co.jp
pgpool-general-jp メーリングリストの案内