在设计集群时,您有两个选择:
- 将
etcd
和controlplane
角色分配给相同的节点。这些节点必须满足这两个角色的硬件需求。
无论在哪种情况下,都不应该把worker
角色,添加到具有 etcd
或 controlplane
角色的节点中。
controlplane
etcd
和controlplane
worker
集群应该具有:
- 至少有三个角色为
etcd
的节点,这样可以在丢失一个节点时存活下来。增加这个数量以获得更高的节点容错率,并将它们分散到多个可用区,以提供更好的容错能力。 - 分配至少两个
worker
节点,以在节点出现故障时,可以重新调度您的工作负载。
有关每个角色的用途的更多信息,请参阅。
在维护集群可用性时,可以一次性丢失的节点数量是由etcd
角色的节点数量决定。etcd 认为写入请求被 Leader 节点处理并分发给了“多数节点”后,就是一个成功的写入。对于一个有 n 个成员的 etcd 集群,“多数节点”是(n/2)+1。因此,我们建议在一个区域内的 3 个不同的可用区中各创建一个etcd
节点,这样在失去一个可用区时,etcd 仍生存下来。如果您只使用两个区域,那么在“多数节点”所在的可用区不可用时,您将会丢失 etcd 集群。
参考:
您可能已经注意到,我们的Rancehr Server 高可用安装指南并不符合我们对生产就绪集群的定义。因为没有专用的节点作为worker
节点。但是,对于 Rancehr Server 的部署,这三个节点的集群是有效的,因为:
- 它允许一个
etcd
节点失败。 - 它通过拥有多个
controlplane
节点来维护 master 组件的多个实例。 - 除了 Rancher 本身之外,不应该在此集群上创建其他工作负载。