我有一个3节点群集,minimum_master_nodes
设置为2
。如果我关闭除主服务器之外的所有节点,使一个节点保持联机状态,则群集将不再运行。
这是设计的吗?似乎作为主节点的节点应该保持运行,而是我得到这样的错误:
{"error":"MasterNotDiscoveredException[waited for [30s]]","status":503}
所有其他设置都是库存,我正在使用aws云插件。
答案 0 :(得分:5)
是的,这是故意的。
想象一下,其他2个节点仍在运行但无法与第三个节点进行通信的情况 - 您最终会得到两个群集,也称为“分裂大脑”#34;"
由于两个群集可能彼此独立地更新和删除数据,因此恢复将非常困难 - 您不会为数据提供单一的事实来源。
通过将minimum_master_nodes
设置为(n/2)+1
(n是节点数),您可以防止裂脑。
如果您知道前两个节点肯定已经死亡而没有返回 - 您可以在剩余节点上将minimum_master_nodes
设置为1(并在重新启动之前在其他节点上设置为1)。
还有一个选项no master block可让您控制当您没有有效群集时会发生什么 - 例如您可以将剩余节点设置为只读,直到重新建立群集为止。