⚙️ Теория
🧩 Что делает Patroni
Patroni автоматизирует управление HA для PostgreSQL:
- лидерство и failover;
- конфигурация кластера через DCS;
- health checks и orchestration ролей primary/replica.
🧠 DCS и лидерство
Patroni использует Distributed Configuration Store (например etcd/Consul/Kubernetes API) для:
- хранения состояния кластера;
- lock на лидерство;
- координации переключений.
🔄 Failover / Switchover
- failover при проблеме primary по политике кластера;
- switchover как контролируемое плановое переключение.
Критично настроить fencing и клиентскую маршрутизацию на актуального primary.
⚠️ Где обычно проблемы
- нестабильный DCS;
- невалидные ttl/timeouts в конфигурации;
- отсутствие регулярных drills переключения.
❓ Что нужно уметь объяснить
Почему Patroni не отменяет backup strategy?
Patroni решает HA/availability, но не заменяет backup/restore от логических ошибок и человеческих действий.
Почему DCS это критическая зависимость?
Потому что от его консистентности зависит корректность leader election и отсутствие split-brain.
Что делать обязательно перед production?
Провести серийные failover/switchover тесты и проверить поведение клиентов/прокси.
🧪 Практика
1. Проверка состояния Patroni
patronictl -c /etc/patroni.yml list
2. Плановый switchover
patronictl -c /etc/patroni.yml switchover
3. Guardrails
- мониторинг DCS latency/availability;
- репликационный lag как ключевой алерт;
- регулярный rehearsal recovery-процедур.
🧾 Вывод
Patroni существенно упрощает HA PostgreSQL, если есть стабильный DCS, корректная маршрутизация и дисциплина тестирования переключений.