是否可以仅基于域名将 MySQL (tcp) 流量重定向到多个服务器?
我们的 DNS 设置为将多个子域别名指向一台代理机器。(运行 haproxy 和 iptables)。我们希望通过此代理服务器重定向所有数据库流量并将其路由到适当的数据库服务器,而不会偏离标准 MySQL 端口。
dev.domain1.com:3306 --> dbDevServer.domain1.com:3306
test.domain1.com:3306 --> dbTestServer.domain1.com:3306
prod.domain1.com:3306 --> dbProdServer.domain1.com:3306
谢谢!
答案1
不,这是不可能的,因为 MySQL 协议确实允许客户端向服务器提供预期的主机名。无法根据主机名路由任意 TCP 流量,因为客户端连接到已解析给定主机名的 IP 地址。
如果协议(例如 HTTP 或 FTP)要求客户端在请求中包含主机名(例如主持人标头(对于 HTTP/1.1 是必需的)协议感知应用程序可以根据主机名区分资源。
您可以为 Haproxy 提供 3 个虚拟 IP 地址,并在 HAProxy 中创建真实 IP 和测试 IP 映射。
答案2
如果你想对 mysql 集群进行负载平衡,请使用加莱拉