Отказоустойчивый кластер PostgreSQL: Patroni и repmgr на практике 2026
Patroni vs repmgr: какой инструмент выбрать для HA-кластера PostgreSQL, как настроить автоматический failover и не потерять данные при split-brain.
Один сервер PostgreSQL — это не вопрос «упадёт ли», а вопрос «когда». Для прод-нагрузок нужен кластер с автоматическим failover. В РФ за последние 3 года стандартом де-факто стал Patroni, но repmgr всё ещё активно используется в Postgres Pro Enterprise.
Patroni: лидер для современных инсталляций
Шаблон от Zalando. Использует распределённое key-value хранилище (etcd, Consul, ZooKeeper) для выбора лидера. При падении мастера автоматически промоутит реплику за 10-30 секунд. Команда 1IT разворачивает Patroni в продакшен на Astra Linux SE и РЕД ОС.
- Минимальный кластер: 3 ноды PostgreSQL + 3 ноды etcd (можно совмещать)
- REST API для управления: переключение, проверка статуса
- Поддержка синхронной и каскадной репликации
- Интеграция с HAProxy / pgBouncer для роутинга трафика
- Watchdog для защиты от split-brain
repmgr: проще, но без автоматики из коробки
Разработка 2ndQuadrant (теперь EDB). Управляет репликацией, делает switchover/failover, но без DCS — нужен отдельный демон repmgrd с witness-нодой. Чаще встречается в legacy-инсталляциях или там, где etcd считают «чёрным ящиком».
Архитектура продакшен-кластера
- 3 PostgreSQL ноды в разных стойках (или AZ облака)
- 3 etcd-ноды (кворум из 2)
- 2 HAProxy с keepalived и виртуальным IP
- PgBouncer на каждом PostgreSQL для пуллинга
- Отдельный сервер для бэкапов (Barman или WAL-G)
- Prometheus + Grafana + Alertmanager для мониторинга
Синхронная или асинхронная репликация
- Асинхронная (по умолчанию) — низкая latency, RPO 0-несколько секунд
- Синхронная — RPO=0, но мастер ждёт подтверждения реплики
- ANY 1 (sync_replicas=2) — компромисс: ждём любую из двух реплик
- Для финансов и КИИ — обязательно синхронная
- Для веба, контента, аналитики — асинхронная
Защита от split-brain
Главный кошмар HA — два мастера одновременно. Patroni решает через DCS-кворум: нода без связи с большинством etcd добровольно демоутится. Дополнительно — Linux watchdog: если процесс Patroni завис, ядро ребутает сервер за 10 секунд.
Мониторинг и алерты
Обязательный набор метрик: pg_stat_replication.lag, состояние Patroni leader, размер pg_wal, задержка checkpoint, состояние etcd-кворума. Алерты — на лаг репликации >10 МБ, переключение лидера, рост wal_size.
Частые вопросы
Можно ли построить HA на Postgres Pro Multimaster вместо Patroni?+
Да, но Multimaster решает другую задачу — активная запись в несколько узлов с конфликтами. Для классического HA с автофейловером и read-репликами Patroni проще, дешевле и надёжнее.
Сколько ресурсов нужно на etcd?+
etcd очень лёгкий: 2 vCPU и 2 ГБ RAM на ноду хватает для кластера до 50 PostgreSQL-инстансов. Главное — низкая latency между нодами (<10 мс) и быстрый диск (NVMe или SSD).
Как тестировать failover в проде?+
Раз в квартал — учения: kill -9 процесс postmaster на мастере или iptables DROP. Замеряете время failover, проверяете, что приложение восстановилось. Документируете результаты для аудита.
Нужна помощь по этой теме?
Обсудим задачу и предложим план за 24 часа. Работаем с компаниями из России и СНГ с 1999 года.
Похожие материалы
Бэкапы PostgreSQL: pg_dump, Barman, WAL-G — что и когда выбирать
Какой инструмент выбрать для бэкапа PostgreSQL: pg_dump для разработки, pg_probackup для прода, WAL-G для облака. Реальные стратегии 3-2-1.
ЧитатьОптимизация PostgreSQL: 10 параметров для роста производительности 2026
10 ключевых параметров postgresql.conf, которые дают кратный рост производительности. Формулы расчёта и пример рабочего конфига.
ЧитатьPostgreSQL Pro vs PostgreSQL: что выбрать для бизнеса в РФ в 2026
Когда переплата за Postgres Pro Enterprise оправдана, а когда хватит community-версии: разбираем по фичам, ценам и регуляторным требованиям.
Читать