Creating a Failover Manager cluster¶
フェールオーバーマネージャーは、プライマリノードでソフトウェアまたはハードウェアに障害が発生した場合に、Postgresプライマリノードがスタンバイノードに自動的にフェールオーバーできる高可用性ツールです。
このチュートリアルでは、テスト環境でのFailover Managerクラスターの構成について説明します。運用展開用にフェールオーバーマネージャーを構成する前に、残りのフェールオーバーマネージャードキュメントを読んで理解してください。
EDB Postgres Advanced Serverを例として使用します(フェールオーバーマネージャーはPostgreSQLでも動作します)。チュートリアルを開始する前に、次の基本的なインストールと構成の手順に従います。
- 1つのプライマリノードと1つまたは2つのスタンバイノードにデータベースサーバをインストールおよび初期化します。インストールの詳細については、
EDB Postgres Advanced Server ドキュメントを参照してください。
- Postgresストリーミングレプリケーションを構成し、プライマリノードとスタンバイノード間で実行する必要があります。ストリーミングレプリケーションの構成の詳細については、
Configuring streaming replication を参照してください。
各プライマリノードとスタンバイノードにFailover Managerをインストールします。 EDB Postgres Advanced Serverのインストール中に、各データベースホストでEDBリポジトリを構成しました。 EDBリポジトリと
yum installコマンドを使用して、クラスターの各ノードにフェールオーバーマネージャーをインストールできます。
yum install edb-efm47
インストールプロセス中に、インストーラーは、enterprisedbまたはpostgresが所有するクラスターのFailover
Managerサービスを制御するスクリプトを呼び出す特権を持つefmという名前のユーザーを作成します。次の例では、
efm という名前のクラスターを作成します。
プライマリまたはスタンバイノードで構成プロセスを開始します。次に、構成ファイルを他のノードにコピーして、時間を節約します。
1.作業用構成ファイルを作成します。提供されたサンプルファイルをコピーしてフェールオーバーマネージャー構成ファイルを作成し、別のバージョンをインストールする場合は所有権とバージョン番号を修正します。
cd /etc/edb/efm-4.7
cp efm.properties.in efm.properties
cp efm.nodes.in efm.nodes
chown efm:efm efm.properties
chown efm:efm efm.nodes
1.プロパティファイルに必要な encrypted password を作成します。
/usr/edb/efm-4.7/bin/efm encrypt efm
画面の指示に従って、データベースパスワードの暗号化バージョンを生成します。
1.efm.properties を更新します。 <cluster_name>.properties
ファイル(この例ではefm.properties )には、Failover
Managerクラスターの接続プロパティと動作を指定するパラメーターが含まれています。プロパティ設定の変更は、フェールオーバーマネージャーの起動時に適用されます。
- このチュートリアルで説明されているプロパティは、フェールオーバーマネージャークラスターを構成するために必要な最小限のプロパティです。実稼働システムを構成している場合、フェールオーバーマネージャーのオプションの詳細については、
Configuring Failover Manager を確認してください。
すべてのクラスターノードで次のプロパティの値を指定します。
Property |
Description |
|---|---|
db.user |
データベースユーザーの名前。 |
db.password.encrypted |
データベースユーザーの暗号化されたパスワード。 |
db.port |
データベースによって監視されるポート。 |
db.database |
データベースの名前。 |
db.service.owner |
data`ディレクトリの所有者(通常は`postgres`または`enterprisedb)。データベースがサービスとして実行されている場合にのみ必要です。 |
db.service.name |
データベースサービスの名前(サーバーの再起動に使用)。データベースがサービスとして実行されている場合にのみ必要です。 |
db.bin |
|
db.data.dir |
EFMが`recovery.conf`ファイルまたは`standby.signal`ファイルを検索または作成する`data`ディレクトリ。 |
user.email |
電子メール通知を受信する電子メールアドレス(通知テキストはエージェントログファイルにもあります)。 |
bind.address |
フェールオーバーマネージャーに使用するノードとポートのローカルアドレス。フォーマットは次のとおりです。bind.address=1.2.3.4:7800 |
is.witness |
監視ノード上の`true`、およびプライマリまたはスタンバイの場合は`false`。 |
ping.server.ip |
インターネットにアクセスできないネットワークで実行している場合は、 `ping.server.ip`をネットワークで利用可能なアドレスに設定します。 |
auto.allow.hosts |
テストクラスターでは、 true に設定して起動を簡素化します。実稼働での使用については、 Failover Managerユーザーガイドを参照してください。 |
stable.nodes.file |
テストクラスターでは、 true に設定して起動を簡素化します。実稼働での使用については、 Failover Managerユーザーガイドを参照してください。 |
1.efm.nodes を更新します。 <cluster_name>.nodes
ファイル(この例ではefm.nodes
)は、起動時にエージェントに読み取られ、クラスターの残りの部分を見つける方法を指示します。または、最初に起動したノードの場合、後続のノードの承認を簡素化するために使用できます。クラスター内の各ノードのアドレスとポートをこのファイルに追加します。
1つのノードはメンバーシップコーディネーターとして機能します。少なくとも会員コーディネーターの住所をリストに入れてください。例:
1.2.3.4:7800
1.2.3.5:7800
1.2.3.6:7800
Failover Managerエージェントは、 efm.nodes
ファイル内のアドレスを検証しません。エージェントは、ファイル内の一部のアドレスに到達できないことを想定しています(たとえば、別のエージェントがまだ開始されていないことなど)。
他のノードを構成します。
efm.propertiesおよびefm.nodesファイルを、サンプルクラスター内の他のノードの/etc/edb/efm-4.7にコピーします。ファイルをコピーした後、ファイルの所有権を変更して、ファイルがefm:efmによって所有されるようにします。efm.propertiesファイルは、次のプロパティを除いて、すべてのノードで同じにすることができます。
bind.addressプロパティを変更して、ノードのローカルアドレスを使用します。ノードがwitnessノードの場合、
is.witnessをtrueに設定します。ノードが監視ノードの場合、ローカルデータベースのインストールに関連するプロパティは無視されます。
1.フェールオーバーマネージャークラスターを起動します。任意のノードで、Failover
Managerエージェントを起動します。エージェントの名前はedb-efm-4.7
です。プラットフォーム固有のサービスコマンドを使用して、サービスを制御できます。たとえば、RHEL
7.xまたはRocky Linux/AlmaLinux/RHEL
8.xホストでは、次のコマンドを使用します。
systemctl start edb-efm-4.7
1.エージェント起動後、次のコマンドを実行してシングルノードクラスターの状態を確認します。他のノードのアドレスがAllowed node host
リストに表示されます。
/usr/edb/efm-4.7/bin/efm cluster-status efm
他のノードでエージェントを起動します。任意のノードで
efm cluster-status efmコマンドを実行して、クラスターのステータスを確認します。
いずれかのエージェントの起動に失敗した場合は、起動ログで問題の詳細を確認します。
cat /var/log/efm-4.7/startup-efm.log
スイッチオーバーを実行する¶
クラスターステータスの出力に、プライマリノードとスタンバイノードが同期していることが示されている場合、スイッチオーバーを実行できます。
/usr/edb/efm-4.7/bin/efm promote efm -switchover
このコマンドは、スタンバイをプロモートし、プライマリデータベースをクラスター内の新しいスタンバイとして再構成します。元に戻すには、コマンドを再度実行します。
オンラインヘルプにアクセスする¶
オンラインヘルプにすばやくアクセスするには、次を使用します。
/usr/edb/efm-4.7/bin/efm --help