$ cat "Сборка отказоустойчивого кластера PostgreSQL 16 для Enterprise: пошаговый гайд.md"

Отказоустойчивый кластер PostgreSQL 16 с Patroni

Когда бизнес работает 24/7, простой базы данных недопустим. В этом гайде мы покажем архитектуру отказоустойчивого (High Availability) кластера PostgreSQL 16, которую мы используем в production для наших Enterprise-клиентов.

Архитектура

Наш стек:

  • PostgreSQL 16: Сама СУБД.
  • Patroni: Шаблонный инструмент для управления HA PostgreSQL, разработанный Zalando.
  • etcd: Распределенное хранилище ключ-значение для хранения состояния кластера (DCS).
  • HAProxy: Балансировщик нагрузки для перенаправления трафика на мастер-узел.
  • Keepalived (Опционально): Для обеспечения отказоустойчивости самого HAProxy через VIP (Virtual IP).

Пошаговая настройка

(В этой статье должен быть подробный технический текст с конфигами patroni.yml, командами установки etcd и настройками haproxy.cfg. Это демонстрирует вашу глубокую экспертизу.)

# Пример минимального patroni.yml
scope: postgres-cluster
namespace: /db/
name: node1
...

Как это работает при сбое?

Если мастер-сервер падает (kernel panic, отказ сети, сбой диска), Patroni замечает потерю лидерского ключа в etcd. Оставшиеся реплики инициируют выборы нового лидера. Реплика с самыми свежими данными становится новым мастером (Promote). В это же время HAProxy через health checks замечает смену роли и перенаправляет весь write-трафик на новый мастер.

Время простоя: обычно от 5 до 15 секунд.

Нужна помощь с базами данных?