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 хранит информацию о конфигурации и блокировках.