Elasticsearch 集群架构详解:节点、主从与选举机制

舞夢輝影

舞夢輝影

2026-05-12

639人浏览

原创

elasticsearch节点通过配置角色划分职责,主节点仅管理集群状态不处理数据,选举由法定票数机制触发并依赖zen discovery流程防脑裂。

elasticsearch 集群架构详解:节点、主从与选举机制 - php中文网

如果您正在搭建或运维 Elasticsearch 集群,却对节点角色划分、主从关系本质及主节点如何产生感到困惑,则很可能是由于对集群底层架构理解不完整。以下是围绕节点类型、主从职责边界与选举触发逻辑展开的详解:

一、Elasticsearch 节点类型的职能划分

Elasticsearch 中的节点并非天然分为主/从,而是通过配置赋予不同角色;同一物理节点可同时承担多种职责,但生产环境强烈建议角色分离以保障稳定性。角色定义直接决定该节点能否参与选举、是否存储数据、是否处理请求。

1、配置 node.master: true 的节点为候选主节点(Master-eligible Node),具备参选资格;未设置则完全不参与投票过程。

2、配置 node.data: true 的节点为数据节点,负责分片的存储、写入、搜索和聚合操作,承受主要 I/O 与 CPU 压力。

3、配置 node.ingest: true 的节点可执行 pipeline 预处理任务,如字段提取、转换、丰富等,不参与主节点选举也不存储主分片。

4、未显式启用任何角色的节点默认同时具备 master 和 data 资格,但该默认行为在 7.x 后版本中已不推荐用于生产部署。

二、主节点与数据节点的本质区别

主节点不是“上级”或“控制者”,而是一个被集群共同信任的协调者;它不处理用户查询、不写入文档、不承载分片数据,仅维护集群状态元数据。数据节点则完全独立执行本地分片的读写逻辑,其行为不受主节点实时指令驱动,仅响应主节点下发的分片分配变更事件。

1、主节点的核心动作是更新并广播 cluster state,该状态包含所有索引结构、分片路由表、节点健康信息等,且必须全局一致。

2、当客户端发起创建索引请求时,请求被任意协调节点接收后,转发至当前主节点;主节点校验合法性、生成新索引的元数据快照,并将更新后的 cluster state 推送至全部节点。

3、数据节点在收到 cluster state 更新后,自行判断是否需启动或迁移本地分片,无需主节点逐条下发指令。

4、若主节点长期无响应,其他候选主节点将在超时后触发重新选举,期间集群仍可正常读写——只要分片副本可用,但无法执行索引创建、删除、分片重分配等元数据变更操作。

三、主节点选举的触发条件与前提

选举并非周期性运行,而是由明确的集群状态变更事件驱动;每次选举都基于严格法定票数规则,确保结果唯一且防脑裂。选举前必须满足最低资格节点数、网络连通性与状态同步三项硬性条件。

1、集群首次启动时,所有配置了 node.master: true 的节点自动进入候选池,等待发现彼此并发起投票。

2、现有主节点进程崩溃、被 kill -9 终止或所在机器断电,导致其无法发送心跳,其余候选节点在 discovery.zen.fd.ping_timeout 超时后判定其失联,随即启动新选举。

3、网络分区发生时,若某子集内候选节点数 ≥ discovery.zen.minimum_master_nodes 阈值,则该子集可独立完成选举并形成新集群;另一子集因票数不足无法选出主节点,进入只读或拒绝写入状态。

4、节点主动下线(如执行 _cluster/nodes//_shutdown API)或配置变更导致其退出候选角色,也可能触发集群状态重校准与潜在再选举。

四、Zen Discovery 选举流程详解

Zen Discovery 是 Elasticsearch 6.x 及更早版本内置的发现与选举模块(7.x 起逐步替换为 Cluster Coordination 模块,但核心逻辑高度兼容);其采用基于法定人数(quorum)的简单多数投票机制,全程无中心协调器,依赖各节点本地状态决策。

1、每个候选主节点启动后,向 discovery.zen.ping.unicast.hosts 列表中所有地址发起 TCP 连接探测,建立初始节点视图。

2、节点收集到足够多的活跃候选者后,各自生成一个候选列表,并按 node.name 字典序排序,从中选取排序最靠前的节点作为本轮投票目标。

3、每个节点向目标节点发送投票请求;目标节点若自身也在候选列表中且尚未获得多数票,则接受该票;否则拒绝。

4、任一节点累计收到 ≥ discovery.zen.minimum_master_nodes 张有效票,即宣告当选为主节点,并立即广播新 cluster state。

5、其余节点验证当选者身份与票数合法性,确认后切换为跟随状态,停止投票并开始同步元数据。

五、防止脑裂的关键配置项解析

脑裂(Split-Brain)指集群因网络分区分裂为多个子集,各自选出不同主节点,导致元数据不一致甚至数据损坏。Elasticsearch 通过强制法定人数约束与超时机制从源头抑制该风险,而非事后修复。

1、discovery.zen.minimum_master_nodes 必须设为 “(候选主节点总数 / 2) + 1”,例如 3 个候选节点则设为 2,5 个则设为 3;设置过低将导致分区后多个子集均满足条件而并发选举。

2、discovery.zen.fd.ping_intervaldiscovery.zen.fd.ping_timeout 共同控制故障检测灵敏度;过短易误判节点宕机,过长则延迟故障响应。

3、禁用多播发现(discovery.zen.ping.multicast.enabled: false)可避免跨网段节点意外加入集群,是生产环境强制要求。

4、所有候选主节点应使用静态单播列表(discovery.zen.ping.unicast.hosts)而非依赖 DNS 或动态服务发现,确保初始连接路径确定且可控。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

335

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

616

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

1192

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

428

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

324

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

190

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

1009

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

1801

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

322

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习