Patroni#
Patroni – шаблон на Python, инструмент для управления высокой доступностью (High Availability) кластеров PostgreSQL. Позволяет автоматизировать настройку репликации, мониторинг состояния узлов, отказоустойчивость и восстановление после сбоев.
Patroni интегрируется с различными системами распределенной конфигурации, например ZooKeeper, Etcd, Consul или Kubernetes.
Основные характеристики#
Основные функции Patroni:
Автоматическая отказоустойчивость: Patroni управляет переключением на резервные узлы при незапланированных сбоях главного кластера PostgreSQL.
Управление репликацией: Patroni использует потоковую репликацию PostgreSQL и распределенное хранилище конфигурации (DCS) для координации между узлами.
Хранение конфигурации в распределенном хранилище: Patroni использует внешние системы координации, позволяя узлам кластера согласовывать мастер и репликации кластера.
Мониторинг: Patroni отображает статус кластера, управляет и интегрируется с системами мониторинга (например, Prometheus).
Поддержка кластеров с несколькими узлами: Patroni использует кластеры из двух узлов (основной + резервный) и обеспечивают автоматическое переключение при отказе с высокой доступностью.
Установка#
Для установки Patroni выполните команду:
dnf install python3-patroni
Конфигурация#
Конфигурация Patroni осуществляется через YAML-файл, в котором определяются необходимые параметры. YAML-файл создается вручную, в зависимости от инфраструктуры и требований. По умолчанию конфигурационный файл Patroni в ОС Linux должен располагаться в каталоге /etc/patroni. Данный файл отвечает за конфигурацию на конкретном узле. Общая конфигурация может храниться в распределенном хранилище etcd.
Пример, где Patroni предоставляет REST-интерфейс для мониторинга и управления, используя Etcd в качестве DCS:
restapi:
listen: 0.0.0.0:8008
connect_address: 000.000.0.00:8008
etcd:
hosts:
- 000.000.0.00:2379
Где:
listen- адрес и порт, где Patroni будет слушать запросы.hosts- список Etcd-серверов, где Patroni хранит информацию о конфигурации и блокировках.