Ede*_*Ede 11 networking docker docker-swarm
我正在使用 Docker 以 swarm 模式(使用 Docker 17.03.1-ce)进行生产设置。将涉及2个数据中心。在两个数据中心,所有机器在私有网络上都有一个公共 IP 和一个私有(数据中心本地)IP,所以会有 2 个私有网络。
专用网络接口上的网络流量是免费的,而公共接口上的流量不受限制(而且速度较慢),因此在可能的情况下,我更希望网络流量通过专用接口。
现在,据我所知(我认为),集群模式下 Docker 节点之间的所有流量都将通过用于与集群主机通信的相同网络接口,在我的情况下,必须是公共接口才能进行多 DC 网络可能的。然而,大多数预期的流量将在同一个 DC 中的节点之间发生,如果源节点和目标节点碰巧在同一个私有网络上,如果 Docker 能够以某种方式通过我的私有网络路由流量,那就太好了。
恐怕这可能无法开箱即用,因为群主不知道这些专用网络以及节点在其上拥有的 IP。
我能想到的一个解决方案是设置一个 VPN 并在其上部署 swarm,但这会增加额外的复杂性,我更喜欢纯 Docker swarm 解决方案。
更新:正如评论中所建议的,解决方案的基础可能是使用 iptables 将传出流量路由到私有 IP 而不是公共 IP。但是,如果我想这样做,我的下一个问题将是如何管理所有这些规则。在 DC 中有 10 个服务器,我需要 10 * 9 = 90 个服务器来通过专用网络路由所有可能的本地流量。我可以想象,也许存在一些工具可以帮助完成这样的任务,或者我可以创建一个,但也许有一种更简单的方法来做到这一点。
(大概应该是评论,但还不能评论)
由于您无法使用主机名和/或 DNS 来引导集群,因此我看不出有什么办法可以强制集群在正确的不按流量计费的网络上交换 raft 数据,但我发现您可以使用接口名称。奇怪的是, swarm 文档中没有说明,但有一个问题显示错误消息需要 IP 或接口。
我想知道您是否可以将集群成员设置为使用专用接口名称进行广告,以便您以您想要的方式获得最多的流量。
现在无法测试自己,但下周会进行测试,因为我可能会在即将进行的项目中遇到类似的问题。
归档时间: |
|
查看次数: |
849 次 |
最近记录: |