Sobes.tech
Back to questions
Middle
3

Как обеспечить стабильное подключение к мастер-ноде в кластере PostgreSQL (Patroni) при деплое?

Companies where asked
Сбертех

Answer from AI

sobes.tech AI

Чтобы обеспечить стабильное подключение к мастер-ноде в кластере PostgreSQL с Patroni при деплое, нужно:

  • Использовать виртуальный IP (VIP) или DNS-имя, которое всегда указывает на текущий мастер. Patroni может управлять VIP, переключая его на нового мастера при фейле.
  • Настроить клиентские приложения на подключение к этому VIP или DNS, а не напрямую к конкретному узлу.
  • Обеспечить корректную работу механизма failover в Patroni, чтобы переключение мастера происходило быстро и без сбоев.
  • При деплое использовать rolling update, обновляя ноды по очереди, чтобы мастер всегда был доступен.

Пример настройки подключения через VIP:

# patroni.yml
restapi:
  listen: 0.0.0.0:8008
  connect_address: 10.0.0.1:8008

bootstrap:
  dcs:
    ttl: 30
    loop_wait: 10
    retry_timeout: 10
    maximum_lag_on_failover: 1048576

postgresql:
  listen: 0.0.0.0:5432
  connect_address: 10.0.0.1:5432

watchdog:
  mode: automatic

# VIP настройка в Patroni
tags:
  nofailover: false
  noloadbalance: false
  clonefrom: false
  nosync: false

# VIP должен быть настроен на уровне сети и Patroni

Таким образом, клиенты всегда подключаются к одному адресу, а Patroni управляет, какой узел сейчас мастер.