SystemdDoctor
служба не работает поиск кластеры

Узел поиска не входит в кластер: имя кластера не совпадает

Узлы находят друг друга по списку адресов и проверяют имя кластера. Несовпадение имени означает, что узел образует собственный кластер из одного себя — при этом он исправно работает и отвечает, что усложняет обнаружение проблемы.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Имя кластера отличается от остальных узлов

    Узел с другим именем не присоединяется. Он поднимает свой кластер и принимает данные отдельно.

  2. Список узлов для обнаружения неполный

    Узел не знает, к кому обращаться. Без начального списка обнаружение не работает вовсе.

  3. Узел слушает только петлевой адрес

    С петлевым адресом узел недоступен остальным. Обнаружение не проходит в обе стороны.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Имя кластера, число узлов и состояние.

curl -s localhost:9200/_cluster/health 2>/dev/null

Какие узлы видит этот узел.

curl -s localhost:9200/_cat/nodes?v 2>/dev/null

Сообщения об обнаружении узлов.

journalctl -u elasticsearch -n 30 --no-pager | grep -iE "cluster|discovery|master"

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Имя кластера отличается от остальных узлов
Почему происходит
Узел с другим именем не присоединяется. Он поднимает свой кластер и принимает данные отдельно.
Как проверить
Посмотрите имя кластера и состав.
curl -s localhost:9200/_cluster/health 2>/dev/null | head -c 300; echo
sudo grep -iE "^cluster.name" /etc/elasticsearch/elasticsearch.yml 2>/dev/null
Как исправить
Приведите имя кластера к одному значению на всех узлах. Данные, попавшие в отдельный кластер, придётся переносить отдельно.
2. Список узлов для обнаружения неполный
Почему происходит
Узел не знает, к кому обращаться. Без начального списка обнаружение не работает вовсе.
Как проверить
Посмотрите настройки обнаружения.
sudo grep -iE "^(discovery.seed_hosts|cluster.initial_master_nodes)" /etc/elasticsearch/elasticsearch.yml 2>/dev/null
Как исправить
Задайте адреса остальных узлов в списке обнаружения. Начальный список главных узлов нужен только при первом запуске кластера.
3. Узел слушает только петлевой адрес
Почему происходит
С петлевым адресом узел недоступен остальным. Обнаружение не проходит в обе стороны.
Как проверить
Посмотрите адрес прослушивания.
sudo ss -tlnp | grep -E ":9200|:9300"
sudo grep -iE "^network.host" /etc/elasticsearch/elasticsearch.yml 2>/dev/null
Как исправить
Привяжите узел к адресу, доступному остальным, и ограничьте доступ брандмауэром. Открывать порты кластера во внешнюю сеть нельзя.

Пример вывода

Узел образовал собственный кластер из одного себя. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

$ curl -s localhost:9200/_cluster/health
{"cluster_name":"logs-prod-2","status":"green","number_of_nodes":1,...}

elasticsearch[12000]: master node changed {previous [], current [{node-3}]}
elasticsearch[12000]: elected-as-master ([1] nodes joined)

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация Elasticsearch: обнаружение узлов документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено узлом с другим именем кластера.
    собственная проверка, systemd 255
    сверено 15 сентября 2026