- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
刚刚阅读了 Docker 覆盖网络,非常酷的东西。我似乎无法找到一件事的答案。
根据文档:
我想知道这是为什么。显然,覆盖网络需要同行之间达成共识,但我不确定为什么或那些“同行”是谁。
我只是猜测,对于 Swarm,有一些开箱即用的内部/底层共识服务器。
最佳答案
Swarm 模式使用 Raft 作为管理器与内置 KV 存储的共识。在 swarm 模式之前,覆盖网络可以与第三方 KV 存储一起使用。覆盖网络本身不需要共识,它只依赖于 KV 存储所说的任何内容,而不管其他节点甚至是它自己的本地状态(我很难找到这一点)。那里的 KV 存储通常设置为 HA 共识。
KV 存储跟踪每个主机上运行的容器的 IP 分配 (IPAM)。这允许 docker 只分配一次给定的地址,并且当您连接到运行在另一台主机上的容器时,它知道它需要与哪个 docker 主机通信。这需要在任何一个 docker 主机的外部,并且最好是在 HA 配置中(如 swarm 模式的共识),这样即使某些 docker 节点关闭时它也可以继续工作。
docker 节点之间的覆盖网络仅涉及在该覆盖网络上具有容器的节点。因此,一旦 IP 被分配和发现,所有通信仅发生在具有相关容器的节点之间。如果您创建一个网络然后在工作人员上列出网络,这在 swarm 模式下很容易看到,它不会在那里。一旦该网络上的容器被调度,该网络就会出现。在 docker 中,这减少了多主机网络的开销,同时也增加了架构的安全性。结果如下图所示:
raft 共识本身只需要领导选举。一旦一个节点被选为领导者并且有足够的节点保持共识,只有一个节点正在写入 KV 存储并维护当前状态。其他人都是追随者。 This animation describes it better than I ever could .
最后,您无需设置外部 KV 存储即可在群模式服务之外使用覆盖网络。您可以实现 swarm 模式,使用 --attachable
选项配置覆盖网络,并在该网络上以 swarm 模式之外的方式运行容器,就像使用外部 KV 存储一样。我过去曾将其用作过渡状态,让容器进入 swarm 模式,其中一些使用 docker-compose 运行,而另一些则部署为 swarm 堆栈。
关于networking - 为什么 Docker 覆盖网络需要共识?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44553457/
我是 Hyperledger Fabric 的新手。我正在阅读 Fabric 的文档最新版本,但我不清楚 Fabric 的共识。 Fabric 使用的共识是什么?它是如何工作的?请解释。 最佳答案 我
我看到了一些关于每个人现在在签名和未签名键值方面所做的事情的话题。似乎 unsigned 是最佳的,因为它允许以相同的成本增加两倍的行数。签名 key 有什么好处吗? 有没有标准的共识?答案似乎是签名
解析用于游标的短信 Uri 的共识是什么。必须有一种跨电话兼容的方式来访问短信。 sdk 里没有这样的东西吗? 将此作为 Uri 字符串怎么样:("vnd.android-dir/mms-sms");
我是一名优秀的程序员,十分优秀!