JJava 知识库
JAVA INTERVIEW

高频面试题

ES高级约 2 分钟

ES 集群出现节点频繁离线和选主,你会怎么判断是否有脑裂或集群状态过大的问题?

参考回答约 2 分钟 · 口语表达
我的判断

节点频繁离线和选主先查网络、GC、磁盘与 cluster state 发布延迟;现代 ES 重点是法定多数和 master 稳定性,不沿用旧式脑裂参数口诀。

我会对齐 master 日志、节点离开原因、选举 term、GC、网络丢包和磁盘。若 master 因长 GC 无法响应,其他节点会认为它离开;cluster state 很大或更新过频时,发布确认慢也会造成不稳定。

检查专用 master-eligible 节点是否为 3 个或 5 个、跨故障域部署,发现机制和地址是否稳定。只有少数派分区时,法定多数应阻止它继续形成新 master;不要在网络分区时手工把两边都强行启动成独立集群。

cluster state 过大常见来源是索引/分片过多、动态字段爆炸、alias 和模板膨胀。会控制新建索引频率、字段数和 shard,总结 pending tasks 与 state 大小。

止损时先稳定网络和 master,不在集群反复选举期间做大规模 reroute。恢复后演练单 master 和单故障域下线,验证仍有多数派。

容易答偏踩坑误区
  • 仍背诵 minimum_master_nodes 新版本已由协调子系统自动管理投票配置。
  • 选举抖动时继续批量建索引。 会进一步放大 cluster state 压力。
  • 把所有节点都设 master eligible。 大集群里反而增加管理和选举复杂度。