Elasticsearch 未将分片分配给(新)节点

Elasticsearch 未将分片分配给(新)节点

我遇到一个问题,我的集群无法平衡分片,并且重新启动的节点现在是空的。

  1. 我停下 my_nodemy_cluster等待碎片和副本被重新分配。成功了。
  2. 然后我重新启动了my_node,但是集群没有给它分配任何分片。
  3. 创建了一个新索引,并且集群将分片分配给my_node
  4. 一天后,该节点仍然只有新索引的分片。

有没有办法强制在节点上均衡分片? 在我的例子中,我测试了触发后重新启动节点gateway.recover_after_time,但这个问题让我想到:

  • 如果我添加新节点并想要触发重新平衡,该怎么办?

答案1

NVM,看起来my_node是一个旧版本,并且如果版本为旧版本,elasticsearch 会拒绝重新分配。

我跑过去curl -XPOST '10.10.1.4:9200/_cluster/reroute' -d '{ "commands" : [ { "allocate" : { "index" : "my_cluster", "node" : "my_node", "shard" : 0 } } ] }' ,集群回答道:

{

“错误”:“RemoteTransportException[[es-master][inet[/10.10.1.14:9300]][cluster:admin/reroute]];

嵌套:ElasticsearchIllegalArgumentException[[allocate] 不允许在节点 [my_node][o7-MlqgXTU-51t4O7iBu6g][my_node][inet[10.10.1.4/10.10.1.4:9300]]{max_local_storage_nodes=1, master=true} 上分配 [my_cluster][0],原因:

[是(分片未分配给同一节点或主机)]

[是(节点通过包含/排除/要求过滤器)]

[是(主要节点已经处于活动状态)]

[是(低于分片恢复限制 [2])]

[是(忽略分配禁用)]

[是(忽略分配禁用)]

[是(未启用分配感知)]

[是(总分片限制已禁用:[-1] <= 0)]

[NO(目标节点版本 [1.6.0] 比源节点版本 [1.6.1] 旧)]

[是(节点上有足够的磁盘空间用于分片,可用磁盘空间:[478.1gb])]

[是(分片不是主分片或已禁用重定位)]

]; “,

“状态”:400

}

相关内容