Кластер в состоянии yelllow/red.
Периодически кластер уходит из нормального состояния по причине недоступности мастер-ноды с дата-нод. Возможные причины:
- Проблемы с сетью
- Мастер-нода перегружена
- На мастер-ноде лютует GC
Каждая из причин имеет свое отражение в логах. Внимательно читаем логи, устраняем её и если кластер не переходит в состояние green - читаем дальше.
Cluster status “RED”
Все грустно. Primary шарды не удалось аллоцировать для части индексов. Но не все так плохо. Самое первое - проверяем наличие места на дисках. Если настройки кластера дефолтные, то необходимо не менее 15% свободного места на дисках. Читаем внимательно про disk watermarks. Как только место на дисках освобождено, можно воспользоваться следующей командой
POST /_cluster/reroute?retry_failed
Этим магическим действием мы говорим мастеру кластера попробовать найти и аллоцировать шарды (как primary, так и replica). В большинстве случаев все будет хорошо и начнется восстановление кластера.
Важно: вызывать reroute может понадобиться несколько раз. Если количество unassigned шардов уменьшается - мы на верном пути. Повторяем до получения требуемого результата.
Если же шарды не аллоцируются, имеет смысл посмотреть причину:
GET /_cluster/allocation/explain
В большинстве случаев причина будет понятна из листинга аллокатора (читаем тут), но периодически бывает довольно печальная ситуация, когда в причине невозможности аллоцировать висят сообщения с подобным содержанием:
java.io.IOException: failed to obtain in-memory shard lock
Решение тут довольно печальное - надо будет руками копаться в файловой системе и удалять “лишние” файлики.
Берем из листинга номер шарда shard_mun и название индекса index_name и информацию о ноде, на котрой не получилось аллоцировать шард. Дальшее с помощью
GET _cat/indices/index_name?v
получаем uuid проблемного индекса. После этого идем в
data_path/nodes/0/indices/{index_uuid}/{shard_num}/index
и удаляем файлик write.lock. И рестартуем ноду. Данный шард должен успешно аллоцироваться. Радуемся и повторяем вышеописанное до получаения необходимого результата)
Cluster status “YELLOW”
Полный комплект данных у нас доступен, но есть проблемы с репликами. В подавляющем большинстве случаев причина - нехватка места. Освобождаем место и пинаем
POST /_cluster/reroute?retry_failed
Профит.