Patroni: отказоустойчивый PostgreSQL кластер - это просто
Для задачи создания отказоустойчивого кластера с ведущими и ведомыми узлами мы создали Patroni - служебную программу для запуска PostgreSQL кластеров и автоматического переключения ведущих узлов в кластере в случае аварии. Мы расскажем об архитектуре Patroni и о том, как он используется для решения разнообразных задач в Zalando, от экспериментов с поточной реализацией и придания "отказоустойчивости" существующим базам данных до запуска серверов в контейнерах Docker на базе платформы AWS.
Задача создания отказоустойчивого кластера с ведущими и ведомыми узлами стала очень актуальной после массовой миграции баз данных в облака AWS или GCE. Возможность в считанные секунды заменить отказавший сервер на новый является очень привлекательной для СУБД, но, для того, чтобы это всегда работало, необходимо организовать автоматическое переключение с отказавшего ведущего узла на бывший ведомый. Более того, задача запуска мастера и множества реплик в облаке требует возможностей, отсутствующих в ядре PostgreSQL, таких как автоматическое обнаружение узлов, относящихся к одному кластеру и их переконфигурирование в случае смены мастера.
Для решения обеих задач мы создали Patroni - служебную программу для запуска PostgreSQL кластеров, состоящих из одного ведущего узла и множества ведомых, а также автоматического переключения ведущих узлов в случае аварии. Мы расскажем об архитектуре Patroni и о том, как он используется для решения разнообразных задач в Zalando, от экспериментов с поточной реализацией и придания "отказоустойчивости" существующим базам данных до запуска серверов в контейнерах Docker на базе платформы AWS.
Patroni является открытым программным продуктом и поддерживается компаний Zalando и сторонними разработчиками на http://github.com/zalando/patroni