Configuring pgbouncer
=====================

TPAは、\ ``role`` に\ ``pgbouncer``
が含まれるインスタンスにpgbouncerをインストールして構成します。

デフォルトでは、pgbouncerはポート6432で接続をリッスンし、接続を\ ``127.0.0.1:5432``
（アーキテクチャに応じてPostgresまたは :ref:`Configuring haproxy <Configuring haproxy>` のいずれか）に転送します。

``pgbouncer`` インスタンスで次の変数を設定できます。

.. csv-table::
  :header: Variable,Default value,Description
  :widths: 12,12,18
  :align: left
  :class: longtable

  `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``
を実行してユーザーを認証します。

例
--

.. code:: yaml

   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
