Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Настройка Elasticsearch ›Дискoвeрия и формирование кластера

Инициализация кластера

Для запуска кластера Elasticsearch в первый раз требуется явно определить начальный набор узлов, подходящих для роли мастера на одном или нескольких узлах кластера. Это известно как инициализация кластера. Это необходимо только при первом запуске кластера. Новые узлы, присоединяющиеся к работающему кластеру, получают эту информацию от избранного мастера кластера.

Начальный набор узлов, подходящих для роли мастера, определяется в настройке cluster.initial_master_nodes. Она должна быть установлена в список, содержащий один из следующих элементов для каждого узла, подходящего для роли мастера:

  • Имя узла.
  • Имя хоста узла, если node.name не установлено, так как node.name по умолчанию равно имени хоста узла. Вы должны использовать либо полное имя хоста, либо просто имя хоста в зависимости от конфигурации вашей системы.
  • IP-адрес адреса публикации транспорта узла, если невозможно использовать node.name узла. Обычно это IP-адрес, на который разрешается network.host, но это может быть переопределено.
  • IP-адрес и порт адреса публикации узла в формате IP:PORT, если невозможно использовать node.name узла и несколько узлов используют один IP-адрес.

Не устанавливайте cluster.initial_master_nodes на узлах, не подходящих для роли мастера.

После формирования кластера удалите настройку cluster.initial_master_nodes из конфигурации каждого узла и больше никогда не устанавливайте ее для этого кластера. Не настраивайте эту настройку на узлах, присоединяющихся к существующему кластеру. Не настраивайте эту настройку на перезапускающихся узлах. Не настраивайте эту настройку при полном перезапуске кластера.

Если вы оставите cluster.initial_master_nodes после формирования кластера, существует риск, что в будущем неправильная настройка приведет к инициализации нового кластера наряду с существующим. Восстановить ситуацию, не потеряв данные, может быть невозможно.

Самый простой способ создать новый кластер — выбрать один из узлов, подходящих для роли мастера, который инициализирует сам себя в кластер из одного узла, к которому затем присоединятся все остальные узлы. Этот простой подход не устойчив к сбоям до тех пор, пока другие узлы, подходящие для роли мастера, не присоединятся к кластеру. Например, если у вас есть узел, подходящий для роли мастера, с именем узла master-a, настройте его следующим образом (опустив cluster.initial_master_nodes из конфигурации всех других узлов):

cluster.initial_master_nodes: master-a

Для отказоустойчивой инициализации кластера используйте все узлы, подходящие для роли мастера. Например, если ваш кластер имеет 3 узла, подходящие для роли мастера, с именами узлов master-a, master-b и master-c, настройте их все следующим образом:

cluster.initial_master_nodes:
  - master-a
  - master-b
  - master-c

Вы должны установить cluster.initial_master_nodes в один и тот же список узлов на каждом узле, на котором оно установлено, чтобы убедиться, что во время инициализации образуется только один кластер. Если cluster.initial_master_nodes отличается на узлах, на которых оно установлено, вы можете инициализировать несколько кластеров. Восстановить ситуацию, не потеряв данные, обычно невозможно.

Форматы имен узлов должны совпадать

Имена узлов, используемые в списке cluster.initial_master_nodes, должны точно совпадать с свойствами node.name узлов. По умолчанию имя узла устанавливается в имя машины, которое может быть или не быть полным, в зависимости от конфигурации вашей системы. Если каждое имя узла является полным доменным именем, таким как master-a.example.com, то вы также должны использовать полные доменные имена в списке cluster.initial_master_nodes; аналогично, если имена ваших узлов являются простыми именами хостов (без суффикса .example.com), то вы должны использовать простые имена хостов в списке cluster.initial_master_nodes. Если вы используете смесь полных и простых имён хостов или есть какое-то другое несоответствие между node.name и cluster.initial_master_nodes, то кластер не будет успешно сформирован, и вы увидите сообщения в журнале, подобные следующим.

[master-a.example.com] master not discovered yet, this node has
not previously joined a bootstrapped (v7+) cluster, and this
node must discover master-eligible nodes [master-a, master-b] to
bootstrap a cluster: have discovered [{master-b.example.com}{...

В этом сообщении показаны имена узлов master-a.example.com и master-b.example.com, а также записи cluster.initial_master_nodes — master-a и master-b. Из этого сообщения ясно, что они не совпадают точно.

Выбор имени кластера

Настройка cluster.name позволяет создавать несколько кластеров, которые изолированы друг от друга. Узлы проверяют, что они согласны с именем кластера при первом подключении друг к другу, и Elasticsearch сформирует кластер только из узлов, у которых есть одинаковое имя кластера. Значение по умолчанию для имени кластера — elasticsearch, но рекомендуется изменить его, чтобы отразить логическое имя кластера.

Автоматическая инициализация в режиме разработки

По умолчанию каждый узел автоматически инициализируется в кластер из одного узла при первом запуске. Если любая из следующих настроек настроена, автоматическая инициализация не произойдет:

  • discovery.seed_providers
  • discovery.seed_hosts
  • cluster.initial_master_nodes

Чтобы добавить новый узел в существующий кластер, настройте discovery.seed_hosts или другие соответствующие настройки обнаружения, чтобы новый узел мог обнаружить существующие узлы, подходящие для роли мастера, в кластере. Чтобы инициализировать новый многоузловой кластер, настройте cluster.initial_master_nodes, как описано в разделе по инициализации кластера, а также discovery.seed_hosts или другие соответствующие настройки обнаружения.

Формирование одного кластера

После того, как узел Elasticsearch присоединился к существующему кластеру или инициализировал новый кластер, он не присоединится к другому кластеру. Elasticsearch не объединит отдельные кластеры после их образования, даже если вы впоследствии попытаетесь настроить все узлы в один кластер. Это происходит потому, что нет способа объединить эти отдельные кластеры без риска потери данных. Вы можете определить, что вы сформировали отдельные кластеры, проверив UUID кластера, сообщенные GET / на каждом узле.

Если вы намеревались добавить узел в существующий кластер, но вместо этого инициализировали отдельный кластер из одного узла, то вам необходимо начать заново:

  1. Отключите узел.
  2. Полностью очистите узел, удалив содержимое папки data.
  3. Настройте discovery.seed_hosts или discovery.seed_providers и другие соответствующие настройки обнаружения. Убедитесь, что cluster.initial_master_nodes не установлено ни на одном узле.
  4. Перезапустите узел и проверьте, что он присоединится к существующему кластеру, а не создаст свой собственный кластер из одного узла.

Если вы намеревались сформировать новый многоузловой кластер, но вместо этого инициализировали набор одноузловых кластеров, то вам необходимо начать заново:

  1. Отключите все узлы.
  2. Полностью очистите каждый узел, удалив содержимое их папок data.
  3. Настройте cluster.initial_master_nodes, как описано выше.
  4. Настройте discovery.seed_hosts или discovery.seed_providers и другие соответствующие настройки обнаружения.
  5. Перезапустите все узлы и проверьте, что они образовали один кластер.
  6. Удалите cluster.initial_master_nodes из конфигурации каждого узла.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/modules-discovery-bootstrap-cluster.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API