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サーバーのWebインターフェイスは、httpsで実行されるように構成され、同じに443ポートを使用します。 PEMのウェブサーバー構成は自己署名証明書を使用します。
PEMサーバーWebインターフェイスのデフォルトのログイン資格情報は、
postgresバックエンドデータベースユーザーを使用します。これは、デフォルトでpostgresqlの場合はpostgres
、EPASクラスターの場合はenterprisedb に設定されます。
tpaexec show-password $clusterdir $user
を実行して、Webインターフェイスのログインパスワードを取得できます。
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エージェントを使用するノードの便利な拡張機能#
デフォルトでは、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
独自の証明書ペアを提供するには、 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サーバーを使用する場合があります。
tpaexec内の共有pemサーバーの展開は、既存のpemサーバーを使用する予定がある特定のクラスター構成のpemサーバーインスタンスの下でvars:
を介して設定できるpem_shared 変数を介してサポートされています。
pem_shared
はブール変数であるため、可能な値はtrueおよびfalseデフォルトです。
pemserverインスタンスを共有として宣言する場合、pemserverインスタンスが実際には、最初にpemサーバーをプロビジョニングおよび展開した別のクラスター構成によって管理されていることを指定されたクラスター構成に伝えます。したがって、
pemのpostgresバックエンドを含むpemサーバーインスタンスに加えたい変更は、
pemserverインスタンスが共有pemインスタンスとして宣言されていないクラスターによって管理されます。
複数のクラスターで共有pemサーバーを使用するための一般的なワークフローは次のとおりです。
pem-serverロールを持つ単一のインスタンスを使用してtpaexecクラスターを作成しますこの例では、’pem-cluster’と呼びます。 pemサーバーとして実行される単一のインスタンスではなく、大規模なクラスターの一部としてプロビジョニングされるシナリオでも、同じワークフローを簡単に使用できますが、例として使用する方が簡単であるため、おそらくシングルノードクラスターを使用しますメンテナンスも簡単です。他のクラスターたとえば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
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
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サーバーバックエンドと通信できるようになります。
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
tpaexec deploy $clusters/pg-clusterを実行して、共有pemサーバーインスタンスを使用しながらpemが新しいpgクラスターに展開されます。
注釈
混合プラットフォームのクラスター
共有PEMインスタンスをplatform: bare``として宣言することにより、クラスターを混合プラットフォームクラスターに変更した可能性があります。これには、この変更に対応するように\ ``config.yml
の他の部分を調整する必要がある場合があります。具体的には、 instance_defaults セクションには、クラスター内のすべてのインスタンスに適用される設定のみを含める必要があります。たとえば、instance_defaults
に、platform: aws でのみ有効なtype などの設定が含まれている場合、その設定を``instance_defaults``からAWSプラットフォームを使用するインスタンスにのみ移動する必要があります。
## PEM UIへの接続
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の構成と使用法の詳細については、こちらをご覧ください。