Пояснение конфига для Pgbouncer
1 2 3 4 5 6 7 8 9 10 11 |
[databases] mydb = host=localhost port=5432 [pgbouncer] listen_addr = 0.0.0.0 listen_port = 6432 auth_type = md5 auth_file = /etc/pgbouncer/userlist.txt pool_mode = transaction max_client_conn = 100 default_pool_size = 20 |
1. [databases] — Конфигурация подключаемых баз данных
1 2 3 |
[databases] mydb = host=localhost port=5432 |
- mydb — это логическое имя базы данных, под которым клиенты будут подключаться через PgBouncer.
- host=localhost — указывает, что PgBouncer будет подключаться к базе данных PostgreSQL, работающей на локальном хосте.
- port=5432 — стандартный порт для PostgreSQL, на котором он слушает подключения.
Это означает, что все запросы, поступающие на PgBouncer
с указанием базы данных mydb
, будут перенаправляться на локальную базу данных PostgreSQL на порту 5432.
2. [pgbouncer] — Настройки самого PgBouncer
Этот блок содержит параметры работы самого PgBouncer.
1 2 3 4 5 6 7 8 9 |
[pgbouncer] listen_addr = 0.0.0.0 listen_port = 6432 auth_type = md5 auth_file = /etc/pgbouncer/userlist.txt pool_mode = transaction max_client_conn = 100 default_pool_size = 20 |
- listen_addr = 0.0.0.0
- Указывает, на каких IP-адресах PgBouncer будет принимать подключения от клиентов. Значение
0.0.0.0
означает, что PgBouncer будет слушать на всех доступных сетевых интерфейсах.
- Указывает, на каких IP-адресах PgBouncer будет принимать подключения от клиентов. Значение
- listen_port = 6432
- Порт, на котором PgBouncer будет ожидать подключения клиентов. В данном случае это порт 6432 (отличается от стандартного порта PostgreSQL, чтобы избежать конфликтов).
- auth_type = md5
- Тип аутентификации, который будет использоваться PgBouncer для проверки пользователей. В данном случае используется MD5-аутентификация, которая защищает пароли хэшированием.
- auth_file = /etc/pgbouncer/userlist.txt
- Путь к файлу, где хранятся учетные данные пользователей для аутентификации. В файле
userlist.txt
содержатся парыимя пользователя:md5-хэш пароля
.
- Путь к файлу, где хранятся учетные данные пользователей для аутентификации. В файле
- pool_mode = transaction
- Режим работы пула соединений:
- transaction — PgBouncer будет выделять клиенту подключение к PostgreSQL только на время выполнения одного SQL-транзакции. После завершения транзакции соединение возвращается в пул для использования другим клиентом.
- Этот режим наиболее эффективен для высоконагруженных систем, так как он минимизирует время удержания соединения.
- Режим работы пула соединений:
- max_client_conn = 100
- Максимальное количество клиентских подключений, которые PgBouncer одновременно может принимать. Если лимит превышен, новые подключения будут отвергаться.
- default_pool_size = 20
- Количество соединений с PostgreSQL, которые PgBouncer будет поддерживать в пуле для базы данных по умолчанию. Например, для базы данных
mydb
PgBouncer будет поддерживать 20 соединений с PostgreSQL, которые будут повторно использоваться клиентами.
- Количество соединений с PostgreSQL, которые PgBouncer будет поддерживать в пуле для базы данных по умолчанию. Например, для базы данных
Общий принцип работы:
- Подключение клиента: Клиенты подключаются к PgBouncer на порту
6432
и указывают базу данныхmydb
. - Аутентификация: PgBouncer проверяет пользователя через файл
/etc/pgbouncer/userlist.txt
с использованием метода MD5. - Пул соединений: После аутентификации PgBouncer выделяет из пула одно из соединений с базой данных PostgreSQL, которое затем используется для выполнения запросов клиента.
- Режим работы: В режиме transaction после завершения транзакции соединение возвращается в пул для последующего использования другими клиентами, что уменьшает накладные расходы на создание новых подключений.
Этот файл конфигурации настраивает PgBouncer для эффективной работы с подключениями, обеспечивает безопасность с помощью MD5-аутентификации и поддерживает пул соединений, который оптимизирует использование ресурсов базы данных.
Recommended Posts
Конфигурационный шаблон jinja2 для Patroni
11.02.2024