当前位置: 首页 > article >正文

elasticsearch 是如何实现 master 选举的?

Elasticsearch 中的 master 选举机制主要是通过选举算法实现的。Elasticsearch 使用了 Raft 算法作为其选举算法,用于在集群中选举出一个 master 节点,以及确定新的 master 节点。

在 Elasticsearch 中,所有节点在启动时都会自动加入一个名为 “elasticsearch” 的集群,并且默认情况下,这个集群会自动开始选举一个 master 节点。在选举过程中,所有节点都会按照一定的规则来竞争成为 master 节点。

选举过程主要包括以下几个步骤:

  1. 心跳检测:每个节点都会定期向集群发送心跳信号,告诉其他节点它仍然存活。如果某个节点在一段时间内没有发送心跳信号,那么它就会被认为已经死亡,选举会重新开始。
  2. 候选者列表:当有节点想要成为 master 节点时,它会将自己添加到候选者列表中。候选者列表中的节点数量可以根据配置进行调整。
  3. 投票:当一个节点成为候选者后,它会向集群中的其他所有节点发送投票请求。每个节点在收到请求后,会根据一定的规则决定是否投票给这个候选者。投票规则通常会考虑节点的健康状况、存储的数据量、负载情况等因素。
  4. 选举结果:如果某个候选者得到了超过半数的投票,那么它就会成为新的 master 节点。如果两个或更多的候选者得到了相同的票数,那么集群将会再次进行选举。

需要注意的是,为了防止恶意节点滥用选举机制,Elasticsearch 还采用了许多其他的安全措施,例如数据一致性检查、节点认证等。这些措施可以确保选举过程的安全性和可靠性。

总的来说,Elasticsearch 的 master 选举机制是通过 Raft 算法和一系列安全措施实现的,以确保集群的高可用性和稳定性。

面试官:想了解 ES 集群的底层原理,不再只关注业务层面了。前置前提:
只有候选主节点(master:true)的节点才能成为主节点。
最小主节点数(min_master_nodes)的目的是防止脑裂。
核对了一下代码,核心入口为 findMaster,选择主节点成功返回对应 Master,否则返回 null。选举流程大致描述如下:
第一步:确认候选主节点数达标,elasticsearch.yml 设置的值
discovery.zen.minimum_master_nodes;
第二步:比较:先判定是否具备 master 资格,具备候选主节点资格的优先返回;若两节点都为候选主节点,则 id 小的值会主节点。注意这里的 id 为 string 类型。题外话:获取节点 id 的方法。
GET /_cat/nodes?v&h=ip,port,heapPercent,heapMax,id,name ip port heapPercent heapMax id name


http://www.kler.cn/a/160624.html

相关文章:

  • 新的恶意软件活动通过游戏应用程序瞄准 Windows 用户
  • 吾店云介绍 – 中国人的WordPress独立站和商城系统平台
  • 基于Python的膳食健康系统
  • old-cms(原生PHP开发的企业网站管理系统)
  • 全球碳循环数据集(2000-2023)包括总初级生产力、生态系统净碳交换和生态系统呼吸变量
  • 图像处理自动渲染代码
  • UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
  • Android studio 工程的 module 依赖关系图绘制 、 Android Module 依赖关系的可视化实现
  • Nginx的反向代理与负载均衡
  • 人工智能学习8(集成学习之xgboost)
  • 配置和管理VLAN
  • 探究Spring Boot 中实现跨域的几种方式
  • 基因名潘多拉
  • 编程应用实例,养生馆会员管理系统软件统计查询教程
  • 制作飞腾(arm)芯片架构的nexus镜像
  • 朝花夕拾华山平台流水账
  • 智慧景区(园区)数字孪生可视化GIS解决方案
  • Linux自启服务提示:systemd[1]: *.service: main process exited, code=exited, status=1问题
  • 创建Vue2项目,引入chart.js,并生成柱形图
  • gradle 启动报错,CreateProcess error=206, 文件名或扩展名太长
  • html css样式选择器介绍
  • uniapp使用v-html调用接口,富文本图片 视频自适应大小
  • 微信小程序:chooseimage从本地相册选择图片或使用相机拍照
  • DAPP开发【06】nodejs安装与npm路径更换
  • NDK交叉编译工具链使用教程
  • 日常开发日志