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]][叢集:admin/reroute]];

巢狀:ElasticsearchIllegalArgumentException[[allocate] 在節點[my_node][o7-MlqgXTU-51t4O7iBu6g][my_node][inet[10.10.1.4/10.10.1.4:9300]]{_locals_storage[3_local_storage[3]5:9300]]>上分配。 ] =true} 是不允許的,原因:

[是(分片未分配給同一節點或主機)]

[是(節點通過包含/排除/需要過濾器)]

[是(主要已激活)]

[是(低於 [2] 的分片恢復限制)]

[是(分配禁用被忽略)]

[是(分配禁用被忽略)]

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

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

[否(目標節點版本[1.6.0]早於來源節點版本[1.6.1])]

[是(節點上有足夠的磁碟用於分片,可用:[478.1gb])]

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

]; 「,

“狀態”:400

}

相關內容