![Zookeeper - 故障集群成员更换](https://linux22.com/image/677859/Zookeeper%20-%20%E6%95%85%E9%9A%9C%E9%9B%86%E7%BE%A4%E6%88%90%E5%91%98%E6%9B%B4%E6%8D%A2.png)
我知道只要有法定人数,我的 zookeeper 集群就会继续工作。但是丢失的服务器对集群性能有显著影响吗?
假设 3 台服务器中有 1 台崩溃(硬盘被毁)。我猜我可以加入一台新的(干净的)服务器而无需停机,只要它具有与旧服务器相同的服务器 ID,并且其他两台服务器可以连接到它(它的配置中具有与旧服务器相同的 IP/主机名)?
第三台服务器“重新同步”会产生什么影响(即,它会影响达成新内容共识的速度吗)?该操作通常需要多长时间(相对于 zookeeper 中的数据量而言)?
我可以(或应该)从现有服务器之一复制数据和数据日志吗?快照可能可以安全地按原样复制,但事务日志可能需要“时间点复制”(我有 btrfs CoW,所以这没问题)?
或者更具体地说,我还想知道所有节点上的数据是否等效(除了最新写入)且可互换。或者服务器 ID 特定的内容以某种方式存储在里面?
答案1
使用相同的服务器 ID 重新加入但没有数据会破坏法定人数。您需要先从所有剩余的服务器中删除旧的服务器 ID,然后使用新的 ID 添加新的服务器。