PgBouncer#
PgBouncer package version#
By default, TPA installs the latest available version of PgBouncer.
The version of the PgBouncer package that is installed can be specified
by including pgbouncer_package_version: xxx under the
cluster_vars section of the config.yml file.
cluster_vars:
…
pgbouncer_package_version: 1.8*
…
You may use any version specifier that apt or yum would accept.
If your version does not match, try appending a * wildcard. This is
often necessary when the package version has an epoch qualifier like
2:... .
Configuring PgBouncer#
TPA will install and configure PgBouncer on instances whose role
contains pgbouncer .
By default, PgBouncer listens for connections on port 6432 and, if no
pgbouncer_backend is specified, forwards connections to
127.0.0.1:5432 (which may be either Postgres or Configuring haproxy ,
depending on the architecture).
Variable |
Default value |
Description |
|---|---|---|
pgbouncer_port |
6432 |
The TCP port pgbouncer should listen on |
pgbouncer_backend |
127.0.0.1 |
A Postgres server to connect to |
pgbouncer_backend_port |
5432 |
The port that the pgbouncer_backend listens on |
pgbouncer_max_client_conn |
`max_connections`×0.9 |
The maximum number of connections allowed; the default is derived from the backend's max_connections setting if possible |
pgbouncer_auth_user |
pgbouncer_auth_user |
Postgres user to use for authentication |
Databases#
By default, TPA will generate /etc/pgbouncer/pgbouncer.databases.ini
with a single wildcard * entry under [databases] to forward all
connections to the backend server. You can set pgbouncer_databases
as shown in the example below to change the database configuration.
Authentication#
PgBouncer will connect to Postgres as the pgbouncer_auth_user and
execute the (already configured) auth_query to authenticate users.
The pgbouncer_get_auth() function used as the auth_query by
PgBouncer is created in a single database, the
pgbouncer_auth_database . Execute permissions are granted on this
function to the pgbouncer_auth_user .
Example#
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