Создано чтобы никогда не отключаться.
Каждый компонент работает горячим. Активный и резервный узлы БД непрерывно реплицируются. Виртуальный IP парит над кластером — keepalived следит за primary, и как только тот перестаёт отвечать, трафик идёт на standby до того, как средний зритель заметит буферизацию. Это не туториал Postgres, прибитый к SaaS — это первоклассная инфраструктура, о которой вашему оператору никогда не нужно думать.
Три узла, одна правда.
Пара БД активный/резервный реплицируется по приватной сети. Пара балансировщиков nginx участвует в VRRP для виртуального IP, парящего между ними. Кластер приложения читает через connection pool, который очищается и повторяет при перемещении primary. Каждая связь имеет двойной путь.
Что происходит, секунда за секундой.
Когда primary узел отказывает, восстановление происходит в 4 упорядоченных шага. Действие оператора: ноль. Нарушение на стороне клиента: короче TCP retransmit.
Heartbeat потерян
Keepalived резервного узла перестаёт получать VRRP-объявления от primary. После 3 пропущенных маяков (~1.5с) standby повышает себя.
Повышение + STONITH
Новый primary огораживает старый узел — выключение через cloud API — и принимает записи. Направление репликации инвертируется; восстановленный узел присоединится как standby.
Виртуальный IP мигрирует
VRRP виртуальный IP переходит на NIC нового primary. Connection pool слоя приложения очищается; запросы в полёте повторяются против новой конечной точки.
Стабильное состояние
Сервис восстановлен. Восстановленный узел, когда доступен, синхронизируется и присоединяется как тёплый standby. Записи аудит-журнала записаны. Оператор получает одно уведомление — после факта.