haproxy는 galera 클러스터 데이터베이스의 원래 IP를 전달합니다.

haproxy는 galera 클러스터 데이터베이스의 원래 IP를 전달합니다.

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하지만 먼저 클라이언트가 아닌 프록시 서브넷을 구성해야 합니다 .

https://mariadb.com/kb/en/library/proxy-protocol-support/

답변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 

감사합니다 :)

관련 정보