Архитектура высокодоступного кластера ELMA365 подразумевает взаимодействие микросервисов приложения ELMA365 с кластером базы данных PostgreSQL. Рассматриваемая в данной статье конфигурация HAProxy для PostgreSQL предполагает балансировку трафика до кластера Master-Replica(s).
Примеры настройки HAProxy:
- Пример конфигураци HAProxy для подключения к PostgreSQL.
- Пример конфигураци 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
### PostgreSQL ### |
Перезапустите 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
### PostgreSQL ### |
Перезапустите HAProxy с помощью команды:
sudo systemctl restart haproxy