【发布时间】:2019-01-13 13:00:07
【问题描述】:
我在 Cent OS 7 中有两台服务器 Mysql 数据库。服务器 A(192.168.0.1) 是实时服务器,服务器 B(192.168.0.2) 是测试服务器。我想将服务器 A 的流量镜像到服务器 B。我使用了以下命令:
Server A) iptables -A PREROUTING -t mangle -p tcp --dport 3306 -j TEE --gateway 192.168.0.2
Server A) iptables -A POSTROUTING -t mangle -p tcp --dport 3306 -j TEE --gateway 192.168.0.2
Server B) iptables -t nat -A PREROUTING -p tcp -d 192.168.0.1 --dport 3306 -j DNAT --to 192.168.0.2
我的问题存在于服务器 B。在服务器 B 中,当我在端口 3306 上看到 tcpdump 时,我在服务器 A 上看到相同的数据包。换句话说,两台服务器上 tcpdump 的结果相同。
我在网上搜索了几天,并尝试了几种解决方案。解决方案之一是define lo 接口上服务器 B 中服务器 A 的地址 IP。我做到了,但没有工作。服务器 B 中的 Mysql 没有命中数据包,我看不到任何已建立的连接。
我看到this 页面并使用了它,但此解决方案在服务器 A 上有开销,并且连接数是 3 倍。
我的问题有解决方案吗?
【问题讨论】:
-
您不能只是将流向一台服务器的流量复制/镜像到另一台服务器并希望它能正常工作。理论上,这只有在 MySQL 服务器处于 exact 相同状态时才有效,因此服务器 B 上接收到的 TCP 包对服务器 B 及其状态有意义。如果您想运行压力测试,请不要使用实时服务器上的实时流量,而是使用您可以使用的任何压力测试应用程序/工具。