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 

ありがとう:)

関連情報