不同数据中心之间的Docker覆盖网络

时间:2018-08-09 14:56:03

标签: docker docker-ingress

全部。我正在学习Docker。但是仍然找不到任何有关Docker Ingress网络如何连接几个分离的主机的文档。

我在不同的数据中心中有2个VM,并希望在它们上创建群集集群。 是否可以使用默认安装的入口网络使vm1上的容器对于某些覆盖网络内的vm2上的容器可见?还是vm1和vm2应该在同一局域网中?

2 个答案:

答案 0 :(得分:0)

如果两个主机都是同一个docker swarm集群的一部分,那么从docker的角度来看,它们都位于不同的数据中心中无关紧要。服务之间的路由将起作用。例如,主机1上的service1将能够访问另一个数据中心中的service2。但是,您可能需要考虑由于主机的物理距离而可能发生的任何大延迟。

入口网络也是如此。不在乎是否有2个数据中心。任何群集集群节点都将参与其中,并将传入请求路由到正确的服务/主机。

答案 1 :(得分:0)

通常,不建议跨Swarm中的数据中心。您可以跨越可用性区域(同一地理区域中的数据中心的延迟约为10ms或更短),但是在区域之间应该是它们自己的Swarms。这是虚拟网络间流量(覆盖驱动程序)和Swarm管理器之间的Raft共识流量之间存在100%的延迟问题。延迟没有硬性限制,但是您可能不希望在单一的群集中尝试阻止应用程序中的流量在数据中心之间来回跳动的复杂性……除非数据中心的延迟非常低。

有关此方面的更多数据,请查看Docker Success site(搜索swarm覆盖和过滤器以供参考),因为Swarm的Docker EE要求通常与Docker CE相同。

Swarm中节点之间的另一个要求是它们具有ports open between each other's public IP's。理想情况下,节点之间没有NAT。