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).
!!!Note Using PgBouncer to route traffic to the primary
If you are using the M1 architecture with repmgr you can set
repmgr_redirect_pgbouncer: true hash under cluster_vars to have
PgBouncer connections directed to the primary. The PgBouncer will be
automatically updated on failover to route to the new primary. You
should use this option in combination with setting pgbouncer_backend
to the primary instance name to ensure that the cluster is initially
deployed with PgBouncer configured to route to the primary.
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