Для правильного запуска кластера Elasticsearch необходимо, чтобы в нем был определен главный узел. Кроме того, для избрания главного узла требуется кворум в 50 %, и один из узлов должен иметь право голоса. Если в кластере нет кворума, он не запустится. Дополнительную информацию можно найти в этом руководстве по проблеме раздвоения мозга.
Возможные причины
Неправильные настройки обнаружения
Если вы получаете это предупреждение в журналах:
1 | Master node not discovered yet this node has not previously joined a bootstrapped cluster |
Тогда наиболее вероятное объяснение - неправильные настройки в файле elasticsearch.yml, которые не позволяют узлу корректно обнаруживать узлы.
1 2 3 4 | discovery.seed_hosts: - 192.168.1.2:9300 - 192.168.1.3 - nodes.mycluster.local |
Чтобы функция обнаружения работала, начальные узлы должны содержать список узлов кластера (из которых хотя бы один должен быть доступен при первом присоединении узла к кластеру).
Если кластер запускается впервые, то также важна следующая настройка:
1 2 3 4 | cluster.initial_master_nodes: - master-node-name1 - master-node-name2 - master-node-name3 |
Обратите внимание, что здесь настройки - это имена узлов (а не IP-адреса) подходящих мастер-узлов, которые имеют эту настройку:
1 | node.master: true |
Мастер не избран
Если вы видите сообщение:
1 | master not discovered or elected yet, an election requires at least 2 nodes with ids from [UIDIdndidisz98dkhslihn, xkenftjsiasnKKKhdb s, YZ6m2ioDQWqi1cNnOteB5w] |
Это говорит о том, что в кластере ранее существовало несколько мастер-узлов, но теперь их недостаточно. Вероятная причина заключается в том, что мастер-узлы были удалены из кластера, и поэтому не был достигнут кворум для избрания нового мастер-узла. Если вы недавно прекратили работу мастер-узлов, то вам нужно будет добавить их обратно или подождать, пока Elasticsearch настроит кворум в соответствии с реальным количеством доступных мастер-узлов.
Проблемы со стабильностью узлов
Если мастер узлы также имеют роль узлов данных и испытывают нагрузку из-за интенсивного индексирования или поиска, это может привести к их недоступности, что, в свою очередь, может повлиять на способность кластера избрать нового ведущего узла. В кластерах, на которые приходится большая нагрузка при индексировании или поиске, рекомендуется создавать выделенные мастер-узлы.
Если на тех же машинах, что и мастер-узлы, работают другие приложения, то возможно, что эти процессы могут оставить мастер-узел с недостаточными ресурсами для выполнения своей работы, что приведет к нестабильности кластера.
В частности, если вы управляете кластером с помощью технологий контейнеризации, таких как Docker или Kubernetes, убедитесь, что вашим главным узлам гарантировано достаточно ресурсов для выполнения их работы и что они не дестабилизированы другими процессами, запущенными на хост-машинах, на которых работают главные узлы.