Creating a Failover Manager cluster#

フェールオーバーマネージャーは、プライマリノードでソフトウェアまたはハードウェアに障害が発生した場合に、Postgresプライマリノードをスタンバイノードに自動的にフェールオーバーできる高可用性ツールです。

このチュートリアルでは、テスト環境でのFailover Managerクラスターの構成について説明します。運用展開用にフェールオーバーマネージャーを構成する前に、フェールオーバーマネージャーのドキュメントの残りの部分を読んで理解します。

例としてEDB Postgres Advanced Serverを使用して、フェールオーバーマネージャーはPostgreSQLでも動作します。チュートリアルを開始する前に、次の手順に従って基本的なインストールと構成を行います。

  • 1つのプライマリノードと1つまたは2つのスタンバイノードにデータベースサーバーをインストールして初期化します。インストールについては、 EDB Postgres Advanced Server ドキュメントを参照してください。

  • Postgresストリーミングレプリケーションをプライマリノードとスタンバイノードの間で構成および実行する必要があります。ストリーミングレプリケーションの構成の詳細については、 Configuring streaming replication を参照してください。

  • 各プライマリノードとスタンバイノードにフェールオーバーマネージャーをインストールします。 EDB Postgres Advanced Serverのインストール中に、各データベースホストでEDBリポジトリを構成しました。 EDBリポジトリとyum install コマンドを使用して、クラスターの各ノードにフェールオーバーマネージャーをインストールできます。

yum install edb-efm50

インストールプロセス中に、インストーラーは、 enterprisedbまたはpostgresが所有するクラスターのFailover Managerサービスを制御するスクリプトを呼び出す特権を持つefmという名前のユーザーを作成します。次の例では、 efm という名前のクラスターを作成します。

プライマリまたはスタンバイノードで構成プロセスを開始します。次に、構成ファイルを他のノードにコピーして、時間を節約します。

  1. 作業用構成ファイルを作成します。提供されたサンプルファイルをコピーして、フェールオーバーマネージャー構成ファイルを作成し、別のバージョンをインストールする場合は所有権とバージョン番号を修正します。

cd /etc/edb/efm-5.2

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-5.2/bin/efm encrypt efm

画面の指示に従って、データベースパスワードの暗号化バージョンを作成します。

  1. efm.properties を更新します。 <cluster_name>.properties ファイルこの例ではefm.properties には、Failover Managerクラスターの接続プロパティと動作を指定するパラメーターが含まれています。プロパティ設定の変更は、フェールオーバーマネージャーの起動時に適用されます。

このチュートリアルで記載されているプロパティは、フェールオーバーマネージャークラスターを構成するために必要な最小限のプロパティです。実稼働システムを構成する場合、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`に設定します。運用環境での使用については、フェールオーバーマネージャーユーザーガイドを参照してください。

stable.nodes.file

テストクラスターでは、起動を簡素化するために`true`に設定します。運用環境での使用については、フェールオーバーマネージャーユーザーガイドを参照してください。

  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-5.2 にコピーします。ファイルをコピーした後、ファイルの所有権を変更して、ファイルがefm:efmによって所有されるようにします。 efm.properties ファイルは、次のプロパティを除き、すべてのノードで同じにすることができます。

  • ノードのローカルアドレスを使用するようにbind.address プロパティを変更します。

  • ノードが監視ノードの場合は、is.witness をtrue に設定します。ノードが監視ノードの場合、ローカルデータベースインストールに関連するプロパティは無視されます。

  1. フェールオーバーマネージャークラスターを起動します。任意のノードで、Failover Managerエージェントを起動します。エージェントの名前はedb-efm-5.2 です。プラットフォーム固有のサービスコマンドを使用して、サービスを制御できます。たとえば、RHEL 7.xまたはRocky Linux/AlmaLinux/RHEL 8.xホストでは、次のコマンドを使用します。

systemctl start edb-efm-5.2
  1. エージェントが起動したら、次のコマンドを実行して、シングルノードクラスターのステータスを確認します。他のノードのアドレスがAllowed node host リストに表示されます。

/usr/edb/efm-5.2/bin/efm cluster-status efm
  1. 他のノードでエージェントを起動します。任意のノードでefm cluster-status efm コマンドを実行して、クラスターのステータスを確認します。

起動に失敗したエージェントがある場合は、指示に従ってsystemctl/journalctlを使用して、何が問題だったかに関する情報を取得します。フェールオーバーマネージャーバージョン4.xを使用している場合、代わりに起動ログを参照してください。

cat /var/log/efm-4.<x>/startup-efm.log

スイッチオーバーを実行する#

クラスターステータス出力が、プライマリノードとスタンバイノードが同期していることを示している場合、スイッチオーバーを実行できます。

/usr/edb/efm-5.2/bin/efm promote efm -switchover

このコマンドは、スタンバイを昇格させ、プライマリデータベースをクラスター内の新しいスタンバイとして再構成します。元に戻すには、コマンドを再度実行します。

オンラインヘルプにアクセスします#

オンラインヘルプにすばやくアクセスするには、次を使用します。

/usr/edb/efm-5.2/bin/efm --help