Patroni
Шаблон для высокодоступного PostgreSQL: Python-агент, который работает рядом с каждым узлом БД и отвечает за выбор primary и автоматический failover. Создан в Zalando.
Самое сложное в автоматическом failover — решить, кто primary, и не получить двух primary одновременно. Patroni выносит истину за пределы базы, в распределённое хранилище конфигурации: etcd, Consul, ZooKeeper или API-сервер самого Kubernetes. Primary считается тот узел, который держит блокировку лидера с ограниченным сроком действия; потеряв её, он понижает себя сам, пока его никто не опередил. Агент также генерирует postgresql.conf и pg_hba.conf, разворачивает новые реплики и предоставляет REST API, у которого балансировщики узнают, кто принимает запись. На практике это выбор по умолчанию и основа большинства операторов Postgres для Kubernetes.