all.我正在学习Docker。但仍然找不到有关 Docker 入口网络如何连接多个独立主机的任何文档。
我在不同的数据中心有 2 个 VM,并希望在其上创建群群集。 默认安装的入口网络是否有可能使 vm1 上的容器对某个覆盖网络内的 vm2 上的容器可见?或者 vm1 和 vm2 应该位于同一个本地网络中?
通常,不建议在 Swarm 中跨数据中心。可以跨可用性区域(同一地理区域中延迟为 ~10 毫秒或更短的数据中心(,但区域之间应该是它们自己的群。这是虚拟网络间流量(覆盖驱动程序(和 Swarm 管理器之间的 Raft 共识流量的 100% 延迟问题。延迟没有硬性限制,但你可能不希望单个 Swarm 中试图阻止应用中的流量在数据中心之间来回跳跃的复杂性......除非数据中心的延迟非常低。
有关此站点的更多数据,请查看 Docker Success 站点(搜索 swarm 覆盖和过滤器以供参考(,因为 Docker EE 对 Swarm 的要求通常与 Docker CE 相同。
Swarm 中节点之间的另一个要求是它们在彼此的公共 IP 之间打开端口。理想情况下,节点之间没有 NAT。
如果两个主机都是同一个 docker 群集群的一部分,那么从 docker 的角度来看,它们位于不同的数据中心并不重要。服务之间的路由将正常工作。例如,host1 上的 service1 将能够访问另一个数据中心中的 service2。但是,您可能需要考虑由于主机的物理距离而可能发生的任何较大延迟。
入口网络也是如此。它不在乎有2个数据中心。任何群群集节点都将参与其中,并将传入的请求路由到正确的服务/主机。