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

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

  • レプリケーションシナリオでマスターノードおよびスタンバイノードとして機能する新しいサーバーをインストールします。
  • レプリケーションシナリオでマスターノードとスタンバイノードの役割で既存のサーバーを構成します。
  • 新規または既存のスタンバイサーバーを既存のレプリケーションシナリオに追加します。

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

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

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

  • Linuxホストで、 /opt/edb/pem/agent/etc/agent.cfg agent.cfgあるPEMエージェント構成ファイル( agent.cfg )を変更し、次のパラメーターをtrueに設定します。

allow_package_management

allow_server_restart

allow_streaming_replication

  • 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 pemagent restart (RHELまたはCentOS 7.x)を入力します。
  • Windowsホストで、 Servicesアプレットを使用してPostgres Enterprise Manager - pemAgentサービスを再起動します。

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

ストリーミングレプリケーションウィザードのようこそウィンドウ

ストリーミングレプリケーションウィザードのようこそウィンドウ

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

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

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

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

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

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

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

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

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

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

    • レプリケーションシナリオのマスターノードとして機能する、以前にインストールされたサーバー。既存のサーバーには、説明に(インストール済み)という単語が含まれています。既存のサーバーを選択すると、[検証]ボタンが有効になります。
    • ストリーミングレプリケーションシナリオを構成するときにPEMがインストールする新しいマスターノードのサーバーバージョン。新しいサーバーを作成するには、説明に(インストール済み)という単語が含まれていないサーバーバージョンを選択します。
  • [ Replication host addressフィールドのドロップダウンリストボックスを使用して、マスターノードが存在するReplication host addressを選択します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[ Standby Server Options formを使用して、スタンバイノードに関する情報を提供します。
  • [ Agentドロップダウンリストボックスを使用して、レプリケーションシナリオのスタンバイノードに存在するエージェントの名前を選択します。ご注意ください すでにレプリケーションシナリオの一部であるスタンバイノードのプロパティを編集することはできません。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

レプリケーションを構成する時間を選択します

レプリケーションを構成する時間を選択します

Schedule SetupのSchedule Setup ]ダイアログのフィールドを使用して、サーバーがレプリケーションシナリオを構成する最も便利な時間を指定します。

  • Setup now? Yesにすると、ストリーミングレプリケーションをすぐにインストールして構成する必要があることをPEMに指示します。
  • Setup now?日付と時刻のセレクターを有効にするには、 Noに。セレクターを使用して、PEMで(オプションで)インストールを実行し、ストリーミングレプリケーションを構成するタイミングを指定します。

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

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

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

Streaming Replication Analysisダッシュボードを使用して、Streaming Replication and Failover Managerの高可用性シナリオを監視できます。 Streaming Replication Analysisダッシュボードを表示するには、レプリケーション関連のアクティビティを監視するプローブを有効にする必要があります。プローブ設定を変更するには、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 ]を選択します。
ストリーミングレプリケーションダッシュボード

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

PEMの高可用性の構成

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

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

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

PEMがマスターノードとスタンバイノードを監視するように構成されており、スタンバイがプロモートされている場合、ノードを現在監視しているPEMエージェントは、ノードが エージェントが存在する場所は失敗します。

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

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

  • プロモートされる可能性のあるスタンバイノードでテイクオーバーを有効にします。
  • フラグディレクトリを作成し、監視を想定するようにエージェントに指示する行をフェールオーバースクリプトに追加します。

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

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

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

$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は、サーバーの監視を引き継ぐ必要があるエージェントの数値識別子です。

server_idは、引き継がれるサーバーの数値識別子です。

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