Configuring Postgres Enterprise Manager (PEM)#

--enable-pem コマンドラインオプションを使用してtpaexec configure コマンドを実行すると、TPAはPEMをインストールおよび構成します。

--enable-pem のデフォルト動作は、クラスター内のすべてのpostgres インスタンスのpem-agentロールを有効にすることです。 pem-agentロールは、 --enable-pg-backup-api コマンドラインオプションが--enable-pem とともに使用される場合、 Barmanノードにも追加されます。

pemserver という名前の専用インスタンスもクラスターに追加されます。

PEMサーバーはPostgresバックエンドを使用するため、 pemserver インスタンスは暗黙的にpostgresロールを使用します。これにより、 pemserver はPEMバックエンドとして使用するように構成された有効なPostgresクラスターを取得します。通常のPostgresインスタンスで使用可能なすべての構成オプションは、PEMのバックエンドPostgresインスタンスでも同様に有効です。詳細については、以下を参照してください。

PEMはEDBパッケージリポジトリを介してのみ利用可能なため、有効なサブスクリプションが必要です。

サポートされているアーキテクチャ#

PEMは、 --enable-pem 構成コマンドラインオプションを介してすべてのアーキテクチャでサポートされています。例外は、 EDB Postgres Extendedで使用される場合のBDR -Always-ONアーキテクチャです。オプションで、生成されたクラスター構成ファイル config.yml を編集し、クラスター内のPostgresインスタンスからpem-agentロールを割り当てまたは削除して、そこでPEMを有効または無効にすることができます。

PEM構成#

TPAは、適切なインスタンス固有の設定でPEMエージェントとPEMサーバーを構成し、残りの設定はデフォルト値に設定されます。構成オプションの一部は、将来的にユーザー構成用に公開される可能性があります。

PEMサーバーのWebインターフェイスは、httpsで実行されるように構成され、その構成にポート443を使用します。 PEMのWebサーバー構成は、自己署名証明書を使用します。

PEMサーバーWebインターフェイスのデフォルトのログイン資格情報は、 Postgresバックエンドデータベースユーザーを使用します。これは、デフォルトでPostgreSQLの場合はpostgres、 EDB Postgres Advanced Serverクラスターの場合はenterprisedbに設定されます。 tpaexec show-password $clusterdir $user を実行して、Webインターフェイスのログインパスワードを取得できます。

共有PEMサーバー#

一部の展開では、組織内の複数のクラスターを監視および管理するために単一のPEMサーバーを使用する場合があります。 tpaexecでの共有PEMサーバーの展開は、 pem_shared 変数を介してサポートされています。この変数は、既存のPEMサーバーを使用する予定がある特定のクラスター構成のPEMサーバーインスタンスの下で vars: を介して設定できます。 pem_shared はブール変数であるため、可能な値はtrueおよびfalseデフォルトです。 PEMサーバインスタンスを共有として宣言する場合、PEMサーバーインスタンスが実際には、最初にPEMサーバーをプロビジョニングおよび展開した別のクラスター構成によって管理されていることを指定されたクラスター構成に伝えます。したがって、PEMのPostgresバックエンドを含むPEMサーバーインスタンスに行う変更は、PEMサーバーインスタンスが共有PEMインスタンスとして宣言されていないクラスターによって管理されます。

複数のクラスターで共有PEMサーバーを使用するための一般的なワークフローは次のとおりです。

  1. pem-serverロールを持つ単一のインスタンスを使用してtpaexecクラスターを作成します。 PEMサーバーとして実行される単一のインスタンスではなく、大規模なクラスターの一部としてプロビジョニングされるシナリオでも、同じワークフローを簡単に使用できます。例として使用する方が簡単で、おそらくメンテナンスも簡単であるため、シングルノードクラスターを使用します。

  2. 他のクラスターpg-cluster などで、この特定のPEMサーバーを共有PEMサーバーインスタンスとして$clusters/pem-cluster から参照します。 bare をプラットフォームとして使用して、新しいPEMサーバーインスタンスを作成しないようにします。また、このクラスターがPEMサーバーインスタンスにアクセスするために使用できるPEMサーバーのIPアドレスを指定します。

- Name: pemserver
  node: 5
  role:
  - pem-server
  platform: bare
  public_ip: 13.213.53.205
  private_ip: 10.33.15.102
  vars:
    pem_shared: true
  1. Postgresクラスターでdeployを実行する前に、pg-cluster がSSHを介してPEMサーバーインスタンスにアクセスできることを確認してください。 ssh-copy-id を介してpg-cluster 公開キーをPEMサーバーインスタンスにコピーすることにより、このアクセスを許可できます。次に、SSHを実行して、パスワードを指定せずにログインできることを確認します。

# add pem-clusters key to the ssh-agent (handy for `aws` platform)
$ cd $clusters/pem-cluster
$ ssh-add id_pem-clutser
$ cd $clusters/pg-cluster
$ ssh-keyscan -4 $pem-server-ip >> known_hosts
$ ssh-copy-id -i id_pg-cluster.pub -o UserKnownHostsFile=tpa_known_hosts $user@$pem-server-ip
$ ssh -F ssh_config pemserver
  1. PEMサーバーノードでPostgreSQL構成ファイルを更新して、新しいpg-cluster からの接続を許可します。 pem-cluster config.yml ファイルのvars: の下のpem_postgres_extra_hba_settings に新しいエントリを追加することにより、PEMサーバー上の既存のpg_hba.conf ファイルを変更できます。例

instances:
- Name: pemserver
  location: main
  node: 1
  role:
  - pem-server
  vars:
    pem_postgres_extra_hba_settings:
      - "# Allow pem connections from pg-cluster1.quire"
      - hostssl pem +pem_agent 10.33.15.108/32 cert
      - "# Allow pem connections from pg-cluster1.upside"
      - hostssl pem +pem_agent 10.33.15.104/32 cert
      - "# Allow pem connections from pg-cluster2.zippy"
      - hostssl pem +pem_agent 10.33.15.110/32 cert
      - "# Allow pem connections from pg-cluster2.utopic"
      - hostssl pem +pem_agent 10.33.15.109/32 cert

次に、 tpaexec provision $clusters/pem-cluster に続いてtpaexec deploy $clusters/pem-cluster を実行します。完了すると、新しいpg-cluster のノードはPEMサーバーのバックエンドと通信できるようになります。

  1. pg-cluster のノードのPEMエージェントがPEMサーバーバックエンドに接続して登録できるように保証には、 tpaexec deploy を実行する前にexport EDB_PEM_CREDENTIALS_FILE=/path/to/pem/credentials/file を実行する必要があります。資格情報ファイルは、PEMサーバーのバックエンドPostgresインスタンスへのアクセス資格情報をusername:password 形式で含むテキストファイルです。

$ cat pem_creds
postgres:f1I%fw!QmWevdzw#EL#$Ulu1cWhg7&RT

バックエンドパスワードがわからない場合は、 tpaexec show-password コマンドを使用して取得できます。

tpaexec show-password $pem-clusterdir $user
  1. tpaexec deploy $clusters/pg-cluster を実行して、共有PEMサーバーインスタンスを使用しながらPEMが新しいpg-cluster に展開されるようにします。

PEM UIへの接続#

PEM UIはhttpsインターフェイスで実行されるため、https://$pem-server-ip/pemを介してPEMサーバーの実行中のインスタンスに接続できます。 PEM UIのログイン資格情報は、postgresql の場合はpostgres 、epas フレーバーの場合はenterprisedb を使用するPostgresバックエンドユーザーに設定されます。 tpaexec show-password コマンドは、バックエンドユーザーのパスワードを表示します。例

tpaexec show-password $clusterdir $user

PEM documentation を参照してください。

PEMの使用と構成の詳細については、こちらをご覧ください。