Управление и использование#
В Pangolin Pooler существует специальная «виртуальная» база данных, так называемая административная база данных, которая может использоваться для мониторинга и управления компонентом. Подключиться к ней можно через консоль, которая доступна при обычном подключении к базе pgbouncer:
$ psql -p 6544 pgbouncer
Подключаться к этой консоли разрешено только пользователям, перечисленным в параметрах конфигурации admin_users или stats_users (за исключением режима auth_mode = any, когда в качестве stats_user может подключиться любой пользователь).
Сам интерфейс администрирования Pangolin Pooler состоит из нескольких команд SHOW, а также команд управления процессами, доступных при подключении к административной базе данных pgbouncer. Их описание приведено в подразделах далее.
Вывод команды SHOW HELP
Вывод команды SHOW HELP в консоли администрирования:
pgbouncer=# SHOW HELP;
NOTICE: Console usage
DETAIL:
SHOW [HELP|CONFIG|DATABASES|FDS|POOLS|CLIENTS|SERVERS|SOCKETS|LISTS|VERSION|...]
SET key = arg
RELOAD
PAUSE
SUSPEND
RESUME
SHUTDOWN
[...]
Для приложения Pangolin Pooler также доступен синтаксис опций из командной строки.
Вывод команды pangolin-pooler –help
$ pangolin-pooler --help
pangolin-pooler is a connection pooler for Pangolin DBMS.
Usage:
pangolin-pooler [OPTION]... CONFIG_FILE
Options:
-d, --daemon run in background (as a daemon)
-q, --quiet run quietly
-R, --reboot do an online reboot
-u, --user=USERNAME assume identity of USERNAME
-v, --verbose increase verbosity
-V, --version show version, then exit
-h, --help show this help, then exit
-l, --log=FILENAME write (or append) server log to FILENAME
Pangolin product version information:
--product_version prints product name and version
--product_build_info prints product build number, date and hash
--product_component_hash prints component hash string
Команды SHOW#
Интерфейс администрирования Pangolin Pooler состоит из нескольких новых команд SHOW, доступных при подключении к административной базе данных pgbouncer. Команды SHOW выводят различную информацию.
Команда |
Описание |
|---|---|
|
Статистика. В этой и связанных с ней командах общие показатели отсчитываются с момента запуска процесса, промежуточные значения обновляются раз в период, заданный в |
|
Подмножество |
|
Подмножество |
|
Как |
|
Информация о серверных подключениях |
|
Информация о клиентских подключениях |
|
Для каждой пары (база данных, пользователь) создается новая запись в пул. Данная команда выводит эту информацию |
|
Для каждого настроенного узла создается новая запись |
|
Список количества БД, пользователей, пулов и другой информации в виде столбцов |
|
Показывает информацию о пользовательских настройках и количестве подключений |
|
Информация о реализуемых подключениях к базам данных и их состоянии |
|
Показывает информацию о пирах |
|
Внутренняя команда. Показывает список используемых файловых дескрипторов с прикрепленным к ним внутренним состоянием |
|
Показывает низкоуровневую информацию о сокетах или только об активных сокетах. Сюда входит информация, отображаемая в разделах |
|
Отображаются текущие параметры конфигурации, по одному на строку |
|
Показывает низкоуровневую информацию о текущих размерах различных разделов внутренней памяти. Представленная информация может быть изменена |
|
Показывает имена хостов в кеше DNS |
|
Показывает зоны DNS в кеше |
|
Показывает версию ядра компонента Pangolin Pooler - PgBouncer |
|
Показывает настройки состояния компонента (активное, приостановленное и ожидающее) |
Команды SHOW для просмотра информации о статусе или результатах работы сквозной аутентификации:
Команда |
Описание |
|---|---|
|
Показывает информацию по соединениям с сервером аутентификации |
|
Показывает информацию по пулам аутентификации |
|
Показывает информацию о пользователях |
|
Показывает информацию об аутентификации последних |
|
Показывает информацию о временно заблокированных пользователях |
Описание полей, возвращаемых командами, приведено в последующих подразделах.
SHOW STATS#
Команда SHOW STATS показывает статистику. В этой и связанных с ней командах общие показатели отсчитываются с момента запуска процесса, промежуточные значения обновляются раз в период, заданный stats_period.
Название поля |
Описание поля |
|---|---|
|
Статистика представлена по каждой базе данных |
|
Общее количество SQL-транзакций, объединенных в пул Pangolin Pooler |
|
Общее количество SQL-команд, объединенных в пул Pangolin Pooler |
|
Общее количество раз, когда сервер был назначен клиенту |
|
Общий объем сетевого трафика в байтах, полученный Pangolin Pooler |
|
Общий объем сетевого трафика в байтах, отправленный Pangolin Pooler |
|
Общее количество времени в микросекундах, затраченных Pangolin Pooler при подключении к СУБД в рамках транзакции, либо при простое в рамках транзакции, либо при выполнении запросов |
|
Общее количество времени в микросекундах, затраченных Pangolin Pooler на активное подключение к СУБД и выполнение запросов |
|
Время, которое клиенты проводят в ожидании ответа сервера, в микросекундах. Обновляется, когда клиентскому соединению назначается внутреннее соединение |
|
Общее количество подготовленных запросов, созданных клиентами. Применимо только в режиме отслеживания именованных подготовленных запросов |
|
Общее количество подготовленных операторов, созданных Pangolin Pooler на сервере. Применимо только в режиме отслеживания именованных подготовленных запросов |
|
Общее количество подготовленных операторов, подготовленных для выполнения клиентами и отправленных в СУБД с помощью Pangolin Pooler. Применимо только в режиме отслеживания именованных подготовленных запросов |
|
Среднее количество транзакций в секунду за последний период статистики |
|
Среднее количество запросов в секунду за последний период статистики |
|
Среднее количество обращений к серверу за секунду в течение последнего периода сбора статистики |
|
Среднее количество полученных (от клиентов) байт в секунду |
|
Среднее количество отправленных (клиентам) байт в секунду |
|
Средняя продолжительность транзакции в микросекундах |
|
Средняя продолжительность запроса в микросекундах |
|
Время, которое клиенты проводят в ожидании сервера в микросекундах (среднее время ожидания клиентов, которым был назначен сервер, в течение текущего |
|
Среднее количество операторов, созданных клиентами. Применимо только в режиме отслеживания именованных подготовленных запросов |
|
Среднее количество операторов, созданных Pangolin Pooler на сервере. Применимо только в режиме отслеживания именованных подготовленных запросов |
|
Среднее количество операторов, подготовленных для выполнения клиентами и переданных в СУБД с помощью Pangolin Pooler. Применимо только в режиме отслеживания именованных подготовленных запросов |
SHOW SERVERS#
В таблице ниже приведены поля вывода команды SHOW SERVERS.
Название поля |
Описание поля |
|---|---|
|
Тип соединения, «S» для сервера |
|
Имя пользователя, используемое Pangolin Pooler для подключения к серверу |
|
Имя базы данных |
|
Если для подключения к серверу используется репликация. Значение |
|
Состояние подключения к серверу Pangolin Pooler. Значения: |
|
IP-адрес сервера СУБД |
|
Порт сервера СУБД |
|
Локальный адрес начала подключения |
|
Локальный порт начала подключения |
|
Когда было установлено соединение |
|
Время подключения |
|
Длительность поднятия соединения в секундах |
|
Дробная часть длительности поднятия соединения в микросекундах |
|
Время отправки последнего запроса |
|
Не используется для подключений к серверу |
|
Не используется для подключений к серверу |
|
Флаг закрытия: |
|
Адрес внутреннего объекта подключения |
|
Адрес клиентского соединения, с которым сопряжен сервер |
|
PID процесса серверной стороны |
|
Информация о TLS-соединении или пустая строка, если TLS не используется |
|
Имя приложения, ассоциированное со связанным клиентским соединением, или пустая строка, если приложение не установлено / нет соединения |
|
Количество подготовленных запросов на сервере, ограниченное значением |
|
Уникальный идентификатор для сервера |
SHOW CLIENTS#
В таблице ниже приведены поля вывода команды SHOW CLIENTS.
Название поля |
Описание поля |
|---|---|
|
Тип соединения, «C» для клиента |
|
Пользователь, подключенный к клиенту |
|
Имя базы данных |
|
Использование репликации. Значения: |
|
Состояние клиентского подключения ( |
|
IP-адрес клиента |
|
Исходный порт клиента |
|
Адрес конечного подключения на локальном компьютере |
|
Конечный порт подключения на локальном компьютере |
|
Временная метка подключения |
|
Временная метка последнего запроса клиента |
|
Текущее время ожидания в секундах |
|
Дробная часть текущей времени ожидания в микросекундах |
|
Не используется для клиентов |
|
Внутренний адрес объекта для этого подключения |
|
Адрес подключения к серверу, с которым связан клиент |
|
Идентификатор процесса, если клиент подключается через сокет Unix и ОС поддерживает его получение |
|
Информация о TLS-подключении или пустая строка, если TLS не используется |
|
Имя приложения, ассоциированное со связанным клиентским соединением, или пустая строка, если приложение не установлено / нет соединения |
|
Количество подготовленных запросов, подготовленных клиентом |
|
Уникальный идентификатор клиента |
SHOW POOLS#
В таблице ниже приведены поля вывода команды SHOW POOLS.
Название поля |
Описание поля |
|---|---|
|
Имя базы данных |
|
Имя пользователя |
|
Клиентские подключения, которые либо связаны с серверными подключениями, либо находятся в режиме ожидания без запросов на обработку |
|
Клиентские соединения, которые отправили запросы, но еще не получили подключения к серверу |
|
Клиентские подключения, которые передали запросы на отмену на сервер и ожидают ответа сервера |
|
Клиентские соединения, которые еще не отправили на сервер отмены запроса |
|
Соединения с сервером, которые связаны с клиентом |
|
Подключения к серверу, которые в данный момент пересылают запрос на отмену |
|
Серверы, которые обычно могут простаивать, но не делают этого до тех пор, пока не будут выполнены все запросы на отмену в процессе выполнения, отправленные для отмены запроса на этом сервере |
|
Соединения с сервером, которые не используются и могут быть немедленно использованы для клиентских запросов |
|
Подключения к серверу, которые простаивали более |
|
Подключения к серверу, в которых выполняются |
|
Подключения к серверу в данный момент находятся в процессе входа в систему |
|
Время ожидания клиента в очереди. Если это значение начинает расти, значит, текущий пул серверов не обрабатывает запросы достаточно быстро. Причиной может быть либо перегрузка сервера, либо слишком маленький размер пула |
|
Дробная часть максимального времени ожидания в микросекундах |
|
Среднее время поднятия пула с учетом аутентификации в секундах |
|
Дробная часть среднего времени поднятия пула в микросекундах |
|
Максимальное время поднятия пула с учетом аутентификации в секундах |
|
Максимальное время поднятия пула в микросекундах |
|
Используемый режим пула |
|
Если хост пула содержит список, разделенный запятыми, используется |
SHOW PEER_POOLS#
В таблице ниже приведены поля вывода команды SHOW PEER_POOLS.
Название поля |
Описание поля |
|---|---|
|
Идентификатор настроенной записи |
|
Клиентские подключения, ожидающие ответа сервера на запрос отмены |
|
Клиентские соединения, еще не отправившие запрос отмены на сервер |
|
Подключения к серверу, выполняющие передачу запроса на отмену |
|
Подключения к серверу, находящиеся в процессе входа в систему |
SHOW LISTS#
В таблице ниже приведены поля вывода команды SHOW LISTS.
Название поля |
Описание поля |
|---|---|
|
Количество баз данных |
|
Количество пользователей |
|
Количество пулов |
|
Количество свободных клиентов, которые отключились, но Pangolin Pooler сохраняет выделенную для них память |
|
Количество использованных клиентов |
|
Количество клиентов в состоянии входа в систему |
|
Количество свободных серверов, которые отключены, но Pangolin Pooler сохраняет выделенную для них память |
|
Количество использованных серверов |
|
Количество пулов аутентификации |
|
Количество свободных серверов аутентификации |
|
Количество задействованных серверов аутентификации |
|
Количество DNS-имен в кеше |
|
Количество DNS-зон в кеше |
|
Количество выполняемых DNS-запросов в настоящее время |
|
Не используется |
SHOW USERS#
В таблице ниже приведены поля вывода команды SHOW USERS.
Название поля |
Описание поля |
|---|---|
|
Имя пользователя |
|
Пользовательское значение |
|
Пользовательское переопределение |
|
Переопределение пользователем |
|
Параметр |
|
Текущее количество подключений к серверу, открытых этим пользователем ко всем серверам |
|
Параметр |
|
Текущее количество клиентских подключений, открытых для Pangolin Pooler у этого пользователя |
SHOW DATABASES#
В таблице ниже приведены поля вывода команды SHOW DATABASES.
Название поля |
Описание поля |
|---|---|
|
Имя настроенной записи базы данных |
|
IP-адрес, к которому подключается Pangolin Pooler |
|
Порт, к которому подключается Pangolin Pooler |
|
Фактическое имя базы данных, к которой подключается Pangolin Pooler |
|
Если имя пользователя указано в строке подключения, то соединение между Pangolin Pooler и СУБД устанавливается с указанным пользователем, независимо от того, кто является клиентом |
|
Максимальное количество подключений к серверу |
|
Минимальное количество подключений к серверу |
|
Максимальное количество дополнительных подключений к этой базе данных |
|
Максимальное время жизни подключения к серверу для этой базы данных |
|
Переопределить режим пула базы данных или оставить значение |
|
Если хост содержит список, разделенный запятыми, то в |
|
Максимальное количество допустимых подключений к серверу для этой базы данных, заданное параметром |
|
Текущее количество подключений к серверу для этой базы данных |
|
Максимальное количество допустимых клиентских подключений для этого экземпляра Pangolin Pooler, заданное параметром |
|
Текущее количество клиентских подключений к этой базе данных |
|
|
|
|
SHOW PEERS#
В таблице ниже приведены поля вывода команды SHOW PEERS.
Название поля |
Описание поля |
|---|---|
|
Идентификатор настроенной записи |
|
IP-адрес, к которому подключается Pangolin Pooler |
|
Порт, к которому подключается Pangolin Pooler |
|
Максимальное количество подключений к серверу, которые могут быть осуществлены к этому узлу |
SHOW FDS#
Внимание
Эта команда блокирует внутренний цикл обработки событий, поэтому ее не следует использовать во время работы Pangolin Pooler.
В таблице ниже приведены поля вывода команды SHOW FDS.
Название поля |
Описание поля |
|---|---|
|
Числовое значение файлового дескриптора (FD) |
|
Предназначение. Принимает одно из значений: |
|
Пользователь соединения, использующий FD |
|
База данных соединения, использующего FD |
|
IP-адрес соединения, использующего FD. Принимает значение |
|
Порт, используемый соединением с использованием FD |
|
Клавиша отмены для этого подключения |
|
|
SHOW CONFIG#
В таблице ниже приведены поля вывода команды SHOW CONFIG.
Название поля |
Описание поля |
|---|---|
|
Имя переменной конфигурации |
|
Значение конфигурации |
|
Значение конфигурации по умолчанию |
|
Значения |
SHOW DNS_HOSTS#
В таблице ниже приведены поля вывода команды SHOW DNS_HOSTS.
Название поля |
Описание поля |
|---|---|
|
Имя хоста |
|
Время в секундах до следующего поиска |
|
Список адресов, разделенных запятыми |
SHOW DNS_ZONES#
В таблице ниже приведены поля вывода команды SHOW DNS_ZONES.
Название поля |
Описание поля |
|---|---|
|
Название зоны |
|
Текущий серийный номер |
|
Имена хостов, принадлежащих этой зоне |
SHOW AUTHSERVERS#
В таблице ниже приведены поля вывода команды SHOW AUTHSERVERS.
Название поля |
Описание поля |
|---|---|
|
Тип соединения, «A» для серверов аутентификации |
|
Имя базы данных |
|
Состояние подключения к серверу Pangolin Pooler. Значения: |
|
IP-адрес сервера СУБД |
|
Порт сервера СУБД |
|
Исходный адрес подключения на локальной машине |
|
Исходный порт подключения на локальной машине |
|
Время установления подключения |
|
Время подключения (время, когда получен ответ на |
|
Время выдачи последнего запроса |
|
Адрес внутреннего объекта для данного подключения. Используется как уникальный идентификатор |
|
Информация о TLS-подключении. Пустая строка, если TLS не используется |
SHOW AUTHPOOLS#
В таблице ниже приведены поля вывода команды SHOW AUTHPOOLS.
Название поля |
Описание поля |
|---|---|
|
Имя базы данных |
|
Количество клиентских подключений, которые выполняют запрос аутентификации к серверу аутентификации |
|
Подключения к серверу, которые используются в данный момент |
|
Подключения к серверу, которые не используются в данный момент |
|
Подключения к серверу, который простаивали более |
|
Подключения к серверу, в которых выполняются |
|
Подключения к серверу, находящиеся в процессе входа в систему |
|
Время ожидания в очереди самого первого клиента в секундах. Если это число начинает увеличиваться, значит текущий пул серверов не справляется с запросами достаточно быстро |
|
Дробная часть максимального времени ожидания в микросекундах |
SHOW AUTHUSERS#
В таблице ниже приведены поля вывода команды SHOW AUTHUSERS.
Название поля |
Описание поля |
|---|---|
|
Имя пользователя |
|
IP-адрес клиента |
|
Порт клиента |
|
Имя базы данных |
|
Переопределить режим пула базы данных или оставить значение |
SHOW LAST#
В таблице ниже приведены поля вывода команды SHOW LAST.
Название поля |
Описание поля |
|---|---|
|
Имя пользователя |
|
IP-адрес клиента |
|
Порт клиента |
|
Информация о TLS-подключении. Пустая строка, если TLS не используется |
|
Метод аутентификации (например, |
|
Место выполнения аутентификации (Pangolin Pooler, Pangolin DBMS) |
|
Статус аутентификации ( |
|
Время установления подключения |
|
Время ожидания клиента в очереди до аутентификации в секундах |
|
Дробная часть времени ожидания в микросекундах |
|
Время выполнения аутентификации (получения статуса аутентификации) |
|
Время выполнения аутентификация (в секундах). Если это число начинает увеличиваться, значит текущий сервер аутентификации не справляется с запросами достаточно быстро. Причиной может быть перегруженный сервер, а в случае внешних аутентификаций (GSS, LDAP, RADIUS) перегруженный сервер аутентификации |
|
Дробная часть времени выполнения аутентификации в микросекундах |
SHOW LOCKED_USERS#
В таблице ниже приведены поля вывода команды SHOW LOCKED_USERS.
Название поля |
Описание поля |
|---|---|
|
Имя пользователя |
|
IP-адрес клиента |
|
Порт клиента |
|
Имя базы данных |
|
Время начала блокировки |
|
Время окончания блокировки |
Команды управления процессом#
В таблице ниже приведены команды, отвечающие за управление процессами.
Команда |
Описание |
|---|---|
|
Pangolin Pooler пытается отключиться от всех серверов. При отключении от каждого сервера ожидается, что это подключение к серверу будет освобождено в соответствии с режимом объединения в пул (в режиме пула транзакций конкретная транзакция должна завершиться, в режиме пула операторов — конкретный оператор должен завершиться, а в режиме пула сеансов – должен отключиться клиент). Команда не будет выполнена до тех пор, пока все подключения к серверам не будут отключены. Команда используется во время перезапуска базы данных. Если указано имя базы данных, то она будет приостановлена. Новые подключения клиентов к приостановленной базе данных будут ожидать вызова команды |
|
Отклоняет все новые клиентские подключения к данной базе данных |
|
Разрешает новые клиентские подключения после команды |
|
Закрывает каждое открытое соединение с сервером для данной базы данных (или для всех баз данных) после его освобождения, в соответствии с режимом пула, даже если срок его действия еще не истек. Новые соединения с сервером могут быть установлены немедленно и реализовывать подключение по мере необходимости, в соответствии с настройками размера пула. Эта команда полезна, если настройки подключения к серверу изменились, например, для постепенного перехода на новый сервер. Эту команду не нужно выполнять, если строка подключения в После выполнения этой команды может пройти некоторое время, в течение которого некоторые серверные подключения будут направляться к старому месту назначения, а некоторые — к новому. Это имеет смысл при переключении трафика для чтения между репликами только для чтения или при переключении между узлами в конфигурации репликации с несколькими ведущими узлами. Если необходимо одновременно переключить все подключения, рекомендуется использовать |
|
Немедленно завершает все клиентские и серверные подключения к данной базе данных. Новые подключения клиентов к отключенной базе данных будут ожидать вызова |
|
Немедленно разрывает указанное клиентское соединение вместе со всеми серверными соединениями для данного клиента. Клиент, соединение с которым необходимо «разорвать», определяется по значению |
|
Очищает все буферы сокетов, и Pangolin Pooler перестает прослушивать данные в них. Команда не будет выполнена, пока все буферы не будут очищены. Используется во время «быстрой» перезагрузки Pangolin Pooler. Новые подключения клиентов к приостановленной базе данных будут ожидать вызова |
|
Восстанавливает работу после предыдущей команды |
|
Завершает процесс Pangolin Pooler |
|
Прекращает прием новых подключений и завершает работу после отключения всех серверов. Работает аналогично командам |
|
Прекращает принимать новые подключения и завершает процесс после того, как все существующие клиенты отключатся. Эту команду можно использовать для перезапуска двух процессов Pangolin Pooler с нулевым временем простоя по следующей процедуре:
|
|
Задает процессу Pangolin Pooler перезагрузку файлов конфигурации и обновление изменяемых параметров. Это касается основного файла конфигурации ( Pangolin Pooler уведомит, что при перезагрузке файла конфигурации изменяются параметры подключения к базе данных. Существующее подключение к серверу по старому адресу будет закрыто при следующем освобождении подключения к серверу (в соответствии с режимом пула), а новые подключения к серверу сразу будут использовать обновленные параметры подключения |
|
Ожидает, пока все серверные подключения к указанной базе данных или ко всем базам данных не выйдут из состояния |
Другие команды#
В таблице ниже приведены команды, не вошедшие в таблицу выше.
Команда |
Описание |
|---|---|
|
Изменяет параметр конфигурации (рассмотрите также команду Данная команда запускается в консоли администрирования и устанавливает настройки компонента. Команда |
Дополнительно реализованные команды#
В таблице ниже приведены команды, которые были реализованы в процессе доработки компонента.
Команда |
Описание |
|---|---|
|
Сбрасывает сквозную аутентификацию пользователей в состояние по умолчанию. В качестве аргумента передается строка, содержащая параметры для выборки пользователей, для которых будет сброшен (приведен в состояние по умолчанию) контекст сквозной аутентификации. Параметры выборки пользователя передаются в формате:
|
|
Переходит в режим |
|
Прерывает все существующие соединения к базам данных, а также все клиентские соединения, кроме соединений с административной консолью (для обеспечения связи с базой Поведение аналогично вызову команды |
Сигналы#
В таблице ниже приведены команды, отвечающие за сигналы.
Команда |
Описание |
|---|---|
|
Перезагрузка конфигурации. Равнозначно выполнению команды |
|
Завершение работы только при отключении всех существующих клиентов, без приема новых подключений. Равнозначно выполнению команды |
|
Безопасное завершение работы. Равнозначно выполнению команды |
|
Немедленное завершение работы. Равнозначно выполнению команды |
|
Равнозначно выполнению команды |
|
Равнозначно выполнению команды |
Опции командной строки#
Ниже приведено описание опций компонента при работе в командной строке.
-d,--daemonЗапуск в фоновом режиме. Без этого указания процесс будет выполняться на переднем плане.
В фоновом режиме требуется указание
pidfileиlogfileилиsyslog. После перехода в фоновый режим сообщения журнала не будут записываться вstderr.-R,--rebootВыполнение перезапуска в режиме онлайн. Это означает подключение к работающему процессу, загрузку открытых сокетов из него и последующее их использование. Если активного процесса нет, будет осуществлен запуск в обычном режиме.
Внимание
Опция устарела. Вместо этой опции используйте последовательный перезапуск с несколькими процессами, прослушивающими один и тот же порт с помощью
so_reuseport.Примечание
Работает только в том случае, если ОС поддерживает сокеты Unix и
unix_socket_dirне отключена в конфигурации. Не работает с TLS-соединениями, они прерываются.-u <username>,--user=<username>Переключение на данного пользователя при запуске.
-v,--verboseУвеличение детализации сообщений. Может использоваться несколько раз.
-q,--quietНе выводить сообщения в
stderr. Это не влияет на уровень детализации сообщений, ноstderrиспользовать нельзя. Для использования в скриптахinit.d.-V,--versionВывод версии.
-h,--helpВывод краткой справки.
Сценарии использования#
Доступ в БД через Pangolin Pooler#
Подключитесь в psql консоль пользователем postgres через Pangolin Pooler:
$ psql -p 6544Результат: Вход успешный.
Зайдите в консоль администрирования Pooler и проверьте количество подключенных к базе пользователей:
$ psql -p 6544 -U pgbouncer -d pgbouncerSHOW CLIENTS;Результат: Вернулся список пользователей, подключенных к базе данных через Pooler. Пример вывода:
-[ RECORD 4 ]-------+------------------------ type | C user | postgres database | postgres state | active addr | {IP-Address} port | {port} local_addr | {IP-Address} local_port | {local_port} connect_time | 2024-07-29 16:40:55 MSK loged_in_time | 2024-07-29 17:05:30 MSK request_time | 2024-07-29 16:55:41 MSK wait | 0 wait_us | 0 loged_in | 0 loged_in_us | 0 close_needed | 0 ptr | 0x259cf70 link | remote_pid | 0 tls | application_name | psql prepared_statements | 0
Вывод версии компонента#
Для вывода версии компонента Pangolin Pooler, а также ядра компонента (PgBouncer) выполните команду:
pangolin-pooler -V
Пример вывода:
Pangolin Pooler 1.5.0
PgBouncer 1.24.0
libevent 2.1.8-stable
adns: evdns2
tls: OpenSSL 1.1.1k FIPS 25 Mar 2021
authproxy: yes
2fa: yes
Проверка работы двухфакторной аутентификации при подключении к Pangolin через Pangolin Pooler#
Настройте двухфакторную аутентификацию для реализации подключения к СУБД через Pangolin Pooler с включенной или выключенной сквозной аутентификацией.
Создайте пользователя и задайте ему пароль:
postgres=#CREATE ROLE test_user; CREATE ROLE postgres=#ALTER user test_user WITH LOGIN; ALTER ROLE postgres=#ALTER user test_user WITH PASSWORD '<password>'; ALTER ROLEПодключитесь к Pangolin, выполните команду:
psql 'host=clustername port=5433 user=user1 sslmode=verify-ca sslcert=client-user1.crt sslkey=client-user1.key sslrootcert=root.crt'Введите на запрос пароля корректный пароль. В случае успеха psql перейдет в режим ожидания ввода запросов:
Password for user test_user:Ожидаемый результат:
psql (17.5) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off) Type "help" for help. postgres=>Проверьте, что выполняется запрос к БД, например:
test_user@postgres=# SELECT now(); +-------------------------------+ | now | +-------------------------------+ | 2025-06-27 17:18:22.813347+03 | +-------------------------------+ (1 row)
Сброс контекста сквозной аутентификация#
Пример работы команды сброса состояния аутентификация для всех пользователей:
Выполните запрос списка пользователей:
PGPASSWORD='<password3>' psql -p 6544 -d pgbouncer -U pgbouncer -c "SHOW AUTHUSERS"Ожидаемый результат: Запрос выполнен успешно. Все значения колонки
auth_stateравныdone. Пример вывода:name | addr | port | database | pool_mode | tls | auth_state ------+--------------+-------+----------+-----------+-----+------------ u1 | <IP-Address> | 44246 | d1 | | yes | done u1 | <IP-Address> | 44260 | d2 | | yes | done u2 | <IP-Address> | 43228 | d2 | | yes | done (3 rows)Выполните сброс состояния аутентификация для всех пользователей:
PGPASSWORD='<password3>' psql -p 6544 -d pgbouncer -U pgbouncer -c "RESET_AUTH"Результат: Запрос выполнен успешно:
RESET_AUTHПовторно выполните запрос списка пользователей:
PGPASSWORD='<password3>' psql -p 6544 -d pgbouncer -U pgbouncer -c "SHOW AUTHUSERS"Ожидаемый результат: Запрос выполнен успешно. Все значения колонки
auth_stateравныnone. Пример вывода:name | addr | port | database | pool_mode | tls | auth_state ------+--------------+-------+----------+-----------+-----+------------ u1 | <IP-Address> | 44246 | d1 | | yes | none u1 | <IP-Address> | 44260 | d2 | | yes | none u2 | <IP-Address> | 43228 | d2 | | yes | none (3 rows)
Исправление попытки неудачной аутентификации#
Выполните подключение к БД:
psql "host=<IP-Address> port=<port> user=testuser dbname=testdb sslmode=require"Аутентификация завершена ошибкой:
psql: error: FATALПроверьте лог-файл Pangolin Pooler на наличие записи типа:
2025-07-18 14:31:02.104 MSK [2102] FATAL testdb/testuser@<IP-Address>:<port> PgBouncer does not allow to use weak authentication type: "trust"Исправьте метод аутентификации в
pg_hbaна стороне СУБД, заменивtrustна безопасный метод, напримерscram-sha-256:# Было: host all all <IP-Address>/32 trust # Стало: host all all <IP-Address>/32 scram-sha-256Перечитайте конфигурацию:
sudo systemctl reload postgresqlПовторите попытку подключения:
psql "host=<IP-Address> port=<port> user=testuser dbname=testdb sslmode=require"Успешная аутентификация подтверждается сообщениями в логе:
2025-07-18 14:34:44.412 MSK AUDIT testdb/testuser@<IP-Address>:<port> login attempt tls=yes 2025-07-18 14:34:44.416 MSK AUDIT testdb/testuser@<IP-Address>:<port> send auth startup packet 2025-07-18 14:34:44.491 MSK AUDIT testdb/testuser@<IP-Address>:<port> auth server login ok
Определение клиентского IP адреса, подключенного к СУБД через Pangolin Pooler#
Вне зависимости от использования сквозной аутентификации, определить клиентский IP-адрес можно следующим образом:
Выполните запрос для поиска целевого подключения и его параметров. Пример:
postgres=# SELECT * FROM pg_stat_activity WHERE datname = 'tst1'\gx -[ RECORD 1 ]----+------------------------------------------------------------------- datid | 16734 datname | tst1 pid | 2366 usesysid | 10 usename | postgres application_name | pgAdmin 4 - CONN:9435271 client_addr | client_hostname | client_port | backend_start | 2023-11-13 11:57:06.347595+03 xact_start | 2023-11-13 11:57:58.16217+03 query_start | 2023-11-13 11:57:58.16217+03 state_change | 2023-11-13 11:57:58.162323+03 wait_event_type | Client wait_event | ClientRead state | idle in transaction query | begin; | select 1; backend_type | client backendЗначения
pidиclient_portбудут использоваться далее:pid = 2366,client_port = 54406.Подключитесь к административной БД
pgbouncer:$ psql -p 6544 -U pgbouncer -d pgbouncerВыполните команду
SHOW SERVERSи по значениямremote_pidиlocal_portнайдите нужную запись:pgbouncer=# SHOW SERVERS\gx -[ RECORD 3 ]-+------------------------ type | S user | postgres database | tst1 state | active addr | <IP-Address> port | <port> local_addr | <IP-Address> local_port | <port> connect_time | 2023-11-13 11:57:06 MSK loged_in_time | 2023-11-13 11:57:06 MSK request_time | 2023-11-13 11:57:58 MSK remote_pid | 2366 link | 0x179d6b0Значение
linkравное0x179d6b0потребуется на следующем шаге.Выполните
SHOW CLIENTSи найдите запись, гдеptrсовпадает сlinkиз предыдущего шага:pgbouncer=# SHOW CLIENTS\gx -[ RECORD 3 ]-+------------------------ type | C user | postgres database | tst1 state | active addr | <IP-Address_client> port | <port> local_addr | <IP-Address> local_port | <port> connect_time | 2023-11-13 11:57:28 MSK loged_in_time | 2023-11-13 13:30:22 MSK request_time | 2023-11-13 11:57:58 MSK ptr | 0x179d6b0В поле
addrуказано значение IP-адреса клиента, а вport— клиентский порт подключения кpgbouncer.Дополнительно можно включить расширенное логирование, чтобы видеть IP-адрес клиента и его порт в логах. Для этого в конфигурационный файл
pangolin-pooler.iniдобавьте параметрlog_auditв значении1:log_audit = 1