Patroni postgres — механизм автоматического обнаружения и восстановления PostgreSQL кластера


В современном мире базы данных играют ключевую роль в различных сферах деятельности. От поисковиков и социальных сетей до банков и интернет-магазинов — все они хранят и обрабатывают огромное количество информации. Одной из самых популярных и мощных систем управления базами данных (SMBD) является PostgreSQL.

Однако, любая база данных востребована и сильно нагружена, и поэтому важно обеспечивать ее непрерывную работу и высокую доступность. Именно для таких целей была разработана Patroni — инструмент, позволяющий создавать отказоустойчивые кластеры баз данных на основе PostgreSQL.

Patroni работает на основе концепции «лидер-последователь». В кластере PostgreSQL с Patroni однин из узлов является лидером (мастером), который выполняет операции записи и чтения данных, а остальные узлы являются последователями (репликами), их задача — реплицировать данные с лидера и обслуживать только чтение запросы.

Основное преимущество Patroni — это автоматическое переключение между узлами кластера в случае отказа лидера или одного из последователей. При возникновении сбоя, Patroni обнаруживает его и самостоятельно выбирает нового лидера, который будет обслуживать запросы.

Принцип работы Patroni Postgres

Существуют несколько основных компонентов, которые составляют систему Patroni:

1. Запускаторы (bootstrappers) — это процессы, которые автоматически создают и инициализируют новые экземпляры базы данных PostgreSQL.

2. Эти экземпляры PostgreSQL образуют реплику, которая может быть использована для горячего резервирования или масштабирования.

3. Watchdog — это демон, который следит за состоянием всех запущенных экземпляров PostgreSQL и решает, какой экземпляр должен быть главным (мастером) и какие должны быть репликами (слейвами).

4. Consul или etcd — это сетевые службы, которые используются для обнаружения и координации запущенных экземпляров PostgreSQL.

Когда система Patroni запущена, запускаторы создают новый экземпляр PostgreSQL и инициализируют его базу данных. Затем запускается Watchdog, который отслеживает состояние каждого экземпляра и принимает решение о его роли.

Если мастер отказывает или иначе становится недоступным, Watchdog выбирает одну из реплик и повышает ее до роли мастера. Если реплика также недоступна, система может использовать автоматическое фехтование для перезапуска недоступного экземпляра или принять другие меры для обеспечения отказоустойчивости.

Все запущенные экземпляры PostgreSQL регулярно отправляют свои наблюдаемые данные Watchdog и друг другу. Watchdog использует эти данные для определения состояния каждого экземпляра и принятия решений о переключении ролей.

Таким образом, Patroni позволяет автоматически управлять кластером PostgreSQL и обеспечивает отказоустойчивость баз данных, предоставляя механизмы переключения ролей и резервирования данных.

Установка и настройка Patroni

Установка Patroni достаточно проста и осуществляется через пакетный менеджер, такой как pip или apt. Вам также понадобится установленный Postgres.

Шаги установки:

  1. Установите Patroni с помощью следующей команды:

    pip install patroni

  2. Создайте конфигурационный файл для каждого экземпляра Postgres, который вы хотите управлять с помощью Patroni. Пример конфигурационного файла может выглядеть следующим образом:


    scopes:
        - postgres
    patroni:
      bootstrap:
         dcs:
             ttl: 30
             loop_wait: 10
             retry_timeout: 10
             maximum_lag_on_failover: 67108864
         use_pg_rewind: true
         izeke:{str1:str2, ...}

  3. Запустите Patroni для каждого экземпляра Postgres, используя созданные конфигурационные файлы:

    patroni postgresql.yml

Теперь Patroni настроен и готов к работе с вашими экземплярами Postgres. Проверьте журналы Patroni, чтобы убедиться, что все работает правильно.

Добавить комментарий

Вам также может понравиться