Elasticsearch最小主节点

Err*_*ald 3 elasticsearch

我有一个3节点集群minimum_master_nodes设置为2.如果我关闭除主服务器之外的所有节点,使一个节点保持联机状态,则群集将不再运行.

这是设计的吗?似乎作为主节点的节点应该保持运行,而是我得到这样的错误:

{"error":"MasterNotDiscoveredException[waited for [30s]]","status":503}
Run Code Online (Sandbox Code Playgroud)

所有其他设置都是库存,我正在使用aws云插件.

Oll*_*ank 6

是的,这是故意的.

裂脑

想象一下,其他2个节点仍在运行但无法与第三个节点通信的情况 - 您最终会得到两个群集,也称为"裂脑".

由于两个集群可能彼此独立地更新和删除数据,因此恢复将非常困难 - 您不会拥有单一的数据来源.

通过设置minimum_master_nodes(n/2)+1 (n是节点数),您可以防止裂脑.

单节点

如果您知道前两个节点肯定已经死亡而没有返回 - 您可以minimum_master_nodes在剩余节点上将其设置为1(并在重新启动之前在其他节点上也设置为1).

还有一个选项没有主块可以让您控制在没有有效群集时会发生什么 - 例如,您可以将剩余节点设置为只读,直到重新建立群集为止.