galera 클러스터, mariadb 버전 10.3 및 haproxy가 있습니다.
우리는 사용자가 client->haproxy->galera_cluster와 같이 연결하기를 원합니다. 데이터베이스에 생성한 사용자는 클라이언트가 IP를 사용할 수 있도록 허용합니다. http의 경우 헤더에 send-proxy 또는 X-Origin IP를 사용할 수 있는 것으로 나타났습니다.
우리는 galera 클러스터와 같은 TCP 프로토콜을 사용하기를 희망합니다.
mariadb 구성 파일에 "proxy_protocol_networks = haproxy_server/32"를 추가합니다.
우리는 ubuntu 16.04와 haproxy 1.6을 사용합니다.
haproxy 구성 파일
backend galera
bind 0.0.0.0:3306
balance leastconn
mode tcp
option tcpka
option forwardfor
option log-health-checks
retries 3
timeout queue 1m
timeout connect 15s
timeout client 50m
timeout server 50m
timeout check 10s
option mysql-check user haproxy
server node1 IP_Cluster_1:3306 check send-proxy
우리가 이것을 어떻게 할 수 있는지 아시나요?
감사해요:)
답변1
MariaDB는 10.3부터 프록시 프로토콜을 지원하므로 send-proxy
제대로 작동합니다.
proxy-protocol-networks
하지만 먼저 클라이언트가 아닌 프록시 서브넷을 구성해야 합니다 .
답변2
문제는 haproxy 구성 파일에 있습니다. 이것은 haproxy에 대한 올바른 구성 파일입니다.
frontend mysqld_listen
bind *:3306
mode tcp
log global
option dontlognull
option tcplog
use_backend galera
backend galera
balance leastconn
mode tcp
option tcpka
option tcplog
option log-health-checks
retries 3
option mysql-check user haproxy
server node1 IP_1:3306 check weight 1 send-proxy-v2
감사합니다 :)