集群运维与冷热分层
用途:保障 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)、线程池队列 |
生命周期管理(ILM)
「生命周期管理(ILM)」小节链接日志/事件类索引标准策略:
hot(写入 + 近期查询,SSD) → warm(只读 + forcemerge,大容量盘) → cold(搜索慢) → delete要点:滚动条件按主分片大小或天数;warm 阶段做 _forcemerge(只读索引才安全);删除策略要与保留期与合规要求一致。
高可用与变更
「高可用与变更」小节链接- 节点角色分离:master(3 个专用、轻量)、data(热/温)、coordinating(负载均衡与聚合,可水平扩)。
- 分配感知:按机架/可用区打散副本,避免单点全灭。
- 滚动升级:逐节点下线(先
enable: primaries或 shard 迁移)→ 升级 → 上线;关注版本兼容与映射变更。 - 快照与恢复:
snapshot仓库放对象存储,定期快照 + 恢复演练;快照不是备份策略的全部(需覆盖误删与索引损坏)。
查询雪崩防护
「查询雪崩防护」小节链接- 慢查询日志 + 熔断(
circuit_breaker、search.timeout、max_concurrent_shard_requests)。 - 聚合与导出走独立协调节点或专用集群(读写分离、业务隔离)。
- 应用侧对 ES 故障要有降级:退回 DB 精确查询或返回缓存结果,而不是让页面 500。
- 限流:按调用方配额,防止一个慢查询模式打满线程池。
常见误区
「常见误区」小节链接| 误区 | 修正 |
|---|---|
| 堆给得越大越好 | 挤压页缓存,查询反而变慢 |
| 集群 Yellow 不处理 | 副本长期缺失=无冗余 |
| 只在业务低峰备份 | 备份要定期 + 恢复演练 |
用 _cat/indices 看健康 |
需看分片分布与倾斜 |
| 查询变慢就加节点 | 先看分片数、映射、慢查询与 GC |
| flood stage 触发后只清磁盘 | 还需手动解除只读块 |
延伸阅读
「延伸阅读」小节链接- Elasticsearch 官方文档:Cluster health、Shard allocation、ILM、Snapshot/Restore、Circuit breakers
- 《Elasticsearch 权威指南》部署与运维章节