每个节点的分片总数已达到上限

edit

每个节点的分片总数已达到上限

edit

Elasticsearch 试图利用所有可用资源,通过在集群节点之间分布数据(索引分片)来实现。

用户可能希望通过配置 cluster.routing.allocation.total_shards_per_node 系统设置来影响此数据分布,以限制系统中单个节点上可以托管的分片数量,无论索引如何。 各种限制单个节点上可以托管多少分片的配置可能导致分片未分配,因为集群没有足够的节点来满足配置。

为了修复这个问题,请按照以下步骤操作:

为了使分片被分配,我们需要增加集群中节点上可以共存的分片数量。 我们将通过检查系统范围的cluster.routing.allocation.total_shards_per_node 集群设置并增加配置的值来实现这一点。

使用 Kibana

  1. 登录到 Elastic Cloud 控制台
  2. Elasticsearch Service面板上,点击您的部署名称。

    如果您的部署名称被禁用,您的 Kibana 实例可能不健康,在这种情况下,请与 Elastic 支持 联系。如果您的部署不包含 Kibana,您需要做的就是 首先启用它

  3. 打开您的部署的侧边导航菜单(位于左上角的Elastic标志下方),然后转到开发工具 > 控制台

    Kibana Console
  4. 检查 cluster.routing.allocation.total_shards_per_node 集群设置

    GET /_cluster/settings?flat_settings

    响应将会是这样的:

    {
      "persistent": {
        "cluster.routing.allocation.total_shards_per_node": "300" 
      },
      "transient": {}
    }

    表示系统中一个节点上可以驻留的分片总数当前配置的值。

  5. 增加 一个节点上可以分配的分片总数量的值到一个更高的值:

    PUT _cluster/settings
    {
      "persistent" : {
        "cluster.routing.allocation.total_shards_per_node" : 400 
      }
    }

    系统范围的 total_shards_per_node 配置的新值从之前的 300 增加到 400total_shards_per_node 配置也可以设置为 null,这表示在系统中一个节点上可以共存的shard数量没有上限。