sme*_*eeb 3 networking consensus docker gossip docker-networking
刚刚阅读了Docker覆盖网络,非常棒的东西。我似乎找不到一件事的答案。
根据文档:
我想知道为什么会这样。显然,覆盖网络需要在同行之间达成共识,但是我不确定那些“同行”为什么或者是谁。
我只是在猜测,使用Swarm时,有一些内部/内部共识服务器正在运行。
Swarm Mode通过内置KV商店将Raft用于经理共识。在集群模式之前,第三方KV商店可以进行叠加网络。重叠式网络本身不需要共识,它仅依赖于KV商店所说的内容,而与其他节点甚至本地状态无关(我很难找到这一点)。通常,在那里的KV商店对HA达成共识。
KV存储跟踪对在每个主机(IPAM)上运行的容器的IP分配。这使Docker仅分配一次给定地址,并知道当您连接到在另一主机上运行的容器时,它需要与哪个Docker主机进行通信。这需要在任何一台Docker主机外部进行,最好是在HA配置中(例如群模式的共识),以便即使某些Docker节点关闭时它也可以继续工作。
泊坞窗节点之间的覆盖网络仅涉及在该覆盖网络上具有容器的节点。因此,一旦IP被分配和发现,所有通信仅在具有相关容器的节点之间进行。如果您创建了一个网络,然后在一个工作人员上列出了网络,那么在群集模式下就很容易看到这一点,而该网络就不会存在。一旦对该网络上的容器进行了调度,该网络就会出现。从docker上,这减少了多主机网络的开销,同时还增加了体系结构的安全性。结果如下图所示:
只有领导人选举才需要达成共识。一旦选择一个节点作为领导者,并且有足够的节点保持共识,则只有一个节点正在写入KV存储并保持当前状态。其他所有人都是追随者。这个动画比以往任何时候都描述得更好。
最后,您无需设置外部KV商店即可在群体模式服务之外使用叠加网络。您可以实现群集模式,使用该--attachable选项配置覆盖网络,并可以像使用外部KV商店那样在该网络上在群集模式之外运行容器。过去,我曾使用此方法作为过渡状态,以使容器进入群集模式,其中一些容器使用docker-compose运行,而另一些容器已作为群集堆栈部署。
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |