You need to enable JavaScript to run this app.
导航
如何管理均衡云搜索服务实例中主分片分布
最近更新时间:2025.03.07 19:51:40首次发布时间:2025.03.04 10:23:53

在新建索引或者节点个数发生变化时(如节点重启、新增节点),Elasticsearch 将会对分片位置进行调整,在新增节点或新建索引时,可能会出现某个(某些)节点中的主分片数量不均衡,导致写入高峰期时节点负载不均衡,集群整体资源利用率偏低。
您可以通过配置主分片均衡相关配置项,开启主分片均衡,从而尽量将不同索引的主分片均匀地分布在所有节点中,从而提高整体资源利用率。

注意事项

  • 由于在多个可用区时会通过 awareness 控制主副分片的分布,强制主副分片无法分布在一个可用区中,因此会对 relocation 阶段的主分片均衡产生一定程度的限制。
    • 存量的索引在开启主分片均衡时可能无法跨可用区进行主分片均衡
    • 新增的索引在逐个分配主分片时依然可以跨可用区进行主分片均衡
  • 目前仅支持在 2024 年 12 月以后创建的 Elasticsearch 7.10.2 版本实例和 OpenSearch 2.9.0 版本实例支持开启主分片均衡功能,您可以先尝试配置,如果遇到报错参数无法识别,可重启实例后就可以具备此功能。

参数说明

您可以通过以下参数设置索引的主分片均衡。

参数

说明

cluster.routing.allocation.balance.prefer_primary

是否开启 allocation 时的主分片均衡,取值如下:

  • true:表示开启。
  • false:(默认值)表示关闭。

cluster.routing.allocation.rebalance.primary.enable

是否开启 rebalance 时的主分片均衡,取值如下:

  • true:表示开启。
  • false:(默认值)表示关闭。

cluster.routing.allocation.rebalance.primary.buffer

rebalance 时能够忍受的不均衡程度,取值范围为 0~1,默认值为 0.1。
0 表示完全不忍受,具体表示当前节点主分片个数超出理论上能接受的单节点平均值的程度。

cluster.routing.allocation.move.primary_first

迁移分片时是否先迁移主分片,取值如下:

  • true:表示迁移分片时先迁移主分片。
  • false:(默认值)表示迁移分片时不先迁移主分片,且不影响主分片均衡功能。

cluster.routing.allocation.primary_constraint.threshold

表示违反全局的主分片均衡所带来 weight 增加。Long 类型,默认为 10。

说明

当参数取值过大可能会导致某些情况下出现某些节点只有主分片而没有副分片的情况,因此需谨慎修改该参数配置。

使用示例

下文以在 Kibana 界面为例,介绍如何开启主分片均衡。

  1. 登录云搜索服务控制台

  2. 在顶部导航栏,选择目标实例所在的地域。

  3. 实例列表页面,单击目标实例操作列的 Kibana

  4. 在 Kibana 访问页面输入用户名和密码,单击 Log in,登录 Kibana。

  5. 在 Kibana 界面,输入以下命令,开启主分片均衡:

    PUT _cluster/settings
    {
      "transistent": {
        "cluster": {
          "routing": {
            "allocation.balance.prefer_primary": true,
            "allocation.rebalance.primary.enable": true
          }
        }
      }
    }
    

    说明

    该参数只能在集群绿的情况下执行,如果集群是黄的也需要把 cluster.routing.allocation.allow_rebalanceindices_all_active 改到 indices_primaries_active,均衡完之后需要改回原有配置。