环境介绍
- 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
- 查看集群信息
[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 重启生效
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 配置之后正常。