You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch 5.6配置:全索引节点复制与三节点集群容灾

Elasticsearch 5.6 集群配置与滚动重启问题修复

一、滚动重启集群变红问题的解决

你提到的延迟分片分配确实是适配场景的核心方案,它能避免集群在节点短暂离线(如滚动重启)时立刻触发分片重分配,给重启节点留足恢复时间,减少主分片丢失风险。

配置方式

  • 静态配置(写入elasticsearch.yml,永久生效):
    cluster.routing.allocation.delay: 5m
    cluster.routing.allocation.node_concurrent_recoveries: 2
    cluster.routing.allocation.node_initial_primaries_recoveries: 4
    cluster.routing.allocation.enable: all
    
  • 动态配置(通过API临时生效,重启集群后失效):
    PUT /_cluster/settings
    {
      "persistent": {
        "cluster.routing.allocation.delay": "5m",
        "cluster.routing.allocation.node_concurrent_recoveries": 2,
        "cluster.routing.allocation.node_initial_primaries_recoveries": 4
      }
    }
    

滚动重启操作规范

每次仅重启一个节点,通过以下命令确认节点完全恢复后,再操作下一个:

  • GET _cat/nodes?v:检查节点状态为ready
  • GET _cat/shards?v:确认所有分片状态为STARTED
    避免因提前启动下一个节点导致分片未完成恢复,引发集群红色状态。

二、3节点集群扛2节点故障的配置方案

要实现承受两个节点故障,需确保任意单个节点离线后,剩余节点仍保有所有分片的可用副本,具体配置如下:

索引层面配置

针对两个索引,按以下规则设置分片:

  • 主分片数number_of_shards: 1:主分片数不能超过「节点数 - 容忍故障数」(3-2=1),否则双节点故障时,剩余节点可能缺失某主分片的副本。
  • 副本分片数number_of_replicas: 2:每个主分片对应2个副本,确保3个节点各存储一份完整的索引数据(每个节点都包含该索引的所有分片副本)。

示例创建索引命令:

PUT /your_index_1
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 2
  }
}

注意:主分片数创建后无法修改,已存在的索引需通过重建索引调整主分片数,再设置副本数。

集群层面分片分配配置

添加以下配置到elasticsearch.yml,确保分片均匀分布:

# 若GKE节点分属不同可用区,可设置该属性实现跨可用区分片分布,提升可用性
# cluster.routing.allocation.awareness.attributes: zone
cluster.routing.allocation.same_shard.host: true

三、配置验证

  • 执行GET _cat/shards?v,确认每个索引的主分片和副本分片均匀分布在3个节点上。
  • 模拟双节点故障:停止任意两个节点,检查集群状态(至少保持黄色,即主分片全部可用),验证剩余节点可正常提供所有索引的查询服务。

内容的提问来源于stack exchange,提问作者Moritz Schmitz v. Hülst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:59:54