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

如何配置ElasticSearch(ECK):主分片存廉价节点,副本分置昂贵节点

实现ECK部署下ElasticSearch分片定向路由配置方案

1. 给节点打自定义属性标签

在ECK的Elasticsearch资源配置中,分别给廉价节点(CN)和昂贵节点(EN1/EN2)添加自定义节点属性,用于分片路由识别:

  • 廉价节点组配置:
    apiVersion: elasticsearch.k8s.elastic.co/v1
    kind: Elasticsearch
    metadata:
      name: es-cluster
    spec:
      nodeSets:
      - name: cheap-nodes
        count: 1 # 根据实际需求调整节点数量
        config:
          node.attr.role: cheap # 标记为廉价节点
          node.data: true
          node.master: false # 若CN仅承担数据节点角色,可关闭master权限
        # 其他Pod模板、存储等配置按需补充
      - name: expensive-nodes
        count: 2 # 对应EN1、EN2两个节点
        config:
          node.attr.role: expensive # 标记为昂贵节点
          node.data: true
          node.master: false
        # 其他配置按需补充
    

2. 配置索引分片分配规则

针对已完成数据写入的索引,设置分片分配规则,强制主分片在CN节点,副本分片仅在EN节点:

  • 先将索引副本数设为2(对应两个EN节点,每个节点分配一个副本,关闭单个EN后仍有完整副本+主分片保证数据全量可用):
    PUT /your-index/_settings
    {
      "number_of_replicas": 2
    }
    
  • 配置主分片与副本分片的强制分配规则:
    PUT /your-index/_settings
    {
      "index.routing.allocation.require.role": "cheap",
      "index.routing.allocation.replica.require.role": "expensive"
    }
    
    • index.routing.allocation.require.role: cheap:强制所有主分片必须分配到带有role: cheap属性的节点(即CN节点)
    • index.routing.allocation.replica.require.role: expensive:强制所有副本分片必须分配到带有role: expensive属性的节点(即EN1/EN2节点)

3. 重置集群重平衡配置

无需修改cluster.routing.rebalance.enable为primaries,保持默认或设置为all即可,索引级的分配规则优先级更高,会自动锁定分片位置。若之前修改过该参数,可重置为默认:

PUT /_cluster/settings
{
  "persistent": {
    "cluster.routing.rebalance.enable": "all"
  }
}

4. 验证分片分配

执行以下命令查看分片分布情况,确认主分片全部在CN节点,副本均匀分配到EN1/EN2:

GET /_cat/shards/your-index?v

关键说明

  • 副本数设为2是核心:两个EN节点各持有一份副本,关闭任意一个EN节点后,剩余EN节点的副本+CN节点的主分片仍能保证全量数据可用
  • 索引级分配规则优先级高于集群级重平衡配置,无需通过cluster.routing.rebalance.enable限制分片移动,该参数设为all可让集群自动完成符合规则的分片分配

内容的提问来源于stack exchange,提问作者fzd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:15:40