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

`bin`ディレクトリへのパス(`pg_ctl`の呼び出しに使用)。

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 ファイル内のアドレスを検証しません。エージェントは、ファイル内の一部のアドレスに到達できないことを想定しています(たとえば、別のエージェントがまだ開始されていないことなど)。

  1. 他のノードを構成します。 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
  1. 他のノードでエージェントを起動します。任意のノードで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