Pgpool-II利用時にDBサーバのノードダウンが検知される事象について

Enterprise Postgres の技術情報はこちら

Pgpool-IIを利用し、冗長化しているDBサーバにてノードダウンが検知されました。
原因と対処方法を教えてください。
[原因]
Pgpool-IIのフェイルオーバ機能を使用する際、パラメータ設定によっては一時的なネットワーク不調であってもフェイルオーバが動作する場合があります。

pgpool.confにおいてfailover_on_backend_error パラメータをデフォルト値またはonに設定している場合、データベースとPgpool-IIの間で確立しているいずれかのコネクションで通信エラーを検知すると自動フェイルオーバを実行する動作となります。
このとき検知したエラーに対してリトライを設定できないため、ごく短時間のみ発生しデータベースを切り替えるほどではないネットワーク異常に対しても、フェイルオーバが動作してしまいます。

特にクラウド環境においてはライブマイグレーション時など、無通信状態のコネクションが自動的に破棄されるケースがあります。 Pgpool-IIのコネクションプーリングでアイドル状態のコネクションがこの仕組みにより破棄された場合、Pgpool-IIが該当コネクションを利用しようとした時点で異常を検知するため、実際にコネクションが破棄されたタイミングとは異なるタイミングでフェイルオーバが発生することにもつながります。

[対処方法]
pgpool.confにおいてfailover_on_backend_error パラメータをoffに設定したうえで、ヘルスチェック機能を有効にすることをご検討ください。

ヘルスチェック機能の詳細は次のドキュメントを参照ください。
・Pgpool-II 4.1.0 文書
  5.8. ヘルスチェック

なお、上記以外の製品バージョン/レベルについては、該当するマニュアル箇所を参照してください。
製品・サービス情報
対象製品Enterprise Postgres
プラットフォームLinux
アンサー種別 運用/保守
このページの先頭へ