Configuring Postgres Enterprise Manager (PEM)#

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

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

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サーバーの最新の利用可能なバージョンをインストールします。

config.yml ファイルのcluster_vars セクションの下にpem_agent_package_version: xxx およびpem_server_package_version: xxx を含めることにより、インストールされるPEMエージェントとPEMサーバーパッケージのバージョンを指定できます。

cluster_vars:
    …
    pem_agent_package_version: 9.7.0-1.el9
    pem_server_package_version: 9.7.0-1.el9
    …

aptまたはyumが受け入れるバージョン指定子を使用できます。

バージョンが一致しない場合は、 * ワイルドカードを追加してみてください。これは、パッケージバージョンに2:... のようなエポック修飾子がある場合に必要になることがよくあります。

PEM構成#

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

PEMエージェントの登録時に追加オプションを渡す#

TPAは、 pemworker ユーティリティの--register agent コマンドを使用して、クラスター内の各PEMエージェントを登録します。

クラスター構成にpemagent_registration_opts を含めることにより、追加登録オプションのリストを渡すことができます。

例

pemagent_registration_opts:
- --enable-smtp true
- --enable-heartbeat-connection
- --allow-batch-probes true
- -l DEBUG1

PEM documentation

に、登録オプションの詳細をリストします。

pemエージェントを使用するノードの便利な拡張機能#

デフォルトでは、TPAはsql_profiler 、edb_wait_states 、およびquery_advisor 拡張機能をpem-agent ロールを持つインスタンスに追加します。

pem-agentノードのデフォルトの拡張機能のこのリストは、config.ymlでpemagent_extensions を設定することによりオーバーライドできます。

このリストが空の場合、拡張機能は自動的に含まれません。

PEMサーバーSSL認証の外部証明書の提供#

デフォルトでは、PEMサーバーは自己署名証明書ペアserver-pem.crt およびserver-pem.key を作成し、HTTPSアクセスにそれらを使用するようにウェブサーバーを構成します。

server-pem.key のサイズは、変数pem_rsa_key_size をcluster_vars セクションに追加して変更できます。

(...)
cluster_vars:
  pem_rsa_key_size: 4096

PEMデータベースによって促進されるCA証明書のサイズは、変数pem_db_ca_certificate_key_size をcluster_vars セクションに追加して変更することもできます。

(...)
cluster_vars:
  pem_db_ca_certificate_key_size: 4096

デフォルトでは、自己署名TLS証明書の期間は10年です。期間は、 cluster_vars セクションでopenssl_certificate_validity を定義することにより調整できます。証明書を置き換える必要がある場合は、 tpaexec deploy tpaexec deploy (...) -e pem_web_server_renew_tls_certificates=true でpem_web_server_renew_tls_certificates 変数を使用します。

独自の証明書ペアを提供するには、 ssl/pemserver という名前のクラスターディレクトリのルートの下にディレクトリを作成し、その中に証明書ペアを配置します。

cluster directory
├── ssl
│   └── pemserver
│       ├── externally-provided.crt
│       └── externally-provided.key

次に、 pemサーバーインスタンスの下のvars: またはクラスター構成ファイルのcluster_vars の値として、各ファイル名を使用して変数pem_server_ssl_certificate およびpem_server_ssl_key を設定します。

TPAは、これらのファイルのpemサーバーインスタンスへのコピーを処理し、それに応じてウェブサーバーを構成します。

- Name: pemserver
  location: main
  node: 4
  role:
  - pem-server
  vars:
    pem_server_ssl_certificate: externally-provided.crt
    pem_server_ssl_key: externally-provided.key

PEMでのインスタンスの整理#

PEMは、サーバーおよび/またはエージェントの グループ および クラスター への照合をサポートしています。次のインスタンス変数を設定することにより、TPAからこのグループ化を指定できます。

pem-agent ロールはあるが、pem-server ロールがないインスタンス

  • monitoring_group は、このインスタンスのPostgresサーバーが割り当てられるグループの名前を指定します。指定しない場合、デフォルトのpem_server_group の値が使用されます。

  • monitoring_agent_group は、このインスタンスのPEMエージェントを割り当てるグループの名前を指定します。指定しない場合、デフォルトのpem_agent_group の値が使用されます。

  • monitoring_cluster は、このインスタンスのPostgresサーバーが割り当てられるクラスターの名前を指定します。指定しない場合、クラスターは割り当て/作成されません。

  • monitoring_agent_cluster は、このインスタンスのPEMエージェントを割り当てるクラスターの名前を指定します。指定しない場合、クラスターは割り当て/作成されません。

注釈

PEMは、特定のクラスター名が単一のグループに存在することのみを許可するため、これらの値の一部の組み合わせは実行できません。たとえば、同じ`monitoring_cluster` と`monitoring_agent_cluster` を指定したが、異なる`monitoring_group` と`monitoring_agent_group` を指定した場合、これは同じクラスター名が2つの異なるグループに表示されることを意味します。 TPAを使用すると、PEMはこのような不一致を防止するのではなく、処理できます。これは、一般に`deploy` は成功するが、予想したサーバーとエージェントの構成を正確に取得できない場合があることを意味します。

  • pem_server_group は、このPEMサーバーに登録されているPostgresサーバーが割り当てられるデフォルトグループの名前を指定します。指定しない場合、デフォルトのPEM Server Directory が使用されます。

  • pem_agent_group は、このPEMサーバーに登録されたPEMエージェントが割り当てられるデフォルトグループの名前を指定します。指定しない場合、デフォルトのPEM Agents になります

pem-server ロールを持つインスタンスのPostgresサーバーとPEMエージェントは、常にそれぞれpem_server_group およびpem_agent_group に割り当てられることに注意してください。 TPAは、このサーバーまたはエージェントのクラスターへの追加をサポートしていません。

共有PEMサーバー#

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

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

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

  2. 他のクラスターたとえばpg-clusterでは、共有pemサーバーインスタンスとして$clusters/pem-clusterからこの特定のpemサーバーを参照し、プラットフォームとしてbare を使用するため、新しいpemserverインスタンスを作成しようとはしていません。また、このクラスターがpemserverインスタンスにアクセスするために使用できるpemserverの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-クラスターのノードは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

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

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

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

tpaexec show-password $clusterdir $user

PEM documentation を参照

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

tpaexec upgrade を使用したPEMのマイナー更新#

The PEM server package includes an SQL upgrade script which handles upgrading the database according to the PEM schema version.
Upgrading from PEM `v9.8.0` to PEM `10.1.1` using `tpaexec upgrade` has been tested and works, but is a major version upgrade.

PEMサーバーを特定のパッケージバージョンにアップグレードしようとする場合、config.yml のpem_server_package_version が更新されて、目的のバージョンを反映していることを確認します。

目的のバージョンを追加の引数としてtpaexec upgrade コマンドに渡すこともできます。

tpaexec upgrade <cluster_dir> \
  -e pem_agent_package_version="<desired version>" \
  -e pem_server_package_version="<desired version>" \
  --components=pem-agent,pem-server

詳細については、 package version selection and upgrade のセクションを参照してください。

アップグレードするPEMエージェントを選択するには、 tpaexec upgrade コマンドに渡される--components フラグにpem-agent またはall が含まれていることを確認します

アップグレードするPEMサーバーを選択するには、 tpaexec upgrade コマンドに渡される--components フラグに pem-server またはall が含まれていることを確認します

component selection for upgrade のセクションを参照してください

詳細については、