我们有3个数据节点群集,所有索引的每个索引上都有1个主节点+ 2个副本分片。直到几天前,群集的所有索引均以绿色状态正常运行。
由于某种原因,现在只有一个索引具有黄色状态,并且有1个未分配的索引错误。当我运行_cluster/allocation/explain
时,它告诉我“无法将分片分配给已经存在该分片副本的同一节点”。如果我查看Kibana上的集群运行状况,则看不到该节点上的重复分片。
所以我不太确定问题出在哪里。有人可以提供任何建议吗?
最佳答案
这个说法是正确的。the shard cannot be allocated to the same node on which a copy of the shard already exists
,因为在存在索引主分片(P)的同一节点上分配副本(R)没有意义,所以 s副本用于提供高可用性和容错能力,并且始终进行分配到没有副本主分片的节点。
现在以您的情况为例,您提到您有3个数据节点,并且所有索引还具有3个分片(1 P + 2R),这使得在每个数据节点上分配1个分片(无论是P还是R分片)非常理想。
同样,您是正确的cluster health on Kibana, I don't see a duplicate shard on that node.
,并且P或R不能在同一节点上也不会发生。
由于您已经使用了_cluster/allocation/explain
,所以我假设您已经知道有问题的索引,因此只需遵循discuss post中提到的建议,简而言之,将有问题的索引的副本数减少为1或增加数据节点。
关于elasticsearch - Elasticsearch未分配的碎片:如何重新分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63253621/