Настройка HAProxy для автоматического определения ролей экземпляров PostgreSQL и защиты от split brain

OlegIct 47 минут назад Объяснить с Настройка HAProxy для автоматического определения ролей экземпляров PostgreSQL и защиты от split brain Сложный 16 мин 1.4K Блог компании Тантор Лабс PostgreSQL * Базы данных *...
Will Anthropic have the best AI model at the end of October 2026?
В сфере искусственного интеллекта произошло заметное событие. OlegIct 47 минут назад Объяснить с Настройка HAProxy для автоматического определения ролей экземпляров PostgreSQL и защиты от split brain Сложный 16 мин 1. 4K Блог компании Тантор Лабс PostgreSQL * Базы данных * Системное администрирование * Туториал ВведениеHAProxy должен выполнять проверки, чтобы определить роль экземпляров PostgreSQL: мастер или реплика, чтобы направлять соединения на подходящие сервера. Описываются способы настройки HAProxy для обнаружения переключения ролей экземпляров:1) через Patroni REST API2) через параметр in_hot_standby, передаваемый сервером сразу после аутентификации клиента3) запросом select pg_is_in_recovery();Два последних способа используются, если Patroniпоставлен на паузу или не используется.
топология HAProxy + PostgreSQLПроверка через Patroni REST APIДля проверок HAProxy может обращаться на порт Patroni REST API по протоколу HTTP или на порты экземпляров PostgreSQL. Проверки инициирует HAProxy, экземпляры не уведомляют HAProxy о смене своих ролей. Эти проверки должны повторяться через короткие интервалы времени, чтобы HAProxy мог быстро реагировать на смену роли.
Технические детали
В конфигурации HAProxy создаётся две секции listen для мастера и реплик:listen primary bind *:8001 option httpchk OPTIONS /primary http-check expect status 200 default-server inter 2s fastinter 100ms downinter 2s fall 3 rise 2 observe layer4 error-limit 1 on-error fastinter init-state down on-marked-down shutdown-sessions server wtantor1 127. 1:5432 maxconn 100 check addr 127. 1 port 8008 server wtantor2 127.
1:5433 maxconn 100 check addr 127. 2 port 8008 server wtantor3 127. 1:5434 maxconn 100 check addr 127.
3 port 8008 listen replica bind *:8002 option httpchk OPTIONS /replica http-check expect status 200 default-server inter 2s fastinter 100ms downinter 2s fall 3 rise 2 observe layer4 error-limit 1 on-error fastinter init-state down on-marked-down shutdown-sessions server rtantor1 127. 1:5432 maxconn 100 check addr 127. 1 port 8008 server rtantor2 127.
Отраслевые последствия
1:5433 maxconn 100 check addr 127. 2 port 8008 server rtantor3 127. 1:5434 maxconn 100 check addr 127.
3 port 8008IP-адрес Patroni REST API может отличаться от ip-адреса экземпляра PostgreSQL. Для корректной работы нужно, чтобы были установлены параметры init-state=down и, как минимум, у реплик on-marked-down=shutdown-session. Директиву можно указать в секции defaults.
Аналогичная конфигурация haproxy. cfg рекомендована 1С ИТС. Проверка через Patroni REST API может использоваться только, если используется Patroni и он не поставлен на паузу (переведён в mainenance mode).
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.






