【製品解説】高可用性Postgres基盤の要:EDB Failover Manager(EFM)5.4 徹底解説
ミッションクリティカルなPostgres環境でダウンタイムを極限まで短縮する高可用性(HA)ソリューション:EDB Failover Manager(EFM)は、PostgreSQLおよび EDB Postgres Advanced Server(EPAS)のレプリケーションクラスタにおいて、24時間体制の障害監視と自動フェイルオーバーを実現するソフトウェアです。最新の 5.4 では外部スクリプトによる動的パスワード取得や、ロードバランサー向けHTTPエンドポイントの新設、各種主要ライブラリの更新、エッジケースにおける堅牢性の向上などが図られています。
解説動画
1. EFM(EDB Failover Manager)とは何か
高可用性を実現する障害監視・自動昇格ソリューション
EDB Failover Manager(EFM)は、PostgreSQLおよび EDB Postgres Advanced Server(EPAS)のプライマリ/スタンバイ構成(レプリケーションクラスタ)において、高可用性(High Availability)を実現するための障害監視・フェイルオーバー自動化管理ソフトウェアです。
通常のストリーミングレプリケーションでは手動対応が必要なプライマリ障害時の判断・切り替え処理を、EFMが24時間体制で監視・判断し、人間が介在することなく数秒〜数十秒でスタンバイデータベースを新しいプライマリへと自動昇格させます。
EFMのアーキテクチャと基本コンポーネント
- EFM Agent(エージェント): 各DBサーバー上でバックグラウンド動作し、ローカルのDBプロセス状態監視および他ノードとの相互通信を担当。
- Witness Node(ウィットネスノード): DBインスタンスを持たない監視専用ノード。スプリットブレイン発生時に合意形成を行うための第三者として機能。
- JGroupsベースのメッシュネットワーク: エージェント間をP2P(ピアツーピア)で通信・状態確認。中央監視サーバー不要でSPOF(単一障害点)を排除。
2. EFMの主な機能
- 高度なヘルスチェック: プロセス監視、クエリ応答性監視、PGDATA/WAL領域のディスクストレージ空き容量監視を統合。
- スプリットブレイン防止: クォーラム(過半数)判定、Fencing(フェンシング)スクリプト実行、STONITH的アプローチにより二重書き込みを防止。
- Virtual IP (VIP) & ネットワーク制御: 仮想IPの自動付け替えや、ロードバランサー(pgBouncer/HAProxy等)連携用のフックスクリプト機能を標準搭載。
- 計画メンテナンス(Switchover):
efm promote -switchoverコマンドにより、サービスダウンタイムほぼゼロで安全にロール切り替えを実行可能。 - 柔軟なアラート連携: メール通知(SMTP)、SNMPトラップ、SyslogおよびDatadog/Zabbix/PagerDuty等へのカスタムスクリプト連携に対応。
3. EFMの導入メリット
- SPOFのない分散アーキテクチャ: P2P方式により監視マネージャー自体の障害リスクを排除。
- PostgreSQL/EPASとの高い親和性: EDB開発のため内部仕様(WALログ同期、pg_control、pg_rewind等)に完全適合し、設定がシンプル。
- データ損失を抑える最適昇格ロジック: 適用遅延(WALラグ)が最も少ないスタンバイを自動選択し、RPO(目標復旧時点)を最小化。
- エンタープライズ・セキュリティ: Agent間TLS/SSL通信暗号化、実行権限分離、SSL証明書認証によるパスワード非保持運用に対応。
4. バージョン 5.4 の新機能・変更点
- パスワード管理の強化: 外部スクリプト経由でパスワードを動的取得する機能が追加され、シークレットマネージャー等と安全に連携可能。
- レプリケーション監視 & LB連携: ストリーミングレプリケーション確認用
efmコマンドの追加、およびプライマリ検出用HTTPエンドポイントの新設。 - 内部ライブラリの更新: Log4j (2.25.5)、Jakarta Mail (2.0.2)、PostgreSQL JDBC Driver (42.7.12) へアップグレード。
- 運用面の改善: エージェント停止時のロックファイル確認強化、systemd連携の修正、
/run・/run/lockディレクトリへの変更。 - 安定性の向上: 偶数ノードでのネットワーク分断時挙動やスイッチオーバー判定、単一クラスタへの同時参加処理など複数のエッジケースを修正。