Pgpool-II 4.1 新機能:自動フェイルバック 【第4回】

この記事はPgpool-II 4.1の紹介【第1回】の中の自動フェイルバック 機能について詳しく紹介します。

Pgpool-II 4.1 の概要ついては、第1回記事を参照ください。

自動フェイルバック

Pgpool-IIでは、ヘルスチェック機能やPostgreSQLからのデータの読み出し/書き込みの失敗を契機にクラスタ配下のPostgreSQLを自動でフェイルオーバします。これにより故障したノードを管理下から切り離しサービスを継続させることができます。ただし、一度切り離されたPosrtgreSQLをPgpool-IIの管理下に復帰させるためには、管理者が復旧を確認し手動でアタッチする必要がありました。これは、一度障害が発生したと判断され切り離されたPostgreSQLの正常性をPgpool-II側から自動で判断することが困難なためでした。
Pgpool-II 4.1からは、一度切り離されてしまったスタンバイに対してPostgreSQLの正常性が確認できた際に自動で復帰させることができるようになりました。これにより、ネットワーク障害などによりスタンバイノードが切り離された場合においても、障害が復旧後にPgpool-IIが自動でスタンバイノードをフェイルバックするため、管理者の負担を軽減することが期待できます。

使用方法

自動フェイルバック機能では、新たに追加された以下のパラメータを使用します。

auto_failback

自動フェイルバック機能を有効化するためのパラメータです。デフォルトは、offです。

auto_failback_interval

自動フェイルバック機能の最短の実行間隔(秒単位)を指定できます。デフォルトは、60(秒)です。

また、ヘルスチェックストリーミングレプリケーションのチェックの機能と連携しているため、これらの機能も有効である必要があります。

注意点

ネットワークが不安定な環境で、自動フェイルバックを有効にした場合、自動フェイルオーバと自動フェイルバックを繰り返してしまい、サービスの性能に影響が出る可能性が考えられます。
このような環境では、auto_failback_intervalの間隔を長めに設定することで防ぐことができます。

システムのメンテナンスなどにより意図的にPostgreSQLの再起動や切り離しを行う場合注意が必要です。自動フェイルバック機能が有効な場合、意図せずメンテナンス中のPostgreSQLが復帰してしまう可能性があります。そのため、メンテナンス作業などを行う際には、一時的にauto_failbackをoffにしPgpool-IIのreloadで設定を反映させてから実施することをお勧めします。

まとめ

今回は、Pgpool-II 4.1で追加された自動フェイルバック機能について紹介しました。
この機能により、サーバ管理者の負担が軽減しPostgreSQLのクラスタ環境の運用がより容易になるかと思います。