ストリーミングレプリケーションの構成

PEMストリーミングレプリケーションウィザードは、ストリーミングレプリケーションシナリオを作成または変更するプロセスをガイドします。ウィザードを使用して次のことができます。

  • レプリケーションシナリオでマスターノードおよびスタンバイノードとして機能する新しいサーバーをインストールします。

  • レプリケーションシナリオでマスターノードとスタンバイノードの役割で既存のサーバーを構成します。

  • 新規または既存のスタンバイサーバーを既存のレプリケーションシナリオに追加します。

既存のサーバーをマスターノードまたはレプリケーションシナリオ内のスタンバイノードとして使用してレプリケーションを構成する場合、サーバーはグラフィカルインストーラーでインストールされている必要があります。現時点では、ストリーミングレプリケーションウィザードは、RPMパッケージを介してインストールされた既存のサーバーをサポートしていません。

Streaming Replicationウィザードは、PEMエージェントバージョン6.0以降でサポートされています。ストリーミングレプリケーションウィザードは非推奨であり、PEMの将来のリリースでは使用できなくなることに注意してください。

レプリケーションシナリオの各ノードには、常駐PEMエージェントが必要です。現時点では、マスターノードまたはスタンバイノードのリモート監視はサポートされていません。 PEMエージェントをインストールした後、以下を行う必要があります。

  • Linuxホストで、PEMエージェント設定ファイル( agent.cfg )を変更して、次のパラメーターをtrueに設定します。

allow_package_management

allow_server_restart

allow_streaming_replication

agent.cfg ファイルは次のディレクトリのいずれかにあります:

  • グラフィカルインストーラーを使用してPEMをインストールした場合: /opt/edb/pem/agent/etc/agent.cfg

  • RPMを使用してPEMをインストールした場合: /usr/edb/pem/agent/etc/agent.cfg

  • Windowsホストで、次の場所にあるWindowsレジストリを変更します。

    (HKEY_LOCAL_MACHINE/Software/Wow6432Node/EnterpriseDB/PEM/agent)

    次のエントリをtrueに設定します。

    AllowPackageManagement

    AllowServerRestart

    AllowStreamingReplication

構成ファイルまたはレジストリを更新した後、PEMエージェントサービスを再起動します。

  • Linuxホストでは、コマンドラインを開き、スーパーユーザー権限を取得して、コマンド /etc/init.d/pemagent restart (RHELまたはCentOS 6.xの場合)または systemctl restart pemagent (RHELまたはCentOS 7.xの場合)を入力します。

  • Windowsホストでは、 Services アプレットを使用して Postgres Enterprise Manager - pemAgent サービスを再起動します。

次に、ストリーミング複製ウィザードを開くには、 Management メニューから Streaming Replication を選択します。ストリーミングレプリケーションウィザードがあなたを歓迎します。

The Streaming Replication wizard's Welcome window

ストリーミングレプリケーションウィザードのウェルカムウィンドウ

Next をクリックして続行します。 Refresh Packages ダイアログが開き、現在インストールされているパッケージについてPEMサーバーに保存されているパッケージデータを更新するオプションが提供されます。

Use the popup to refresh package data

ポップアップを使用してパッケージデータを更新します

PEM installed_packagesプローブは、PEMエージェントによって監視されているホストに存在する現在インストールされているパッケージに関する情報を取得します。 [はい]を選択して、プローブを呼び出し、PEMサーバーに保存されている情報を更新します。最後のプローブ実行以降に監視対象ホストにサーバーを追加していない場合(デフォルトでは、installed_packagesプローブは24時間ごとに実行されます)、プローブを実行せずに続行するには[いいえ]をクリックします。

Next をクリックして続行します。

Specify information about the master node

マスターノードに関する情報を指定します

master node selection ダイアログのフィールドでは、ストリーミングレプリケーションシナリオのマスターノードに関する情報を入力するよう求められます。

  • Host フィールドのドロップダウンリストボックスを使用して、アクティブなエージェントのリストからマスターノードを監視するPEMエージェントの名前を選択します。リストボックスに表示するには、PEMエージェント構成ファイルでallow_streaming_replication、allow_package_management、およびallow_server_restartを有効(trueに設定)に設定する必要があります。レプリケーションシナリオの各ノードには常駐エージェントが必要であることに注意してください。レプリケーションノードのリモート監視はサポートされていません。

  • Database server フィールドのドロップダウンリストボックスを使用して、マスターノードのサーバーまたはサーバーバージョンを指定します。以下を選択できます。

    • レプリケーションシナリオのマスターノードとして機能する、以前にインストールされたサーバー。既存のサーバーには、説明に(インストール済み)という単語が含まれています。既存のサーバーを選択すると、``検証``ボタンが有効になります。

    • ストリーミングレプリケーションシナリオを構成するときにPEMがインストールする新しいマスターノードのサーバーバージョン。新しいサーバーを作成するには、説明に(インストール済み)という単語が含まれていないサーバーバージョンを選択します。

  • Replication host address フィールドのドロップダウンリストボックスを使用して、マスターノードが常駐するホストのアドレスを選択します。

  • 必要に応じて、[複製スロット名]フィールドに複製スロットの名前を入力します。 PEMサーバーはマスターノードに複製スロットを作成し、スタンバイノードのrecovery.confファイルにエントリを追加します。複製スロット名には、小文字、数字、およびアンダースコア文字を含めることができます。このオプションは、データベースサーバーバージョン9.4以降でのみ有効です。

    レプリケーションスロットの詳細については、次の場所にあるPostgreSQL Coreのドキュメントを参照してください。

    http://www.postgresql.org/docs/current/static/warm-standby.html#STREAMING-REPLICATION-SLOTS

Next をクリックして続行します。

Specify information about the master node

マスターノードに関する情報を指定します

マスターノードの認証情報を提供するには、 Master Server Authentication ダイアログを使用します。

  • Replication user name フィールドを使用して、データベーススーパーユーザーまたはREPLICATION特権を持つ既存のロールの名前、またはレプリケーション関連のトランザクション中に使用するためにPEMによって作成されるロールの名前を指定します。権限が不十分な既存のユーザーの名前を指定すると、PEMはエラーを返します。

  • レプリケーションユーザーに関連付けられるパスワードを指定するには、 Replication password フィールドを使用します。

  • マスターノード上のデータベーススーパーユーザーの名前を指定するには、 Database user name フィールドを使用します。

  • データベースのスーパーユーザーに関連付けられているパスワードを指定するには、 Database password フィールドを使用します。

既存のサーバーをレプリケーションシナリオのマスターノードとして使用している場合は、[検証]ボタンを使用して、接続情報が提供されていることを確認する必要があります。 [検証]ボタンを押すと、サーバーは指定された資格情報で接続を試みます。

Next をクリックして続行します。

Select the standby servers

スタンバイサーバーを選択

Standby Server Selection ダイアログの表を使用して、1つ以上のスタンバイノードのプロパティを提供します。追加アイコン(+)をクリックして、テーブルにエントリを追加します。

Select the standby servers

スタンバイサーバーを選択

スタンバイノードに関する情報を提供するには、 Standby Server Options form を使用します。

  • レプリケーションシナリオのスタンバイノードにあるエージェントの名前を選択するには、 Agent ドロップダウンリストボックスを使用します。レプリケーションシナリオの一部であるスタンバイノードのプロパティは編集できないことに注意してください。

  • IP address ドロップダウンリストボックスを使用して、スタンバイノードのIPアドレスを選択します。

  • レプリケーションシナリオでスタンバイノードとして動作しているときにスタンバイノードを読み取り専用クエリに使用する必要がある場合は、 Hot standby フィールドをYesに設定します。

  • 同期レプリケーションを有効にするには、 Synchronous? フィールドを Synchronous? に設定します。ストリーミング複製はデフォルトでは非同期です。スタンバイノードが同期として指定されている場合、トランザクションは、マスターノードとスタンバイノードの両方のトランザクションログに書き込まれるまでコミットされません。

    同期レプリケーションのシナリオでは、フェイルオーバーが発生した場合のデータ損失はほとんどありませんが、同期レプリケーションを使用すると、各トランザクションの処理時間が増加します。

  • Priority ドロップダウンリストボックスを使用して、マスターノードのpostgresql.confファイルにスタンバイノードがリストされる順序を指定します。たとえば、1を選択してスタンバイで最初にリストする必要があることを示し、2を選択してノードを2番目にリストする必要があることを示します。

スタンバイを既存のレプリケーションシナリオに追加する場合、PEMはレプリケーション状態フィールドにレプリケーションマスターのIDを表示し、アプリケーション名フィールドに(pg_stat_replicationテーブルから)アプリケーションの名前を表示します。これらの値はユーザーが変更できません。

Add/Change ボタンをクリックして別のスタンバイノードをサーバーのリストに追加するか、 Add/Change アイコンをクリックしてリスト内のサーバーに関連付けられた値を変更します。削除アイコンを使用して、テーブルからスタンバイ定義を削除します。スタンバイノードの定義が完了したら、[次へ]をクリックします。

The wizard's upgrade and extension window

ウィザードのアップグレードおよび拡張ウィンドウ

Extension Summary パネルには、レプリケーションシナリオのノードにインストールされている拡張機能またはモジュールが一覧表示されます。マスターノードにインストールされた拡張機能は、レプリケーションシナリオの各スタンバイノードにもインストールする必要があります。

Specify installation options for the master and standbys

マスターとスタンバイのインストールオプションを指定します

PEMが新しいサーバーをインストールする場合、ストリーミングレプリケーションウィザードが開き、マスターノードとスタンバイノードの概要を提供するツリーコントロールが表示され、各サーバーのインストールプロパティを指定できます。インストールプロパティを確認または変更するには、ツリーコントロールでノードの名前を強調表示します。 [オプション値]フィールドで選択したサーバーの値を指定します。タスクバーのプロンプトは、各必須フィールドを通知します。

インストールプロパティを更新するとき、指定されたユーザー名とパスワードが、マスターサーバーの選択ダイアログで提供された名前とパスワードと一致することを確認する必要があります。また、指定したポートがマスターまたはスタンバイのホストでまだ使用されていないことを確認する必要があります。

クラスタのデータディレクトリは、デフォルト以外の場所に作成される場合があります。インストール中に指定されたパスからデータディレクトリを移動する場合、 /etc/postgres-reg.ini ファイルで指定されたパスを更新する必要があります。

インストールオプションを指定したら、 Next をクリックして続行します。

The Download Packages dialog

パッケージのダウンロードダイアログ

Download Packages ダイアログには、設定された複製シナリオをインストールするために必要なパッケージのリストが表示されます。 Back をクリックして前の画面に戻って選択を変更するか、 Start Download をクリックしてインストールに使用するパッケージのダウンロードを開始します。

ダウンロードが完了したら、 Next をクリックして続行します。ストリーミングレプリケーションウィザードは、ストリーミングレプリケーションのセットアップをスケジュールできるダイアログを開きます。

Select a time to configure replication

複製を設定する時間を選択

Schedule Setup ダイアログのフィールドを使用して、サーバーが複製シナリオを設定するための最も便利な時間を指定します。

  • ストリーミングレプリケーションをすぐにインストールおよび構成する必要があることをPEMに指示するには、 Setup now? を Yes に設定します。

  • 日時セレクターを有効にするには、 Setup now? を No に設定します。セレクタを使用して、PEMで(オプションで)インストールを実行し、ストリーミングレプリケーションを構成するタイミングを指定します。

Finish をクリックして選択内容を保存し、ウィザードを終了します。 PEMは、インストールおよび構成プロセスを開始するか、指定された時間にインストールおよび構成をスケジュールします。 Scheduled Tasks タブでジョブのスケジュールとジョブの進行状況を確認できます。 [スケジュールされたタスク]タブを開くには、ジョブキューを確認するPEMエージェントの名前を強調表示し、[3]メニューから[2]を選択します。 Streaming Replicationインストールウィザードが完了すると、サーバーを登録し、Streaming Replicationダッシュボードでレプリケーションシナリオを監視できます。

ストリーミングレプリケーションウィザードはレプリケーションノード上の pg_hba.conf ファイルのみを変更し、レプリケーションユーザーによる接続を許可することに注意してください。 PEMクライアントでサーバー接続を定義する前に、各ノードの pg_hba.conf ファイルを変更して、クライアントからの接続を許可する必要がある場合があります。

ストリーミングレプリケーションとフェールオーバーマネージャーの監視

Streaming Replication Analysisダッシュボードを使用して、Streaming Replication and Failover Managerの高可用性シナリオを監視できます。ストリーミングレプリケーション分析ダッシュボードを表示するには、レプリケーション関連のアクティビティを監視するプローブを有効にする必要があります。プローブ設定を変更するには、PEMクライアントツリーコントロールでサーバー名を強調表示し、 Management ダッシュボードから Manage Probes… を選択します。

レプリケーションシナリオのマスターノードのストリーミングレプリケーション分析ダッシュボードを表示するには、以下のプローブを有効にします。

Streaming Replication

WAL Archive Status

レプリケーションシナリオのスタンバイノードのストリーミングレプリケーション分析ダッシュボードを表示するには、次のプローブを有効にする必要があります。

Streaming Replication Lag Time

次に、 Streaming Replication Analysis ダッシュボードを開くには、 Monitoring タブに移動して、

  1. Agents ドロップダウンメニューからノードを監視するエージェントの名前を選択します。

  2. Servers ドロップダウンメニューから監視対象サーバーの名前を選択します。

  3. Dashboards ドロップダウンメニューからストリーミングレプリケーション分析を選択します。

  4. 次に、 Streaming Replication ダッシュボードを開くには、オブジェクトブラウザーのツリーコントロールでレプリケーションシナリオのマスターまたはスタンバイノードの名前を右クリックし、 Dashboards コンテキストメニューから Streaming Replication Analysis を選択します。

The Streaming Replication dashboard

ストリーミングレプリケーションダッシュボード

PEMの高可用性の構成

レプリケーションは、クラスターのマスターノードに書き込まれたデータがスタンバイノードで保持されるようにします。マスターノードで問題が発生した場合(ハードウェア障害など)、スタンバイノードを簡単に昇格させて、障害の発生したノードを置き換えることができます。レプリケーションクラスタの動作は次のように説明できます。

アクティブ/アクティブ–アクティブ/アクティブクラスターでは、マスターノードは書き込みトランザクションを管理し、スタンバイノードは読み取り要求に使用できます。ホットスタンバイまたはEDB Postgresマルチマスターレプリケーションを使用したストリーミングレプリケーションは、アクティブ/アクティブクラスターを管理します。アクティブ/アクティブレプリケーションシナリオを使用している場合は、おそらくクラスターの各ノードにPEMエージェントがあり、PEMで各ノードをアクティブに監視しています。

アクティブ/パッシブ–アクティブ/パッシブクラスターでは、マスターノードのみが読み取りおよび書き込みトランザクションに使用されます。スタンバイノードは、マスターノードに障害が発生した場合に、マスターノードを交換するための完全なバックアップが利用できるようにします。 RHCS(Red Hat Cluster Suite)、Veritas Replicator、またはストリーミングレプリケーションは、ホットスタンバイを使用せずにアクティブ/パッシブクラスターを管理します。アクティブ/パッシブレプリケーションシナリオを使用している場合、おそらくレプリケーションシナリオのマスターノードをPEMでアクティブに監視しているだけです。

PEMがマスターノードとスタンバイノードを監視するように構成され、スタンバイがプロモートされる場合、現在ノードを監視しているPEMエージェントは、エージェントが存在するノードに障害が発生しない限り、新しくプロモートされたマスターを監視し続けます。

マスターノードのみを監視するようにPEMが構成され、マスターノードに障害が発生した場合、新しいマスターの監視を引き継ぐようにスタンバイPEMエージェントを構成しない限り、新しいマスターノードは監視されません。エージェントが新しく昇格したマスターの監視を想定できるエージェント階層を作成するには、マスターノード、およびマスターに昇格される可能性のあるスタンバイノードにPEMエージェントをインストールする必要があります。各エージェントはPEMサーバーにバインドする必要があります。

スタンバイノード上のエージェントを昇格させて、新しく昇格したマスターを監視するようにPEMを構成するには、次の手順を実行する必要があります。

  • プロモートされる可能性のあるスタンバイノードでテイクオーバーを有効にします。

  • フラグディレクトリを作成し、監視を想定するようエージェントに指示する行をフェールオーバースクリプトに追加します。

サーバーのテイクオーバーを有効にするには、PEMクライアントツリーコントロールでサーバーの名前を右クリックし、コンテキストメニューから[プロパティ]を選択します。 [プロパティ]ダイアログが開いたら、[テイクオーバーを許可しますか?]の横のボックスをオンにします。 [サーバーのプロパティ]ダイアログの[PEMエージェント]タブで。マスターの役割に昇格される可能性のある各サーバーは、別のエージェントによるテイクオーバーを許可するように構成する必要があります。

サーバーのテイクオーバーを許可した後、構成手順をフェールオーバースクリプトに追加し、昇格したスタンバイノード(新しいマスターノード)のPEMエージェントにデータベースサーバーの監視を想定するよう指示します。

サーバーの監視を引き継ぐようにエージェントに指示するには、フェールオーバープロセスは、指定されたサーバーの責任を取るようエージェントに指示する特別な* flag *ディレクトリにファイルを作成する必要があります。デフォルトでは、エージェントが使用するフラグディレクトリは次のとおりです。

$TMPDIR/pem/agent-AGENTID

$ TMPDIRは、エージェントを実行するユーザーアカウントの一時ディレクトリです。

ユーザーアカウントは通常、LinuxシステムのルートまたはWindowsの管理者です。 Windowsのレジストリー、またはLinuxのエージェント構成ファイルのagent_flag_dirパラメーターでAgentFlagDir構成オプションの値を指定することにより、ディレクトリー・パスをオーバーライドできます。

たとえば、Linuxサーバーのフェールオーバースクリプトに次のコマンドを追加できます。

touch /tmp/pem/agent-<agent_id>/takeover-server-<server_id>

どこで

agent_id is the numeric identifier of the agent that should takeover the monitoring of the server

server_id is the numeric identifier of the server that will be taken over.

agent_id および server_id を見つけるには、PEMクライアントにログインし、エージェントまたはサーバーの名前を強調表示します。 PEMクライアントの[プロパティ]ペインの[ID]行に数値識別子が表示されます。