ELMA365 On-Premises > Подготовка инфраструктуры > Балансировщик нагрузки / Конфигурация HAProxy для PostgreSQL

Конфигурация HAProxy для PostgreSQL

Архитектура высокодоступного кластера ELMA365 подразумевает взаимодействие микросервисов приложения ELMA365 с кластером базы данных PostgreSQL. Рассматриваемая в данной статье конфигурация HAProxy для PostgreSQL предполагает балансировку трафика до кластера Master-Replica(s).

Примеры настройки HAProxy:

  1. Пример конфигураци HAProxy для подключения к PostgreSQL.
  2. Пример конфигураци HAProxy для подключения к PGBouncer.

Пример конфигурации HAProxy для подключения к PostgreSQL

В данной статье конфигурация подготовлена для балансировки трафика в кластер PostgreSQL, развёрнутый согласно описанию из статьи «Кластер PostgreSQL».

  • HAProxy опрашивает порт 8008 сервиса Patroni для автоматического определения актуального сервера PostgreSQL с ролью master;
  • операции записи, приходящие на haproxy-server.your_domain:5000, направляются на сервер с ролью master;
  • операции чтения, приходящие на haproxy-server.your_domain:5001, направляются на сервера с ролью slave.

Откройте для редактирования конфигурационный файл haproxy.cfg с помощью команды:

sudo nano /etc/haproxy/haproxy.cfg

Пример конфигурации для настройки балансировки нагрузки до кластера PostgreSQL с помощью HAProxy для добавления в файл haproxy.cfg:

### PostgreSQL ###
listen postgres_master
    bind haproxy-server.your_domain:5000
    option tcplog
    option httpchk OPTIONS /master
    http-check expect status 200
    default-server inter 3s fastinter 1s fall 3 rise 4 on-marked-down shutdown-sessions
    server postgres-server1 postgres-server1.your_domain:5432 check port 8008
    server postgres-server2 postgres-server2.your_domain:5432 check port 8008
    server postgres-server3 postgres-server3.your_domain:5432 check port 8008
 
listen postgres_replicas
    bind haproxy-server.your_domain:5001
    option tcplog
    option httpchk OPTIONS /replica
    balance roundrobin
    http-check expect status 200
    default-server inter 3s fastinter 1s fall 3 rise 2 on-marked-down shutdown-sessions
    server postgres-server1 postgres-server1.your_domain:5432 check port 8008
    server postgres-server2 postgres-server2.your_domain:5432 check port 8008
    server postgres-server3 postgres-server3.your_domain:5432 check port 8008
### PostgreSQL ###

Пример конфигурации HAProxy с использованием SSL

Перезапустите HAProxy с помощью команды:

sudo systemctl restart haproxy

Пример конфигураци HAProxy для подключения к PGBouncer

В данной статье конфигурация подготовлена для балансировки трафика в кластер PostgreSQL, развёрнутый согласно описанию из статьи «Кластер PostgreSQL», через программу PGBouncer, установленную согласно описанию из статьи «Установка PGBouncer».

  • HAProxy опрашивает порт 8008 сервиса Patroni для автоматического определения актуального сервера PostgreSQL с ролью master;
  • операции записи приходящие на haproxy-server.your_domain:5000 направляются на сервер с ролью master;
  • операции чтения приходящие на haproxy-server.your_domain:5001 направляются на сервера с ролью slave.

Откройте для редактирования конфигурационный файл haproxy.cfg с помощью команды:

sudo nano /etc/haproxy/haproxy.cfg

Пример конфигурации для настройки балансировки нагрузки до PGBouncer с помощью HAProxy, для добавления в файл haproxy.cfg:

### PostgreSQL ###
listen postgres_master
    bind haproxy-server.your_domain:5000
    option tcplog
    option httpchk OPTIONS /master
    http-check expect status 200
    default-server inter 3s fastinter 1s fall 3 rise 4 on-marked-down shutdown-sessions
    server postgres-server1 postgres-server1.your_domain:6432 check port 8008
    server postgres-server2 postgres-server2.your_domain:6432 check port 8008
    server postgres-server3 postgres-server3.your_domain:6432 check port 8008
 
listen postgres_replicas
    bind haproxy-server.your_domain:5001
    option tcplog
    option httpchk OPTIONS /replica
    balance roundrobin
    http-check expect status 200
    default-server inter 3s fastinter 1s fall 3 rise 2 on-marked-down shutdown-sessions
    server postgres-server1 postgres-server1.your_domain:6432 check port 8008
    server postgres-server2 postgres-server2.your_domain:6432 check port 8008
    server postgres-server3 postgres-server3.your_domain:6432 check port 8008
### PostgreSQL ###

Пример конфигурации HAProxy с использованием SSL

Перезапустите HAProxy с помощью команды:

sudo systemctl restart haproxy