首页 > 解决方案 > elasticsearch = 无法分配,因为不允许分配给任何节点

问题描述

我将弹性搜索作为单节点集群。
其中一个索引是黄色的,说明如下。
我已经阅读了这里的所有材料,总的来说,我没有找到解决这个问题的方法。这是索引信息:
yellow open research-pdl 8_TrwZieRM6oBes8sGBUWg 1 1 416656058 0 77.9gb 77.9gb

这个命令POST _cluster/reroute?retry_failed似乎没有做任何事情。

安装程序在 docker 上运行,我有 650GB 的可用空间。

{
  "index" : "research-pdl",
  "shard" : 0,
  "primary" : false,
  "current_state" : "unassigned",
  "unassigned_info" : {
    "reason" : "CLUSTER_RECOVERED",
    "at" : "2020-12-16T05:21:19.977Z",
    "last_allocation_status" : "no_attempt"
  },
  "can_allocate" : "no",
  "allocate_explanation" : "cannot allocate because allocation is not permitted to any of the nodes",
  "node_allocation_decisions" : [
    {
      "node_id" : "5zzXP2kCQ9eDI0U6WY4j9Q",
      "node_name" : "37f65704d9bb",
      "transport_address" : "172.19.0.2:9300",
      "node_attributes" : {
        "ml.machine_memory" : "67555622912",
        "xpack.installed" : "true",
        "transform.node" : "true",
        "ml.max_open_jobs" : "20"
      },
      "node_decision" : "no",
      "deciders" : [
        {
          "decider" : "same_shard",
          "decision" : "NO",
          "explanation" : "a copy of this shard is already allocated to this node [[research-pdl][0], node[5zzXP2kCQ9eDI0U6WY4j9Q], [P], s[STARTED], a[id=J7IX30jBSP2jXl5-IGp0BQ]]"
        }
      ]
    }
  ]
}

谢谢

标签: elasticsearch

解决方案


异常消息非常明确,Elasticsearch 出于高可用性的原因,从不在同一节点上分配同一主分片的副本。

此分片的副本已分配给此节点 [[research-pdl][0], node[5zzXP2kCQ9eDI0U6WY4j9Q], [P], s[STARTED], a[id=J7IX30jBSP2jXl5-IGp0BQ]]

由于您有一个单节点集群,因此您不会有另一个可以分配副本的其他节点。

解决方案

  1. 向集群中添加更多节点,以便可以在其他节点上分配副本。(首选方式)
  2. 将副本分片减少到 0,这可能会导致数据丢失和性能问题。(如果有的话,您没有添加数据节点的选项,并且您希望集群处于绿色状态)。

您可以使用集群更新 API更新副本计数。


推荐阅读