上周五的时候公司的
es
集群脑裂了,7台机器分成了2个集群。
业务自然是悲剧了,记录一下问题。
基础环境
- elasticsearch:2.4.12
现象描述
业务进行商品查询的时候对于同一商品有时候有数据,有时候没有数据,然后开始定位问题,发现是es
的锅。
问题原因
事故的当天晚上,运维升级路由器排除故障,导致网络中断20分钟左右,导致在不同网段的es服务器各自选主,并且每个集群的数据都不全。然后业务对于es的集群访问是使用RoundRobin的方案,所以会轮询到不同的集群,然后就悲剧了。
脑裂
按原理说2N+1的机器才能满足一个集群,所以不可能裂成2个集群。
所以深度扒了一下配置问题,发现了这段话。
# Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
#
# discovery.zen.minimum_master_nodes: 3
#
# For more information, see the documentation at:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery.html>
所以我们7个节点话,最好是设置成4台才能进行选举。
这样就可以避免脑裂问题了。
网友评论