0%

TiDB + HAProxy 配置透传 IP

环境介绍

  • TiDB 版本:v4.0.0
  • HAProxy 版本:1.5.18
  • IP 信息:
    • tidb-server IP: 172.16.5.189:14000
    • HAProxy IP: 172.16.5.171:12345
    • mysql client IP:172.16.5.169

配置步骤

配置 HAProxy 透传 IP ,主要是需要在 haproxy 配置文件中配置 send-proxy 选项,以及设置 tidb 配置 proxy-protocol.networks 为 HAProxy 所在机器IP

  • 查看集群信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[tidb@node5169 gangshen]$ tiup cluster display sg-latest
Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.0.7/tiup-cluster display sg-latest
TiDB Cluster: sg-latest
TiDB Version: v4.0.0
ID Role Host Ports OS/Arch Status Data Dir Deploy Dir
-- ---- ---- ----- ------- ------ -------- ----------
172.16.5.189:13000 grafana 172.16.5.189 13000 linux/x86_64 Up - /home/tidb/gangshen/install/deploy/grafana-13000
172.16.4.235:12379 pd 172.16.4.235 12379/12380 linux/x86_64 Up|L /home/tidb/gangshen/install/data/pd-12379 /home/tidb/gangshen/install/deploy/pd-12379
172.16.4.237:12379 pd 172.16.4.237 12379/12380 linux/x86_64 Up|UI /home/tidb/gangshen/install/data/pd-12379 /home/tidb/gangshen/install/deploy/pd-12379
172.16.5.189:12379 pd 172.16.5.189 12379/12380 linux/x86_64 Up /home/tidb/gangshen/install/data/pd-12379 /home/tidb/gangshen/install/deploy/pd-12379
172.16.5.189:19090 prometheus 172.16.5.189 19090 linux/x86_64 Up /home/tidb/gangshen/install/data/prometheus-19090 /home/tidb/gangshen/install/deploy/prometheus-19090
172.16.5.189:14000 tidb 172.16.5.189 14000/20080 linux/x86_64 Up - /home/tidb/gangshen/install/deploy/tidb-14000
172.16.5.171:30160 tikv 172.16.5.171 30160/30180 linux/x86_64 Up /home/tidb/gangshen/install/data/tikv-30160 /home/tidb/gangshen/install/deploy/tikv-30160
172.16.5.172:30160 tikv 172.16.5.172 30160/30180 linux/x86_64 Up /home/tidb/gangshen/install/data/tikv-30160 /home/tidb/gangshen/install/deploy/tikv-30160
  • 修改 tidb 配置 proxy-protocol.networks 为 HAProxy 所在机器IP并 reload 重启生效
1
2
tiup cluster edit-config sg-latest
tiup cluster reload sg-latest -R tidb

  • 修改 haproxy 配置,在 backend server 配置中添加 send-proxy 选项

具体 haproxy 安装以及配置可以参考 TiDB 官网 HAProxy 在 TiDB 中的最佳实践

  • 修改 haproxy 配置之后,重启 haproxy 生效配置

验证

在 172.16.5.169 机器上用 mysql client 连接 haproxy 并通过 show processlist 查看连接来源 IP

常见问题

连接报 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

问题现象:

问题原因:
haproxy 配置中没有配置 send-proxy 选项,修改 haproxy 配置之后正常。