IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

HAProxy: раздельное проксирования на мастер и реплики для Patroni кластера

ля настройки проверки состояния (health check) в HAProxy для кластера Patroni, используется параметр httpchk. В Patroni обычно предоставляется HTTP API для мониторинга состояния кластера и отдельных узлов, включая лидера и реплики. HAProxy может использовать этот API для определения статуса каждого сервера и принимать решения о маршрутизации запросов в зависимости от их состояния.

Пример настройки HAProxy с использованием httpchk для Patroni

Шаги:

  1. Настройка Patroni: Patroni предоставляет HTTP API на каждом узле, которое можно использовать для проверки состояния кластера. Обычно это порт, указанный в конфигурации Patroni (например, 8008).
  2. HAProxy конфигурация:
    • Вы отправляете HTTP-запросы к API Patroni для проверки того, является ли узел лидером или репликой.
    • Например, можно использовать GET /master для проверки, является ли узел мастером, или /replica для проверки, является ли узел репликой.

Пример конфигурации HAProxy для Patroni с httpchk:

Объяснение конфигурации:

  1. frontend pgsql_frontend — Определяет, что запросы будут приниматься на порту 5432 и перенаправляться на бэкенд Patroni.
  2. option httpchk GET /master HTTP/1.1 — Выполняет HTTP GET-запрос по пути /master на API Patroni, чтобы убедиться, что этот узел является лидером.
  3. http-check expect status 200 — Ожидается HTTP-ответ с кодом 200, который подтверждает, что узел активен и может принимать запросы.
  4. server pg_node1 — Настраиваются отдельные узлы Patroni с указанием IP-адреса и порта для базы данных (5432) и API для проверки состояния (8008).

Дополнительные проверки для реплик

Чтобы проксировать запросы также на реплики, можно добавить аналогичные проверки для них:

Описание ролей:

  • Лидер (master): Используется для записи данных.
  • Реплики (replica): Могут использоваться для чтения данных.

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *