Mariadb

galera cluster db中的haproxy傳遞源IP

  • June 14, 2018

我們有一個 galera 集群,mariadb 10.3 版和 haproxy。

我們希望使用者像這樣連接客戶端->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 

任何想法我們如何做到這一點。

謝謝 :)

問題出在 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 

非常感謝 :)

MariaDB 從 10.3 開始支持代理協議,所以send-proxy應該可以工作。

但首先,您需要配置proxy-protocol-networks代理(而不是客戶端)的子網。

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

引用自:https://unix.stackexchange.com/questions/449487