Elasticsearch是如何实现master选举的?什么是脑裂及如何避免脑裂

  1. Elasticsearch是如何实现master选举的

master选举默认是由zendiscovery模块负责。
系统刚刚启动的时候,选取id最小的备选master为master节点。
系统运行起来之后,master和非master节点间是存在一个类似心跳检测的ping机制的,当master ping不到其他节点,或者其他节点ping不到master的时候,他们之间就会互相判断,是否大多数都连不到主节点上了,如果大多数都连不上,那么就开始重新进行master选举。
    master选举的底层实现是对于所有的master备选节点的clustersate进行比较,选择最新的clusterstate节点作为主节点,如果有两个节点的clusterstate值相同,那么选择id较小也就是较早的node作为主节点。我猜测这样选举的原因是用最新clusterstate可以保证集群处在最近的版本中,避免陈旧数据或操作的出现导致数据冲突,而用最早id其实也就是应用最先生成的节点的原因,应该是为了保证集群的稳定,最小的id应该最早执行完所有的数据一致性及各种操作了,所以可以保证数据的相对稳定。这样选举出来的一个主节点如果被大多数的备选主节点同意选为主节点并且该节点也选择自己作为主节点,那么这个节点就可当选,否则进行下一轮选举,一直到选举成功。
     这里有两个重要的配置,elasticsearch.yml文件中的
    discovery.zen.ping.unicast.hosts[]:这是一个master备选节点的主机表,所有想要加入集群的节点都向他们发送请求来加入集群。
    discovery.zen.mininum_master_nodes的数量最好设定为备选主节点数量/2+1.因为这个配置控制了选举的最少节点数,即最少这么多个节点投票通

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值