ElasticSearch进阶-集群脑裂问题

这篇具有很好参考价值的文章主要介绍了ElasticSearch进阶-集群脑裂问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.集群脑裂是什么?

        所谓脑裂问题,就是同一个集群中的不同节点,对于集群的状态有了不一样的理解,比如集群中存在两个master,正常情况下我们集群中只能有一个master节点。

2.集群脑裂场景举例

如果因为网络的故障,导致一个集群被划分成了两片,每片都有多个node,以及一个master,那么集群中就出现了两个master了。但是因为master是集群中非常重要的一个角色,主宰了集群状态的维护,以及shard的分配,因此如果有两个master,可能会导致数据异常。

如:

ElasticSearch进阶-集群脑裂问题

节点1在启动时被选举为主节点并保存主分片标记为0P,而节点2保存副本分片标记为0R。

现在,如果在两个节点之间的通讯中断了,会发生什么?由于网络问题或只是因为其中一个节点无响应,这是有可能发生的。

ElasticSearch进阶-集群脑裂问题

两个节点都相信对方已经挂了。节点1不需要做什么,因为它本来就被选举为主节点。但是节点2会自动选举它自己为主节点,因为它相信集群的一部分没有主节点了。

在elasticsearch集群,是有主节点来决定将分片平均的分布到节点上的。节点2保存的是复制分片,但它相信主节点不可用了。所以它会自动提升Node2节点为主节点。

ElasticSearch进阶-集群脑裂问题

现在我们的集群在一个不一致的状态了。打在节点1上的索引请求会将索引数据分配在主节点,同时打在节点2的请求会将索引数据放在分片上。在这种情况下,分片的两份数据分开了,如果不做一个全量的重索引很难对它们进行重排序。在更坏的情况下,一个对集群无感知的索引客户端(例如,使用REST接口的),这个问题非常透明难以发现,无论哪个节点被命中索引请求仍然在每次都会成功完成。问题只有在搜索数据时才会被隐约发现:取决于搜索请求命中了哪个节点,结果都会不同。

3.脑裂解决方案

在elasticsearch.yml中配置属性:discovery.zen.minimum_master_nodes,它的值默认是1,这个参数的作用,就是告诉es直到有足够的master候选节点支持时,才可以选举出一个master,否则就不要选举出一个master。

这个参数设置有个算法就是:master候选资格节点数量 / 2 + 1,所有有资格成为master的节点都需要加上这个配置。

假设我们有10个节点,都能维护数据,也都有资格成为master节点,那么quorum就是10 / 2 + 1 = 6;假设我们有5个节点,那么quorum就是5/2 + 1 = 3。

4.分析:为什么master候选节点最少三个(minimum_master_nodes是如何避免脑裂问题产生的)

思考一下,如果你只有两台节点,那么是无法使用官方的这个配置公式的,(这也就是为什么我们之前建议最少要三台机器能成为主节点),两台的话会出现各种各样的问题,为什么呢?

思考一下假设集群中共有2个节点,discovery.zen.minimum_master_nodes分别设置成2和1会怎么样?

如果我们有2个节点,都可以是master候选节点,那么quorum是2 / 2 + 1 = 2。此时就有问题了,因为如果一个node挂掉了,这么这时节点发生变更,那么只剩下一个master候选节点,是无法满足quorum数量的,也就无法选举出新的master,集群就彻底挂掉了。此时就只能将这个参数设置为1,但是这就无法阻止脑裂的发生了。

那么思考一下三台行不行呢?

node1为主节点 node2、3是数据节点,3/2+1 = 2,也是至少两台支持才能成为master。

1)如果主节点和两个数据节点因为网络不稳定失去联系,两个数据节点是可以正常通信的,那么此时那个单独的master节点因为没有指定数量的候选master node在自己当前所在的集群内,因此就会取消当前master的角色,尝试重新选举,但是无法选举成功。然后另外一个网络区域内的node因为无法连接到master,就会发起重新选举,因为有两个master候选节点,满足了quorum,因此可以成功选举出一个master。此时集群中就会还是只有一个master,不会出现脑裂。

2)如果master和另外一个node在一个网络区域内,然后一个node单独在一个网络区域内。那么此时那个单独的node因为连接不上master,会尝试发起选举,但是因为master候选节点数量不到quorum,因此无法选举出master。而另外一个网络区域内,原先的那个master还会继续工作。这也可以保证集群内只有一个master节点。

3)如果三台相互之间都无法通信,同上分析,则也不会出现脑裂问题。

综上所述,一个生产环境的es集群,至少要有3个节点,三台主节点通过在elasticsearch.yml中配置discovery.zen.minimum_master_nodes: 2,就可以避免脑裂问题的产生。文章来源地址https://www.toymoban.com/news/detail-420852.html

到了这里,关于ElasticSearch进阶-集群脑裂问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Zookeeper 脑裂问题

    脑裂(split-brain)就是“大脑分裂”,也就是本来一个“大脑”被拆分了两个或多个“大脑”,如果一个人有多个大脑,并且相互独立的话,那么会导致人体“手舞足蹈”,“不听使唤”。 脑裂通常会出现在集群环境中,比如ElasticSearch、Zookeeper集群,而这些集群环境有一个统一

    2024年02月11日
    浏览(28)
  • keepalived脑裂后,近20min不能访问虚拟IP问题分析

    真实的场景比较复杂,抽象起来可以用下面的图表示, 图示说明 server1 和server2 分别部署keepalived,有一个虚拟IP (VIP). Router和switch 是路由交换设备,这里用的功能都是一样的,并不做区别. 正常情况下,client1 可以访问VIP,server3也可以访问VIP,这里访问采用ping方式,下同。

    2024年02月07日
    浏览(19)
  • Elasticsearch集群许可证过期问题处理

    当你执行索引相关操作有如下报错: 这就提示你许可证过期需要重新申请。 步骤如下: 1. 登录注册 Register | Elastic https://license.elastic.co/registration  注册成功!邮件会收到下载链接。   2. 点击下载与ES对应的版本 查看ES版本:curl http://172.16.18.140:9200 3. 将下载好的许可证文件上

    2024年02月02日
    浏览(41)
  • elasticsearch|大数据|elasticsearch低版本集群的部署安装和安全增强---密码设置问题

    elasticsearch的高低版本划分标准为6.3,该版本之前的为低版本,6.3版本之后的包括6.3为高版本,这么划分主要是在安全性方面也就是x-pack插件的使用部署方面,低版本需要手动安装该安全插件,而高版本无需安装。另一方面,高版本的es漏洞会少一些,而本例中使用的是低版本

    2024年02月03日
    浏览(38)
  • 面试题:Kafka中Controller的作用是什么?选举流程是怎样的?以及如何避免脑裂问题?

    网上冲浪:还不懂分布系统,速看深度剖析Kafka Controller选举过程 在查找关于Kafka单机分区的上限以及分区多了会有怎样的问题的时候,发现了这个比较有趣的问题,就记录了下来。 一般所有的分布式系统,都会涉及到这个问题:脑裂、以及如何避免脑裂问题。 Kafka中Control

    2024年04月24日
    浏览(32)
  • Elasticsearch 集群某一节点修改 IP 后无法启动问题复盘

    集群版本:6.8.X 集群节点:5节点(三个节点为主+数据节点,另外两个独立数据节点)。 问题描述:由于IP冲突,修改了一台服务器的IP,然后5台配置改了一下一次重启,能启动,但是连不上,后台各种报错。 节点换 IP 原因探讨:宿主机服务器的IP地址和别的服务器IP 冲突,

    2024年02月16日
    浏览(27)
  • 谈一谈redis脑裂

    (1)一主多从架构中,主节点与客户端通信正常,主节点与哨兵、从节点连接异常,客户端仍正常写入数据 (2)哨兵判定主节点下线,重新选主 (3)原主节点与哨兵和其他节点通信恢复,成为新主节点的从节点,drop本身所有的数据,从新主节点全量copy数据 (4)原主节点

    2024年02月12日
    浏览(37)
  • ZooKeeper 选举的过半机制防止脑裂

    结论: Zookeeper采用过半选举机制,防止了脑裂。 原因: 如果有5台节点,leader联系不上了,其他4个节点由于超过半数,所以又选出了一个leader,当失联的leader恢复网络时,发现集群中已经有了leader,会把自己降为flower,防止出现两个leader。 和NameNode不同的是,zookeeper是自己

    2024年02月14日
    浏览(32)
  • Redis进阶:主从复制、集群搭建

    介绍:主机数据更新后根据配置和策略, 自动同步到备机的 master/slaver机制 , Master以写为主,Slave以读为主 ; 优点: 1) 读写分离 ,减轻主机的压力,性能扩展; 2) 容灾快速恢复 :某个从机宕机,可自动从其他的从机读取数据; 缺点: 复制延时 ,从机越多,复制延时

    2024年02月08日
    浏览(34)
  • k8s集群部署elasticsearch集群和elasticsearch集群设置用户密码

    目录 一、背景: 二、部署elasticsearch集群: 1、部署elasticsearch集群: 2、验证elasticsearch集群是否正常:  三、部署elasticsearch集群并设置用户密码 1、生产elastic集群所需的证书: 2、重新建构elasticsearch镜像: 3、部署elasticsearch集群: 4、设置elasticsearch集群的密码: 5、测试验证

    2024年04月13日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包