Как настроить / заставить Haproxy отправлять запросы чтения-записи, приходящие на тот же порт 5432 от приложения, на внутренние серверы кластера postgres-patroni на основе метода REST.
У меня есть кластер postgres-patroni с тремя узлами, работающий как служба / контейнеры докеров за Haproxy. Я хочу отправить запрос чтения / получения, исходящий из моего приложения на порт 5432, в реликвии моего кластера и отправить запрос записи / (Delete | Post | Update), исходящий из моего приложения, также на порт 5432 на главный сервер.
Я попытался добиться этого с помощью конфигурации ниже. Но пока не удалось.
Любая идея Как заставить Haproxy достичь вышеуказанного сценария.
Вот мой файл Haproxy.cfg
global
maxconn 100
defaults
log global
mode tcp
retries 2
timeout client 30m
timeout connect 4s
timeout server 30m
timeout check 5s
# never fail on address resolution
default-server init-addr none
resolvers docker_resolver
nameserver dns 127.0.0.11:53
listen stats
mode http
bind *:7000
stats enable
stats uri /
frontend master_postgresql
bind *:5432
acl is_post method "POST|UPDATE|DELETE"
use_backend backend_master if is_post
default_backend backend_master
frontend replicas_postgresql
bind *:5432
acl is_get method GET
use_backend backend_replicas if is_get
default_backend backend_replicas
frontend patroni_api
bind *:8008
default_backend backend_api
backend backend_master
balance source
hash-type consistent
option httpchk OPTIONS /master
server postgres1 postgres1:5432 maxconn 100 check port 8008 resolvers docker_resolver resolve-prefer ipv4
server postgres2 postgres2:5432 maxconn 100 check port 8008 resolvers docker_resolver resolve-prefer ipv4
server postgres3 postgres3:5432 maxconn 100 check port 8008 resolvers docker_resolver resolve-prefer ipv4
backend backend_replicas
option httpchk OPTIONS /replica
server postgres1 postgres1:5432 maxconn 100 check port 8008 resolvers docker_resolver resolve-prefer ipv4
server postgres2 postgres2:5432 maxconn 100 check port 8008 resolvers docker_resolver resolve-prefer ipv4
server postgres3 postgres3:5432 maxconn 100 check port 8008 resolvers docker_resolver resolve-prefer ipv4
backend backend_api
option httpchk OPTIONS /master
server postgres1 postgres1:8008 maxconn 100 check port 8008 resolvers docker_resolver resolve-prefer ipv4
server postgres2 postgres2:8008 maxconn 100 check port 8008 resolvers docker_resolver resolve-prefer ipv4
server postgres3 postgres3:8008 maxconn 100 check port 8008 resolvers docker_resolver resolve-prefer ipv4