Инициализация кластера
Для запуска кластера 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.name позволяет создавать несколько кластеров, которые изолированы друг от друга. Узлы проверяют, что они согласны с именем кластера при первом подключении друг к другу, и Elasticsearch сформирует кластер только из узлов, у которых есть одинаковое имя кластера. Значение по умолчанию для имени кластера — elasticsearch, но рекомендуется изменить его, чтобы отразить логическое имя кластера.
Автоматическая инициализация в режиме разработки
По умолчанию каждый узел автоматически инициализируется в кластер из одного узла при первом запуске. Если любая из следующих настроек настроена, автоматическая инициализация не произойдет:
-
discovery.seed_providers -
discovery.seed_hosts -
cluster.initial_master_nodes
Чтобы добавить новый узел в существующий кластер, настройте discovery.seed_hosts или другие соответствующие настройки обнаружения, чтобы новый узел мог обнаружить существующие узлы, подходящие для роли мастера, в кластере. Чтобы инициализировать новый многоузловой кластер, настройте cluster.initial_master_nodes, как описано в разделе по инициализации кластера, а также discovery.seed_hosts или другие соответствующие настройки обнаружения.
© 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