PgBouncer#
PgBouncerパッケージバージョン#
デフォルトでは、TPAはPgBouncerの最新バージョンをインストールします。
config.yml ファイルのcluster_vars
セクションの下のpgbouncer_package_version: xxx
を含めることにより、インストールされるPgBouncerパッケージのバージョンを指定できます。
cluster_vars:
…
pgbouncer_package_version: 1.8*
…
aptまたはyumが受け入れるバージョン指定子を使用できます。
バージョンが一致しない場合は、 *
ワイルドカードを追加してみてください。これは、パッケージバージョンに2:...
のようなエポック修飾子がある場合に必要になることがよくあります。
PgBouncerの構成#
TPAは、 role にpgbouncer
が含まれるインスタンスにPgBouncerをインストールおよび構成します。
デフォルトでは、PgBouncerはポート6432で接続を監視し、pgbouncer_backend
が指定されない場合、接続を127.0.0.1:5432
アーキテクチャに応じてPostgresまたは Configuring haproxy のいずれかに転送します。
!!!注 PgBouncerを使用してトラフィックをプライマリにルーティングする
repmgrでM1アーキテクチャを使用している場合、cluster_vars
の下でrepmgr_redirect_pgbouncer: true
ハッシュを設定して、PgBouncer接続をプライマリに向けることができます。
PgBouncerは、フェールオーバー時に自動的に更新され、新しいプライマリにルーティングされます。
pgbouncer_backend
をプライマリインスタンス名に設定することとこのオプションを組み合わせて使用して、プライマリにルーティングするように構成されたPgBouncerでクラスターが最初に展開されるようにする必要があります。
Variable |
Default value |
Description |
|---|---|---|
pgbouncer_port |
6432 |
pgbouncerがリッスンするTCPポート |
pgbouncer_backend |
127.0.0.1 |
接続するPostgresサーバー |
pgbouncer_backend_port |
5432 |
`pgbouncer_backend`がリッスンするポート |
pgbouncer_max_client_conn |
`max_connections`×0.9 |
許可される接続の最大数。デフォルトは、可能であればバックエンドの`max_connections`設定から取得されます |
pgbouncer_auth_user |
pgbouncer_auth_user |
認証に使用するPostgresユーザー |
データベース#
デフォルトでは、TPAは[databases] の下に単一のワイルドカード*
エントリーを使用して/etc/pgbouncer/pgbouncer.databases.ini
を生成し、すべての接続をバックエンドサーバーに転送します。次の例に示すようにpgbouncer_databases
を設定して、データベース構成を変更できます。
認証#
PgBouncerはpgbouncer_auth_user
としてPostgresに接続し、構成済みのauth_query
を実行してユーザーを認証します。
PgBouncerによってauth_query
として使用されるpgbouncer_get_auth()
ファンクションは、単一のデータベースpgbouncer_auth_database
に作成されます。このファンクションの実行権限はpgbouncer_auth_user
に付与されます。
例#
instances:
- Name: one
vars:
max_connections: 300
- Name: two
- Name: proxy
role:
- pgbouncer
vars:
pgbouncer_backend: one
pgbouncer_databases:
- name: dbname
options:
pool_mode: transaction
dbname: otherdb
- name: bdrdb
options:
host: two
port: 6543