ElasticSearch某个节点与集群失联这个过程会发生什么?
如果是主节点与集群失联
1.剩下的节点会进行主节点选举,此过程可能会发生脑裂。
2.并将主节点上的主分片对应的在其他节点上的副本分片提升为主分片。
3.在副本分片被提拔为主分片后,master节点开始执行恢复操作来重建缺失的副本:集群中的节点相互拷贝分片数据。
4.为了达到集群中分片分布的平衡状态,还会发生分片的移动。
但当失联的节点恢复与集群的联系后,这个失联节点将被告知它携带的数据已经没有用,数据已经在其他节点上重新分配了,此时这个失联的节点会把本地的数据删除,为了让集群中的分片分布平衡,又会进行一些分片的移动到此节点上来。
如果这个节点只是短暂的断开,那这些步骤可能会是一些无用功,可已通过设置推迟分片的分配,在集群重新分配之前去检测失联的节点是否已重新加入集群。
但延迟分配并不会阻止副本分片提升为主分片。因为集群需要保证所有的主分片正常,使集群维持在yellow可用状态。缺失副本的重建是唯一延迟的过程。
如果失联节点在此参数设置的时间之后连接上了集群,此时没有完成分片的移动,ElasticSearch会检查当前节点的数据和它对应的主分片的数据是否保持一致,说明在这段时间并没有文档的修改,那么他会取消正在进行的平衡移动,并还原已经移动的数据。
什么是脑裂?
假设现有两个节点组成的集群。
节点一在启动时被选为主节点并保存了主分片,节点二保存主分片的副本分片。
现在由于网络故障导致一个集群被划分成了两片,节点二现在发现集群中没有主节点就会自动将自身提升为主节点。由于主节点被认为是集群的最高统治者,它决定了什么时候创建新的索引,分片的移动等等。那么现在就会出现一个集群中出现两个主节点的情况,数据的完整性将得不到保证。
如何避免脑裂的问题的出现:
elasticsearch的config文件夹中的application.yml中有一个这样的配置
discovery.zen.minimum_master_nodes 这个配置告诉elasticsearch当没有足够的master候选节点时,就不要进行master节点选举,等master候选节点足够了才进行选举。此设置应该始终被配置为master候选节点的法定个数。
比如之前的例子 将此参数设置为discovery.zen.minimum_master_nodes:2,会通过(候选节点数/2+1)=法定数,这个法定数就是在节点间发生通讯故障后,需要有这个数量的候选节点才会进行选举。例如之间的例子,两个节点通讯失败,通过算法(2/2+1)=2,但是现在只有节点二这一个节点,就不会通过选举产生新的master节点,这样杜绝了脑裂的发生,但是同时也让集群的高可用失效。所以一般在生产环境中最少设置3个节点作为一个集群,这样可以设置discovery.zen.minimum_master_nodes:2,(3/2+1)=2,即使主节点出现故障,其他候选节点也满足master选举的条件。
例如:
如果有10个节点(能保存数据,同时能成为master),法定数就是(10/2+1)=6。
如果有3个候选master节点,和100个data节点,法定数就是(3/2+1)=2。
大神博客:
https://blog.csdn.net/yangshangwei/article/details/103997630
官方文档:
https://www.elastic.co/guide/cn/elasticsearch/guide/current/important-configuration-changes.html
ElasticSearch某个节点与集群失联这个过程会发生什么?相关推荐
- java集群_Kafka多节点分布式集群搭建实现过程详解_java
上一篇分享了单节点伪分布式集群搭建方法,本篇来分享一下多节点分布式集群搭建方法.多节点分布式集群结构如下图所示: 为了方便查阅,本篇将和上一篇一样从零开始一步一步进行集群搭建. 一.安装Jdk 具体安 ...
- Vertica集群扩容实验过程记录
需求: 将3个节点的Vertica集群扩容,额外增加3个节点,即扩展到6个节点的Vertica集群. 实验环境: RHEL 6.5 + Vertica 7.2.2-2 步骤: 1.三节点Vertica ...
- Docker 搭建elasticsearch 7.6.x集群
Docker 搭建elasticsearch 7.6.x集群 文章目录 拉取镜像 设置Elasticsearch挂载目录 编写elasticsearch.yml配置文件 node-1 node-2 n ...
- ElasticSearch学习(三)——Windows集群部署
文章名称 地址 ElasticSearch学习(一)--概述 前往 ElasticSearch学习(二)--索引.文档简单操作 前往 ElasticSearch学习(三)--Windows 集群部署 ...
- 独家 | 带你认识HDFS和如何创建3个节点HDFS集群(附代码案例)
作者:尼廷·兰詹(Nitin Ranjan) 翻译:陈之炎 校对:王威力 本文约1500字,建议阅读5分钟. 在本文中,大数据专家将为您介绍如何使用HDFS以及如何利用HDFS创建HDFS集群节点. ...
- 故障转移集群无法连接到节点_Redis集群以及自动故障转移测试
在Redis中,与Sentinel(哨兵)实现的高可用相比,集群(cluster)更多的是强调数据的分片或者是节点的伸缩性,如果在集群的主节点上加入对应的从节点,集群还可以自动故障转移,因此相比Sen ...
- 误删50节点K8s集群为何3小时才能复原?Spotify揭自家事故幕后经验
误删50节点K8s集群为何3小时才能复原?Spotify揭自家事故幕后经验 线上音乐串流服务Spotify一位基础架构工程师David Xia,在今年欧洲KubeCon大会上分享了自家Kubernet ...
- mysql集群多管理节点_项目进阶 之 集群环境搭建(三)多管理节点MySQL集群
多管理节点MySQL的配置很easy,仅须要改动之前的博文中提高的三种节点的三个地方. 1)改动管理节点配置 打开管理节点C:\mysql\bin下的config.ini文件,将当中ndb_mgmd的 ...
- 服务器安装三节点RabbitMQ集群(4)
<===服务器安装三节点Rabbit MQ集群(3) 上一篇,在搭建好集群之后,直接reboot了节点1,然后就起不来了,应该是操作方法不对 这一篇再整理一下 1.加入集群 首先,三个节点都各自 ...
最新文章
- 西门子断开延时定时器_在PLC编程中定时器的一些针对现场不同情况的一些妙用...
- 正则表达式一些关键字使用
- java红包算法·返回ListDouble
- fir.im同款企业级APP分发平台系统源码
- 【数据结构笔记10】二叉树的先序、中序、后序遍历,中序遍历的堆栈/非递归遍历算法,层序遍历,确定一个二叉树,树的同构
- python模块分析之typing(三)
- 【交换机在江湖】QoS专题-第2期-QoS实现工具之MQC
- 电力系统matlab实验报告,电力系统分析潮流实验报告
- node.js读写文件操作
- sql插入数据时自动插入时间
- 外文参考文献去哪找和下载?
- 机器人周志_机器人教学的意义
- 浙江省二级计算机vfp,浙江省高校计算机等级考试大纲(二级——VisualFoxPro语言程序设计大纲)...
- C语言PAT刷题 - 1020 月饼
- 《安富莱嵌入式周报》第209期:2021.04.19--2021.04.25
- 浅谈如何进行网站结构优化
- ps无法启动因为计算机中丢失api ms,解决win8下ps提示“丢失api-ms-win-crt-runtime-l1-1-0.dll”的方法...
- odoo之审批 流程管理 模块
- T-SNE( t-distributed stochastic neighbor embedding t-分布随机邻域嵌入)
- html5调取web端摄像头,JavaScript-web前端如何调用本地摄像头进行拍照?
热门文章
- 乐视视频”剧“好看 2016海量剧集精彩来袭
- 学霸寝室4人保研清北浙交,三人直博,一人硕博连读!
- 一文搞懂matplotlib中的颜色设置
- 知乎已读服务的前世今生与未来
- unity ugui android 小键盘,Unity inputfield 实现显示 隐藏密码功能(在安卓中切换不打开下虚拟键盘)...
- 广告程序万能搜索(无能搜索)WNSO.exe
- html+css知识点全面总结(三)
- 对国内GIS行业的思考
- 网际协议IP---ARP协议
- 【华人学者风采】聂礼强 山东大学