Elasticsearch не назначает осколки (новому) узлу
У меня проблема с моим кластером, который не балансирует шарды с перезагруженным узлом, который теперь пуст.
- я остановился
my_node
отmy_cluster
и ждал, пока осколки и копии не будут восстановлены. Это удалось. - Потом я перезапустил
my_node
, но кластер не выделил ни одного осколка. - Был создан новый индекс, и кластер назначил
my_node
, - Один день спустя, у узла все еще есть только сегменты нового индекса.
Есть ли способ навязать равный баланс осколков по узлам? В моем случае я проверил перезапуск узла после запуска gateway.recover_after_time
, но этот вопрос заставляет меня задуматься:
- Что мне делать, если я добавляю новый узел и хочу инициировать перебалансировку?
1 ответ
NVM, похоже, что my_node
является более старой версией и asticsearch отказывается перераспределять, если версия более старая.
Я побежал 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_cluster][0] на узле [my_node][o7-MlqgXTU-51t4O7iBu6g][my_node][inet[10.10.1.4/10.10.1.4:9300]]{max_noal_storage = true} не допускается, причина:
[ДА (шард не назначен одному узлу или хосту)]
[ДА (проходы по узлам включают / исключают / требуют фильтры)]
[ДА (основной уже активен)]
[ДА (ниже предела восстановления осколка [2])]
[ДА (отключение выделения игнорируется)]
[ДА (отключение выделения игнорируется)]
[ДА (не включена информация о распределении)]
[ДА (общий предел шарда отключен: [-1] <= 0)]
[НЕТ (версия целевого узла [1.6.0] старше, чем версия исходного узла [1.6.1])]
[ДА (достаточно диска для шарда на узле, бесплатно: [478.1gb])]
[ДА (осколок не является основным или перемещение отключено)]
]; ",
"статус": 400
}