这个问题和标题一样简单明了,但几乎每个被问到这个问题的人都试图说服我,我疯了或者傻了。我会在这里解释为什么我需要这个,我也欢迎其他解决方案来完成这项任务,但如果你能给我一个答案(特别是如果不是“不”的话:)),我仍然会非常感激。
因此,我在同一个网络上有一组机器(假设为 10.0.0.1/24),它们的 IP 是 10.0.0.1、10.0.0.2、...、10.0.0.10
他们的环回接口(即 lo:dsr)上也配置了一个公共互联网 IP(假设为 8.8.8.8)[等等,先不要叫我疯子]
在这个池的顶部,我有一个直接服务器返回负载平衡器。如果你不知道它是如何工作的,请查看这个:http://www.weirdnet.nl/images/natvsdsr.png
到目前为止一切顺利,运行完美。
现在问题来了。这些机器不运行任何服务。它们在端口 8080、8081 和 8082 上运行 3 种不同的服务,并且它们之间通过网络进行通信。
因此,当机器 A 上的服务 8080 尝试联系服务 8081(通过负载均衡器 IP,8.8.8.8)时,Linux 会“足够智能”地注意到机器 A 拥有 IP 8.8.8.8,并将此数据包发送到环回接口。
通常这不是问题,但由于它是一个高可用性系统,如果由于某种原因(可能是交付)服务 B 在机器 A 上停止,那就会出现问题。