ストリーミングレプリケーションの場合は、プライマリサーバおよびスタンバイサーバの両方でポリシーが有効になります。ユーザーのロック状態、ユーザーのパスワードの状態(有効期間、猶予期間、失効)はプライマリサーバまたはスタンバイサーバのいずれかで検出した場合、クラスタを構成するすべてのサーバに反映・共有されます。
プロファイルの内容の変更、プロファイルの作成と割り当て、ロックの解除、パスワードの変更は、プライマリサーバのみで実施できます。
ここでは、ストリーミングレプリケーション構成での設定方法について説明します。
postgresql.confファイルのパラメータを設定します。
userprofile_databaseパラメータに接続可能なデータベース名を指定します。省略した場合は、デフォルトのデータベース“postgres”を指定したものとみなされます。
パラメータの詳細については、“ポリシーに基づいたパスワードの運用に関するパラメータ”を参照してください。
ストリーミングレプリケーション用のユーザーに権限を付与します。
スタンバイサーバはプライマリサーバへ接続して、スタンバイサーバで検出した状態変更をプライマリサーバに反映します。状態変更のための接続にはストリーミングレプリケーション用のユーザー(primary_conninfoに指定するユーザー)が使用されます。このユーザーに権限を付与します。ユーザーをグループロールpgx_update_profile_statusの直接のメンバに追加してください。
[実行例]
# GRANT pgx_update_profile_status TO repl-user;
この操作によってストリーミングレプリケーション用のユーザーはその他すべてのデータベースユーザーをロックしたり、ポリシー違反によるロック状態から解除することができるようになります。また、pgx_update_profile_statusグループロールのメンバ資格は、ストリーミングレプリケーション用のユーザーにだけ与えてください。
pg_hba.confにレコードを追加します。
スタンバイサーバからのコネクションを受け付けられるように、レコードを追加します。ストリーミングレプリケーションのためのレコードを複製し、userprofile_databaseパラメータのデータベース名を接続先データベース名として指定します。認証方式はパスワード認証以外を推奨します。
host replication repl-user スタンバイサーバのアドレス 認証方式 # ストリーミングレプリケーション用 host postgres repl-user スタンバイサーバのアドレス 認証方式 # 状態変更伝達用
参考
プライマリサーバとスタンバイサーバが切り離された場合でも、それぞれのサーバでプロファイルに基づく制限は適用されます。ただし、スタンバイサーバ単体ではパスワード変更や明示的なロックの解除が行えません。切り離された原因を取り除いてからプライマリサーバとの接続および業務を復旧し、パスワード変更や明示的なロックの解除を行ってください。
状態変更をプライマリサーバまたはスタンバイサーバに反映するための接続情報が、pg_stat_replicationビューのapplication_nameに“User profile status sender”として出力されます。pg_stat_replicationビューでストリーミングレプリケーションの状態を監視している場合は、“User profile status sender”の行は監視対象から除外してください。