千家信息网

Elasticsearch集群的脑裂问题该怎么解决

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家介绍Elasticsearch集群的脑裂问题该怎么解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。#Elasticsearch集群的脑裂问题 正常情况下,集群中的
千家信息网最后更新 2026年11月01日Elasticsearch集群的脑裂问题该怎么解决

这篇文章给大家介绍Elasticsearch集群的脑裂问题该怎么解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

#Elasticsearch集群的脑裂问题 正常情况下,集群中的所有的节点,应该对集群中master的选择是一致的,这样获得的状态信息也应该是一致的,不一致的状态信息,说明不同的节点对master节点的选择出现了异常--也就是所谓的脑裂问题。这样的脑裂状态直接让节点失去了集群的正确状态,导致集群不能正常工作。

可能导致的原因:

  1. 网络:由于是内网通信,网络通信问题造成某些节点认为master死掉,而另选master的可能性较小;进而检查Ganglia集群监控,也没有发现异常的内网流量,故此原因可以排除。

  2. 节点负载:由于master节点与data节点都是混合在一起的,所以当工作节点的负载较大(确实也较大)时,导致对应的ES实例停止响应,而这台服务器如果正充当着master节点的身份,那么一部分节点就会认为这个master节点失效了,故重新选举新的节点,这时就出现了脑裂;同时由于data节点上ES进程占用的内存较大,较大规模的内存回收操作也能造成ES进程失去响应。所以,这个原因的可能性应该是最大的。

应对问题的办法:

  1. 对应于上面的分析,推测出原因应该是由于节点负载导致了master进程停止响应,继而导致了部分节点对于master的选择出现了分歧。为此,一个直观的解决方案便是将master节点与data节点分离。为此,我们添加了三台服务器进入ES集群,不过它们的角色只是master节点,不担任存储和搜索的角色,故它们是相对轻量级的进程。可以通过以下配置来限制其角色:

node.master: true  node.data: false

当然,其它的节点就不能再担任master了,把上面的配置反过来即可。这样就做到了将master节点与data节点分离。当然,为了使新加入的节点快速确定master位置,可以将data节点的默认的master发现方式有multicast修改为unicast:

discovery.zen.ping.multicast.enabled: false  discovery.zen.ping.unicast.hosts: ["master1", "master2", "master3"]
  1. discovery.zen.ping_timeout(默认值是3秒):默认情况下,一个节点会认为,如果master节点在3秒之内没有应答,那么这个节点就是死掉了,而增加这个值,会增加节点等待响应的时间,从一定程度上会减少误判。 discovery.zen.minimum_master_nodes(默认是1):这个参数控制的是,一个节点需要看到的具有master节点资格的最小数量,然后才能在集群中做操作。官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量(我们的情况是3,因此这个参数设置为2,但对于只有2个节点的情况,设置为2就有些问题了,一个节点DOWN掉后,你肯定连不上2台服务器了,这点需要注意)。

discovery.zen.ping.multicast.enabled: falsediscovery.zen.ping_timeout: 120sdiscovery.zen.minimum_master_nodes: 2 client.transport.ping_timeout: 60sdiscovery.zen.ping.unicast.hosts: ["10.0.31.2", "10.0.33.2"]

真的高枕无忧了? 其实问题依然存在,ES的issue空间也在讨论一个特例情况《#2488》:即使 minimum_master_nodes 设置了一个正确的值,脑裂也有可能发生。

如何识别这个问题? 在您的集群里面尽快识别这个问题非常重要。一个比较容易的方法是定时获取每一个节点/_nodes响应,它返回了集群中所有节点的状态报告,如果两个节点返回的集群状态不一样,就是一个脑裂情况发生的警示信号。

新增解决方案 对于一个具有全功能的ES节点,必须要有一个活动的Master节点。ES1.4.0.Beta1后,新增了一项没有Master时阻塞集群操作设置:discovery.zen.no_master_block。

当集群中没有活动的Master节点后,该设置指定了哪些操作(read、write)需要被拒绝(即阻塞执行)。有两个设置值:all和write,默认为wirte。

这项配置不会对基本api(例如集群状态、节点信息和状态API)产生影响,这些节点在任何节点上执行都不会被阻塞。

ps: es的优点:因为它的开箱即用、天生集群、自动容错、扩展性强等优点,还是选择它来做全文检索

关于Elasticsearch集群的脑裂问题该怎么解决就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

节点 集群 问题 状态 情况 较大 原因 进程 选择 一致 信息 服务器 角色 服务 配置 阻塞 为此 两个 优点 内存 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 互联网科技股 亿人帮互联网科技有限公司 广东猪兼强互联网科技有限公司 没上市的科技互联网公司 科技服务与互联网 远拓互联网科技 互联网 新科技 佰商互联网科技有限公司 顺网科技2021年互联网排名 中国的互联网科技企业的崛起 顶级互联网科技成果有哪些 河南猎农互联网科技有限公司 岳阳华臻互联网科技有限公司 易企秀互联网科技是做什么的 广州智享互联网科技 银川新华互联网科技学校是国营吗 中国互联网公司的科技投入 互联网对科技影响 武汉亿视互联网科技有限公司 万易互联网科技 世界互联网领先科技成果 银川新华互联网科技学校地址 湖南诚度互联网科技有限公司 互联网相关科技技术 半导体是互联网高科技吗 本届互联网大会上的黑科技 新氧科技和美国互联网有关系吗 中国新注册互联网科技 科技互联网经济论坛
0