Неназначенный осколок Elasticsearch: как переназначить обратно? - PullRequest
0 голосов
/ 04 августа 2020

У нас есть 3 кластера узлов данных, и все наши индексы имеют 1 первичный + 2 реплики на каждом индексе. Все индексы работали правильно с зеленым статусом для кластера, пока через пару дней не появилась go.

По какой-то причине только один из индексов теперь имеет желтый статус с 1 неназначенной ошибкой индекса. Когда я запускаю _cluster/allocation/explain, он сообщает мне, что «шард не может быть выделен тому же узлу, на котором уже существует копия шарда». Если я посмотрю на состояние кластера на Kibana, я не найду дублирующегося осколка на этом узле.

введите описание изображения здесь

Так что я не совсем уверен, в чем проблема. Может кто-нибудь дать совет по этому поводу?

1 Ответ

1 голос
/ 05 августа 2020

Это утверждение верно.

the shard cannot be allocated to the same node on which a copy of the shard already exists, поскольку не имеет смысла назначать реплики (R) на том же узле, где присутствует первичный сегмент (P) индекса, a 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, я предполагаю, что вы уже знаете индекс проблемы c, поэтому просто следуйте советам, упомянутым в this обсуждение сообщения , Короче говоря, уменьшите количество реплик для индекса проблемы c до 1 или увеличьте узел данных.

...