领事支持或 2 个节点的替代方案

Alf*_*nda 0 consensus raft consul

我想将 consul 用于 2 节点集群。缺点是两个节点没有容错能力:

https://www.consul.io/docs/internals/consensus.html

Consul 有没有办法只用两个节点进行一致的领导人选举?Consul Raft 共识算法可以改变吗?

非常感谢。

GMa*_*ckG 5

听起来您仅限于 2 台这种类型的机器,因为它们很贵。考虑购买三到五台更便宜的机器来运行您的编排层。

要回答协议问题,不,无法在 Raft 中运行具有容错功能的两节点集群。需要明确的是,您可以安全地运行一个两节点集群就好了——它将像任何其他集群一样可用并取得进展。只是当一台机器出现故障时,因为您的容错能力为零,您将失去可用性并且不再取得任何进展。但是安全永远不会受到影响 - 您的数据仍然一致地保存在这些机器上。

即使在 Raft 之外,也无法运行双节点集群并保证在单个故障时的进度。这是一个基本的限制。一般来说,如果你想支持 f 个故障(意思是保持安全和可用),你需要 2f + 1 个节点。

有一些非 Raft 方法可以改善这种情况。例如,Flexible Paxos 表明我们可以要求两个节点进行领导选举(就像在 Raft 中一样),但只需要一个节点进行复制。这将允许您的集群在某些Raft 停止的故障情况下继续工作。但最坏的情况还是一样:总是有故障会导致任何双节点集群变得不可用。

也就是说,无论如何我都不知道任何实用的灵活 paxos 实现。

考虑到甚至试图解决这个问题的成本,你最好的选择是获得一组更便宜的机器,或者只运行你的双节点集群并接受失败时的不可用性。