如何配置haproxy,让客户端ip透传?

为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:

  • 系统版本 & kernel 版本 】debian 4.9.110-1 & Linux version 4.9.0-7-amd64

  • TiDB 版本 】v3.0.0-rc.1-132

  • 磁盘型号

  • 集群节点分布

  • tidb *3

  • tikv *3

  • pd *3

  • 数据量 & region 数量 & 副本数

  • 问题描述(我做了什么)

  • 如何配置haproxy,可以让客户端ip透传?(主要是为了新建时指定IP生效) 如:

  • haproxy ip:192.168.1.2

  • 客户端 ip:192.168.1.1

  • CREATE USER ‘newuser2’@‘192.168.1.1’ IDENTIFIED BY ‘newuserpassword’;

  • 客户端通过HAProxy访问tidb,tidb识别到的是haproxy服务器ip(192.168.1.2),并不是客户端ip(192.168.1.1),所以访问无权限

  • 关键词 】haproxy,ip透传

透传ip的话,现在最佳实践是没有涉及这块的。这边可以参考网上成熟的方案,后面最佳实践我们也完善一下。TiDB 完全兼容MySQL 协议,可参照MySQL方案。

配置HAProxy 中 send-proxy 和 在TiDB配置中 --proxy-protocol-networks 配置为代理服IP,透传IP才会生效。