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