8.1 集群解剖:节点角色与健康检查


文档摘要

8.1 集群解剖:节点角色与健康检查 本节摘要:健康检查是运维的第一仪表盘,但只看颜色不够——要能读懂未分配分片数、主节点身份、节点数的变化,并理解它们背后的选举与元数据机制。本节讲健康接口的完整读法、主节点选举的法定多数、节点角色的专责化,以及黄色与红色的标准处置路径。看完这节,你面对集群告警时手里有地图。 集群的体检报告 健康检查的完整读法 第 2 章只看了三色,生产视角要读全字段: 字段连成一个故事:主分片 42 个全部活跃(unassignedprimaryshards 为零,所以不是红色);活跃分片应有 84(副本一),实际 63,差着 21 个未分配副本——黄色;relocating 2 个说明正在搬迁(8.2 的再平衡进行中);initializing 1 个正在初始化。

8.1 集群解剖:节点角色与健康检查

本节摘要:健康检查是运维的第一仪表盘,但只看颜色不够——要能读懂未分配分片数、主节点身份、节点数的变化,并理解它们背后的选举与元数据机制。本节讲健康接口的完整读法、主节点选举的法定多数、节点角色的专责化,以及黄色与红色的标准处置路径。看完这节,你面对集群告警时手里有地图。

集群的体检报告

健康检查的完整读法

第 2 章只看了三色,生产视角要读全字段:

GET _cluster/health?level=indices
{ "status": "yellow", "number_of_nodes": 3, "active_primary_shards": 42, "active_shards": 63, "relocating_shards": 2, "initializing_shards": 1, "unassigned_shards": 21, "unassigned_primary_shards": 0 }

字段连成一个故事:主分片 42 个全部活跃(unassigned_primary_shards 为零,所以不是红色);活跃分片应有 84(副本一),实际 63,差着 21 个未分配副本——黄色;relocating 2 个说明正在搬迁(8.2 的再平衡进行中);initializing 1 个正在初始化。读报告的顺序:先看主分片有没有丢(红色判定),再看副本缺口(黄色判定),最后看搬迁与初始化(进行中的动作)。level 参数调到 indices 还能逐索引下钻,黄色到底是哪个索引的账,一眼定位。

三色的处置优先级

状态 含义 第一动作 时限感
绿色 主副本齐备 记录后走人 常规巡检
黄色 副本未分配 查未分配原因接口,多数是磁盘水位或节点数不足 当天处理
红色 主分片丢失 停止写入、查故障节点、评估恢复或快照还原 立刻响应

红色的标准动作序列值得背下来:先停写入(避免半死状态继续吃元数据)、看主分片所在节点是重启中还是真没了、节点能回来就等对等恢复(副本还在的前提下),回不来就走快照还原(8.4 的演练价值在此兑现)。

主节点选举与法定多数

集群的元数据(有哪些索引、映射是什么、分片在哪)由主节点维护。主节点挂了,master 候选节点们发起选举——当选需要法定多数:三候选里至少两票、五候选里至少三票。这个门槛防的是脑裂:网络分区把集群裂成两半时,少数派凑不够票,无法选出第二个主节点自封正统,元数据世界始终只有一个权威。这就是生产推荐三或五个专职 master 候选、永不用两个的原因——两候选的一边一票,两边都当不了家,集群瘫痪。

GET _cat/nodes?v=h,name,node.role,master
name node.role master node-1 dimr * node-2 dimr - node-3 dimr - # node.role 里 d数据 i预处理 m主候选 r远程检索 星号是现任主节点

节点角色矩阵

节点角色矩阵

一次黄色告警的处置过程

背景:周五傍晚,监控告警集群变黄,unassigned_shards 从零涨到二十。操作:健康接口下钻到 indices,锁定是新索引 logs-2026-08-28 的副本未分配;查未分配原因接口,返回判定码是磁盘水位触发——某数据节点磁盘用到八成五,超过低水位线,分配器拒绝再往它放副本。处置:临时把该索引副本数降到零保住绿色(业务容忍单副本缺失窗口),随后清理该节点上的废弃索引、扩了一块盘,水位回落后副本自动补齐。解读:黄色的常见根因就三类——节点数不够、磁盘水位、分配过滤(8.2);未分配原因接口把猜测变成判定码,处置从"重启试试"变成定向操作。变式:水位长期紧张时,上 8.4 的容量预估或把冷索引进生命周期管理(滚动到低配节点或删除)。

⚠️ 常见坑:看到黄色就重启集群。重启不解决节点数不足与磁盘水位,反而打断正在进行的恢复与搬迁,把小黄拖成大红。先读未分配原因,再动手。

💡 关键直觉:三色报告是体检结论,指标四件套才是化验单。告警建在化验单上(堆、拒绝数、水位、延迟),体检结论只用来兜底。

考核与自测

考核知识点清单

考核点 达标标准
健康读序 按主分片、副本缺口、搬迁状态的顺序解读健康报告
法定多数 说出主候选的数量要求与脑裂防护的机理
角色矩阵 四种角色的职责与两种集群形态的取舍
黄色三根因 节点数、磁盘水位、分配过滤各自的判据与处置
监控四件套 说出堆、拒绝数、水位、延迟的告警位置与颜色指标的关系

动手验证:未分配原因的判定码

黄色状态出现时,分配解释接口把"猜测"变成"判定":

GET _cluster/allocation/explain # 返回 allocation_explanation 与逐节点 decision 日志 # 常见判定 磁盘超过低水位线 副本不能与主分片同节点 分配过滤规则排除

读到的判定直接对应处置动作:水位触发就去清磁盘或扩容,节点不足就补节点,过滤排除就去查冷热分层规则。把这条接口写进运维手册的"黄色处置"一页,从此处置有据可依,重启大法退场。

易错点补充

  • 把主节点当"最忙的节点":它只管元数据与调度,不碰文档读写;它忙的是集群状态变更,元数据量大的集群才需要专职它。
  • 监控只看三色:颜色是结果指标,等变红再动手已经晚了,告警要建在四件套指标上。
  • 只看整体堆使用率:老年代持续高位才是内存压力的前兆,回收停顿次数与时长要一起纳入告警。
  • 告警阈值照抄模板:不同集群的负载形态不同,阈值要按自身基线校准,抄来的数字要么天天误报要么漏报。

仪表盘点亮

  • 健康报告的读序:先主分片(红不红)、再副本缺口(黄不黄)、后搬迁初始化(在干嘛)。
  • 选举靠法定多数,三或五个专职主候选,两个等于自废武功。
  • 小集群人人兼职,大集群专责分工;协调节点的扇出压力要单独算账。
  • 黄色三根因:节点数、磁盘水位、分配过滤;未分配原因接口给判定码。
  • 监控打在指标上而非颜色上,颜色是结果。

集群看清楚了,下一节让分片动起来:分配、再平衡与搬家的代价。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U