节点角色是什么
Elasticsearch 集群里的节点按职责分工:master 负责集群状态与元数据变更,data 存储分片并执行检索与聚合,ingest 在写入前跑预处理管道,不配任何角色的协调节点只负责请求分发与结果汇聚。生产环境通常把角色拆开,避免主节点被查询压垮、数据节点被协调流量拖慢;小集群合并角色则能省运维成本。配置入口是各节点 elasticsearch.yml 的 node.roles。
基本信息
| 配置项 | elasticsearch.yml 中的 node.roles |
|---|---|
| 常见组合 | [data, ingest]、[master]、[] 表示纯协调节点 |
| 主节点数量 | 需奇数以满足选举多数,常见为 3 个 |
| 版本差异 | ES 7.9+ 使用 node.roles,更早版本用 node.master / node.data 布尔项 |
| 生效方式 | 修改配置后重启该节点进程 |
典型使用场景
- 小集群简化:3 到 5 个节点时把 data 与 ingest 合并,减少节点数量
- 大集群稳定:主节点独立部署,避免大量查询影响集群状态更新
- 写入预处理:由 ingest 节点承担管道处理,把字段加工从应用侧移到集群侧
- 查询隔离:独立协调节点承接高并发查询的分发与汇聚
- 冷热分层:数据节点按硬件分组,热数据放在 SSD 节点上
角色配置与查看
角色配置与查看
node.name: es-data-01
node.roles: [ data, ingest ] # 数据 + 写入处理
# 专用主节点(生产建议 3 个)
# node.roles: [ master ]
# 协调节点:不承担数据与主节点职责
# node.roles: [ ]
# 查看各节点角色、是否为主节点与堆使用率
GET /_cat/nodes?v&h=name,node.role,master,heap.percent,ram.percent角色与职责
| 角色 | 职责 | 不拆分的风险 |
|---|---|---|
| master | 集群状态与元数据变更 | 被拖慢时集群状态更新受阻 |
| data | 存储分片、执行检索聚合 | 协调流量会挤占检索资源 |
| ingest | 写入前的管道处理 | 管道复杂时拉高数据节点负载 |
| coordinating | 请求分发与结果汇聚 | 无专用节点时由数据节点兼任 |
专用主节点不要承担数据职责:主节点参与读写会放大集群状态变更失败的概率,一旦选举多数丢失,集群会长时间无法恢复写入。
小集群合并角色能明显降低运维成本,但「主节点必须是奇数且至少 3 个」这条底线要守住,双主节点没有任何多数容错能力。