4

我有一个 23 节点集群,在 AWS 上跨 4 个可用区运行 CoreOS Stable 681.2.0。所有节点都在运行 etcd2 和 flannel。在 23 个节点中,8 个是专用的 etcd2 节点,其余的被专门指定为 etcd2 代理。

计划到集群的是 3 个 nginx plus 容器、一个私有 Docker 注册表、SkyDNS 和 4 个我们的应用程序容器。应用程序容器向 etcd2 注册自己,而 nginx 容器接收任何更改,呈现必要的文件,最后重新加载。

这一切都完美无缺,直到单个 etcd2 节点因任何原因不可用。

如果投票的 etcd2 成员集群失去了与其他一个投票的 etcd2 成员的连接,那么调度到队列的所有服务都会变得不稳定。计划的服务在没有我干预的情况下开始停止和启动。

作为测试,我开始停止托管投票 etcd2 节点的 EC2 实例,直到失去仲裁。第一个etcd2节点停止后,就开始出现上述症状。在第二个节点之后,服务变得不稳定,没有明显的变化。然后,在第三个停止后,法定人数丢失,所有单位都未安排。然后我再次启动了所有三个 etcd2 节点,并且在 60 秒内集群恢复了稳定状态。

随后的测试产生相同的结果。

我是否遇到了 etcd2、fleet 或 CoreOS 中的已知错误?

即使 etcd 因任何原因不可用,我是否可以修改设置以将单元安排到节点上?

4

1 回答 1

2

我也经历过同样的事情。就我而言,当我运行 1 个特定单元时,它会导致一切都炸毁。预定的和完美运行的单元突然丢失,没有任何通知,甚至机器从集群中退出。

我仍然不确定确切的问题是什么,但我认为这可能与 etcd vs etcd2 有关。我在单元文件中有 etcd.service 的依赖项,这(我认为,不确定)导致 CoreOS 尝试启动 etcd.service,而 etcd2.service 已经在运行。在我的情况下,这可能会导致冲突,并弄乱了设备和机器的 etcd 注册表。

类似的事情可能会发生在你身上,所以我建议你检查每台主机是否正在运行 etcd 或 etcd2,并检查你的单元文件以查看它们依赖于哪个主机。

于 2015-08-11T13:32:29.030 回答