%20%D1%83%D0%B7%D0%BB%D1%83.png)
У меня возникла проблема с тем, что мой кластер не балансирует шарды с перезапущенным узлом, который теперь пуст.
- Я остановился
my_node
иmy_cluster
подождал, пока осколки и реплики будут перераспределены. Это удалось. - Затем я перезапустил
my_node
, но кластер не выделил ему ни одного шарда. - Был создан новый индекс, и кластеру были назначены фрагменты
my_node
. - Спустя день на узле по-прежнему имеются только фрагменты нового индекса.
Есть ли способ принудительного равномерного распределения шардов по узлам? В моем случае я протестировал перезапуск узла после срабатывания 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 } } ] }'
, и кластер ответил:
{
"error": "RemoteTransportException[[es-master][inet[/10.10.1.14:9300]][cluster:admin/reroute]];
вложенный: ElasticsearchIllegalArgumentException[[allocate] выделение [my_cluster][0] на узле [my_node][o7-MlqgXTU-51t4O7iBu6g][my_node][inet[10.10.1.4/10.10.1.4:9300]]{max_local_storage_nodes=1, master=true} не разрешено, причина:
[ДА (осколок не выделен тому же узлу или хосту)]
[ДА(пропускает узел, включает/исключает/требует фильтры)]
[ДА(основной уже активен)]
[ДА(ниже лимита восстановления осколков [2])]
[ДА(отключение выделения игнорируется)]
[ДА(отключение выделения игнорируется)]
[ДА (осведомленность о распределении не включена)]
[ДА(общий лимит сегментов отключен: [-1] <= 0)]
[НЕТ(версия целевого узла [1.6.0] старше версии исходного узла [1.6.1])]
[ДА(достаточно места на диске для шарда на узле, свободно: [478.1 ГБ])]
[ДА (осколок не является основным или перемещение отключено)]
]; ",
"статус" : 400
}