4. 节点角色与硬件规划:Master、Data、Ingest、Coordinating 节点角色详解,冷热节点硬件选型
在 ELK 集群中,每个节点并非承担相同职责。合理划分节点角色并匹配硬件,是保障集群高可用、高性能和冷热分层存储落地的第一道关卡。本节将逐一拆解五大节点角色的核心功能、配置要点,并给出冷热节点的硬件选型标准。
4.1 节点角色全景图
Elasticsearch 节点通过 node.roles 参数定义其职责。一个节点可以承担多个角色,但在生产环境中,建议将关键角色(如 Master 与 Data)分离,避免资源争抢。
4.2 五大节点角色详解
| 角色 | 核心职责 | 配置参数 | 资源敏感度 | 生产建议 |
|---|---|---|---|---|
| Master | 集群元数据管理、索引创建/删除、节点上下线、选主 | node.roles: [ master ] |
CPU 中,内存中,磁盘低 | 3 台专用 Master,不参与数据读写 |
| Data | 数据存储、索引分片、搜索与聚合 | node.roles: [ data ] |
CPU 高,内存高,磁盘高 | 按冷热分层配置不同存储介质 |
| Ingest | 数据预处理(Pipeline)、字段转换、格式清洗 | node.roles: [ ingest ] |
CPU 中,内存中,磁盘低 | 可独立部署,也可与 Coordinating 合并 |
| Coordinating | 请求路由、结果归并、负载均衡 | node.roles: [ ](空数组) |
CPU 中,内存中,磁盘低 | 作为集群入口,建议独立 2-3 台 |
| Machine Learning | 异常检测、预测分析(需白金版 License) | node.roles: [ ml ] |
CPU 高,内存高 | 按需启用,不与 Master 混部 |
避坑提示: 不要将 Master 节点同时设置为 Data 角色。当数据写入压力大时,Master 可能因 GC 导致选主超时,引发集群脑裂。专用 Master 节点应保持
node.data: false。
4.3 冷热节点硬件选型标准
冷热分层存储的核心在于:热节点追求低延迟,冷节点追求低成本。以下选型标准基于生产环境经验,适用于日均 TB 级日志场景。
4.3.1 热节点 (Hot Tier)
- 磁盘: 100% SSD(NVMe 优先),建议 RAID 10 或 JBOD 直通。单节点容量建议 2-8 TB。
- 内存: 至少 64 GB,推荐 128 GB+。内存与磁盘比例建议 1:30 ~ 1:50。
- CPU: 16 核以上,主频 2.5 GHz+。搜索密集型场景优先高频。
- 网络: 10 GbE 或更高,绑定多网卡。
- 典型机型: 云平台 c6/r6 系列,物理机 2U 4 路服务器。
4.3.2 温节点 (Warm Tier)
- 磁盘: SSD + HDD 混合,或大容量 SATA SSD。单节点容量建议 12-48 TB。
- 内存: 32-64 GB,内存与磁盘比例可放宽至 1:100。
- CPU: 8-16 核,主频 2.0 GHz+。
- 网络: 1 GbE 或 10 GbE。
- 典型机型: 云平台 i3/d3 系列,物理机高密度存储型。
4.3.3 冷节点 (Cold Tier)
- 磁盘: 大容量 HDD(SATA 或 SAS),单节点容量建议 48-144 TB。
- 内存: 16-32 GB,内存与磁盘比例可低至 1:200。
- CPU: 4-8 核,主频 1.8 GHz+。
- 网络: 1 GbE。
- 典型机型: 云平台冷存储实例,物理机 JBOD 高密度存储。
4.4 节点角色配置示例
以下为 elasticsearch.yml 中不同角色的典型配置片段:
# 专用 Master 节点
node.roles: [ master ]
node.data: false
node.ingest: false
node.ml: false
discovery.seed_hosts: ["master1:9300", "master2:9300", "master3:9300"]
cluster.initial_master_nodes: ["master1", "master2", "master3"]
# 热数据节点
node.roles: [ data_hot ]
node.attr.data_tier: hot
index.routing.allocation.require.data_tier: hot
# 冷数据节点
node.roles: [ data_cold ]
node.attr.data_tier: cold
index.routing.allocation.require.data_tier: cold
# 独立 Coordinating 节点
node.roles: [ ]
node.data: false
node.ingest: false
node.ml: false
生产警告: 冷热分层必须配合索引生命周期管理(ILM)策略使用。仅设置节点角色而不配置 ILM 策略,数据不会自动迁移到冷节点。ILM 策略将在后续章节详细讲解。
4.5 节点数量规划参考
| 集群规模 | Master 节点 | Coordinating 节点 | Ingest 节点 | Data 节点(热/温/冷) |
|---|---|---|---|---|
| 小规模(< 5 TB/天) | 3 | 0-2(可复用 Data) | 0-2(可复用 Coordinating) | 3-6 / 0-3 / 0-3 |
| 中规模(5-20 TB/天) | 3 | 2-4 | 2-4 | 6-12 / 3-6 / 3-6 |
| 大规模(> 20 TB/天) | 3-5 | 4-8 | 4-8 | 12+ / 6+ / 6+ |
关键原则: Master 节点数量始终为奇数(3 或 5),避免选主平票。Data 节点数量根据存储容量和分片数计算,建议每个分片大小控制在 30-50 GB。