Failover Manager(EFM)5.0.0
EFM とは何か?
EDB Failover Manager (EFM) は、EnterpriseDB Corporation が提供する高可用性ツールです。ストリーミングレプリケーションを使用するプライマリ-スタンバイ構成の PostgreSQL または EDB Postgres Advanced Server データベースクラスタを管理するために設計されています。主な機能は、クラスタの状態を監視し、ソフトウェアまたはハードウェアの問題でプライマリが故障した場合に、プライマリデータベースノードからスタンバイノードへの自動フェイルオーバーを提供することです。
どのように動作するか?
EFM は、クラスタ内の各ノード(プライマリノード、1つ以上のスタンバイノード、通常はウィットネスノード)にエージェント(プロセス)をデプロイします。
- 監視: エージェントは、ローカルデータベースの状態(該当する場合)を継続的に監視し、クラスタ内の他のエージェントと通信してノードまたはネットワークの障害を検出します。ウィットネスノードは、障害の確認を助け、スプリットブレイン(複数のノードが自身をプライマリと認識する状況)シナリオを防ぎます。
- 障害検出: プライマリデータベースまたはノードの障害が検出され、エージェントのクォーラム(多くの場合ウィットネスを含む)によって確認されると、フェイルオーバープロセスが開始されます。
- 昇格: EFM は、新しいプライマリになるのに最も適したスタンバイノード(通常は最新のデータを持つノード)を選択します。
- 再構成: 選択されたスタンバイを書き込み可能なプライマリロールに昇格させます。また、残りのスタンバイを新しいプライマリに追随するように再構成します(auto.reconfigure が無効になっていない限り)。
- クライアントリダイレクト: EFM は仮想 IP (VIP) アドレスを管理でき、現在のプライマリノードに自動的に割り当てることで、アプリケーションが一貫したアドレスに接続できるようにします。あるいは、接続プーラ(EDB PgBouncer や EDB Pgpool-II など)と連携したり、クライアント側の接続フェイルオーバー(libpq/JDBC などのライブラリを使用)に依存して、トラフィックを新しいプライマリにリダイレクトすることもできます。
EFM 5.0.0 を使用するメリット
- 自動化された高可用性: 中核となる利点は、フェイルオーバープロセスを自動的に処理することでデータベースのダウンタイムを最小限に抑え、プライマリ障害時の手動介入の必要性を減らすことです。
- データ保護: 最新のスタンバイを昇格させることで、フェイルオーバーイベント中の潜在的なデータ損失を最小限に抑えるのに役立ちます。
- 運用上のシンプルさの向上 (v5.0):
- 新しい efm create-standby CLI コマンドによる簡単なスタンバイ作成。
- 障害が発生したノードが削除されるまで明示的に追跡されるため、クォーラム管理が簡素化されました。
- 安全性の強化 (v5.0): ネットワークパーティション中のスプリットブレイン安全性を強化するための改善されたチェックが含まれます。
- 制御性と調整可能性の向上 (v5.0): 新しく洗練された設定プロパティを通じて、フェイルオーバーの動作、リカバリチェック、再構成中の WAL バックアップ、同期スタンバイ管理に対するより詳細な制御を提供します。
- 最新化とサポート: 更新された基盤ライブラリ(JGroups、JDBC ドライバ、Log4j など)を使用し、パフォーマンス、セキュリティ、安定性の向上が期待できます。
5.0.0 での新機能
- 新しい CLI コマンド: pg_basebackup を使用して新しいスタンバイデータベースを簡単に作成するための efm create-standby が追加されました。
- クォーラム処理の簡素化: 障害が発生したノード/エージェントは、efm reset-members を使用して明示的に削除されるまでクラスタメンバーシップの一部(クォーラムに影響)として残り、サイズ管理が簡素化されました。
- スプリットブレイン安全性の向上: 特にネットワーク問題による段階的なノード隔離中の障害時に、クラスタサイズのチェックが追加されました。
- 設定の強化:
- より詳細な制御のため、auto.resume.period が auto.resume.startup.period と auto.resume.failure.period に分割されました。
- 同期スタンバイに対するプライマリのチェック頻度を制御するための新しい check.num.sync.period プロパティ。
- 再構成中にスタンバイでの WAL バックアップを制御するための新しい backup.wal プロパティ。
- detach.on.agent.failure のデフォルトの動作がドキュメントの推奨値に合わせて変更されました(おそらくデフォルトで false になりました)。
- ロギングと出力:
- 起動ログは、個別の起動ログファイルの代わりに systemd/標準出力に向けられるようになりました。
- efm cluster-status の出力テーブルが長いホスト名に対応してリサイズされるようになりました。
- efm cluster-status-json の出力で、古い “xlog” 用語の代わりに “lsn” が使用されるようになりました。
- エージェントがデータベースに接続できない場合のログ情報が改善されました。
- 依存ライブラリのアップグレード: JGroups、PostgreSQL JDBC ドライバ、Log4J、Jakarta Mail、Json-Simple ライブラリがアップグレードされました。
- バグ修正: エージェントの正常なシャットダウン(systemctl stop)、障害/再起動したノードからの再参加試行の処理、ユーザーフェンシングスクリプトによる潜在的な状態不一致に関する問題に対処し、非常に古い EFM パスワード形式のアップグレードサポートが削除されました。
- チェックの削除: sudoers 内のデータベース OS ユーザーの不要なチェックや、古い OS バージョンに対するネットワークステータスチェックが削除されました。
日本語訳|EDB Failover Manager(EFM)5.0.0
※GoogleのAutoML Translationを使用して翻訳しております。
![]() |
![]() |
英語原文|EDB Failover Manager(EFM)5.0.0
![]() |
![]() |





