跳转到内容

集群运维与冷热分层

用途:保障 ES 稳定运行,处理“集群变黄/红、写入被拒、查询雪崩”

状态 含义 常见原因
Green 所有主副分片分配完成 —
Yellow 副本未分配 节点数不足、分配规则限制、磁盘水位
Red 有主分片不可用 节点丢失且副本也丢、索引损坏

排查入口:_cluster/health、_cluster/allocation/explain(解释为什么没分配)、_cat/nodes?v、_cat/shards、_cat/recovery。

项 建议
堆大小 不超过物理内存 50%,且一般 ≤ 31GB 以保留压缩指针(受版本与 JDK 影响)
剩余内存 留给页缓存(Lucene 段文件读取依赖 OS cache)
磁盘水位 low/high/flood(默认 85/90/92%),flood 会加只读块
段数量 段过多会拖慢查询与增加堆压力,靠 merge 策略与合理分片控制
监控 堆使用、GC 时长、页缓存命中率、查询延迟 P99、写入拒绝(429)、线程池队列

日志/事件类索引标准策略:

hot(写入 + 近期查询,SSD) → warm(只读 + forcemerge,大容量盘) → cold(搜索慢) → delete

要点:滚动条件按主分片大小或天数;warm 阶段做 _forcemerge(只读索引才安全);删除策略要与保留期与合规要求一致。

  • 节点角色分离:master(3 个专用、轻量)、data(热/温)、coordinating(负载均衡与聚合,可水平扩)。
  • 分配感知:按机架/可用区打散副本,避免单点全灭。
  • 滚动升级:逐节点下线(先 enable: primaries 或 shard 迁移)→ 升级 → 上线;关注版本兼容与映射变更。
  • 快照与恢复:snapshot 仓库放对象存储,定期快照 + 恢复演练;快照不是备份策略的全部(需覆盖误删与索引损坏)。
  1. 慢查询日志 + 熔断(circuit_breaker、search.timeout、max_concurrent_shard_requests)。
  2. 聚合与导出走独立协调节点或专用集群(读写分离、业务隔离)。
  3. 应用侧对 ES 故障要有降级:退回 DB 精确查询或返回缓存结果,而不是让页面 500。
  4. 限流:按调用方配额,防止一个慢查询模式打满线程池。
误区 修正
堆给得越大越好 挤压页缓存,查询反而变慢
集群 Yellow 不处理 副本长期缺失=无冗余
只在业务低峰备份 备份要定期 + 恢复演练
用 _cat/indices 看健康 需看分片分布与倾斜
查询变慢就加节点 先看分片数、映射、慢查询与 GC
flood stage 触发后只清磁盘 还需手动解除只读块
  • Elasticsearch 官方文档:Cluster health、Shard allocation、ILM、Snapshot/Restore、Circuit breakers
  • 《Elasticsearch 权威指南》部署与运维章节