1.概述
参考:【Elasticsearch】zen discovery集群发现机制
2.什么是脑裂
同时如果由于网络或其他原因导致集群中选举出多个 Master 节点,使得数据更新时出现不一致,这种现象称之为脑裂,即集群中不同的节点对于 Master 的选择出现了分歧,出现了多个 Master 竞争。
3.脑裂原因
-
网络问题
:集群间的网络延迟导致一些节点访问不到 Master,认为 Master 挂掉了从而选举出新的 Master
,并对 Master 上的分片和副本标红,分配新的主分片。 -
节点负载
:主节点的角色既为 Master 又为 Data,访问量较大时可能会导致 ES 停止响应(假死状态
)造成大面积延迟,此时其他节点得不到主节点的响应认为主节点挂掉了,会重新选取主节点。 -
内存回收
:主节点的角色既为 Master 又为 Data,当 Data 节点上的 ES 进程占用的内存较大,引发 JVM 的大规模内存回收
,造成 ES 进程失去响应。