我们有一个 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
多谢 :)