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 

多谢 :)

相关内容