更新时间:2026-01-09 GMT+08:00
集群Master节点过载
问题描述
当Elasticsearch/OpenSearch集群的Master节点出现过载时,会导致以下问题:
- 集群状态显示为yellow或red,无法进行元数据操作。
- 集群中多个节点同时脱离。
- 日志中出现“master node failed”、“restarting discovery”等提示。
- 调用接口时提示Master节点不存在。
问题原因
- Pending Task过载:任务积压和优先级冲突会导致Pending Task过载,例如业务变更产生大量PUT mapping任务阻塞,或urgent级别任务抢占资源导致创建索引任务无法执行。
- 分片数过多:分片数过多会增加Master节点的负担,使其内存占用过高、CPU资源耗尽,并引发任务处理延迟。
- 元数据处理过载:频繁的元数据操作(如索引创建、分片分配)或集群状态更新超时,可能导致Master节点CPU使用率持续高于90%,进而影响集群稳定性。
解决方法
场景一:Pending Task过载
- 任务积压时的处理方案:
- 重启集群(所有节点),释放积压的pending_tasks任务,恢复集群的正常运行。
- 阻止索引的写入和mapping更新操作,以防止任务进一步积压,确保集群稳定。
PUT my_index/_settings { "index.blocks.metadata": true, "index.blocks.write": true, "index.blocks.read_only": true } - 等待集群恢复稳定后,恢复索引的写入和mapping更新操作,以恢复正常业务。
PUT my_index/_settings { "index.blocks.metadata": false, "index.blocks.write": false, "index.blocks.read_only": false } - 验证集群状态,当返回green时表示故障修复。
GET _cluster/health?pretty
- 任务优先级冲突的处理方案:
- 定位无法创建索引的原因,如检查索引模板配置、验证分片数是否超过集群容量、检查存储空间是否充足。
- 修复配置问题,如修改索引模板参数(如分片数、副本数)、清理存储空间、修复分片分配策略。
- 重新提交创建索引请求,确认问题解决。
场景二:分片数过多
- 方案1:升级Master节点规格,缓解分片数过多导致的过载。
- 方案2:优化分片策略,减少Master节点的元数据处理压力。
场景三:元数据处理过载
父主题: 集群不可用