Инициализация кластера
Для запуска кластера Elasticsearch в первый раз требуется явно определить начальный набор узлов, способных выполнять роль мастера на одном или нескольких из них. Это называется инициализацией кластера. Это необходимо только при первом запуске кластера: узлы, которые уже присоединились к кластеру, хранят эту информацию в папке данных для использования при полной перезагрузке кластера, а только что запущенные узлы, присоединяющиеся к работающему кластеру, получают эту информацию от избранного мастера кластера.
Начальный набор узлов, способных выполнять роль мастера, определяется в параметре. Он должен содержать список, включающий один из следующих элементов для каждого узла, способного выполнять роль мастера:
- Имя узла.
- Имя хоста узла, если
node.nameне задано, так какnode.nameпо умолчанию равно имени хоста узла. Необходимо использовать либо полное доменное имя, либо просто имя хоста в зависимости от конфигурации системы. - IP-адрес транспортного адреса опубликования узла, если нельзя использовать
node.nameузла. Обычно это IP-адрес, к которомуnetwork.hostвыполняет разрешение, но это можно переопределить здесь. - IP-адрес и порт адреса опубликования узла в формате
IP:PORT, если нельзя использоватьnode.nameузла и несколько узлов используют один IP-адрес.
При запуске узла, способного выполнять роль мастера, этот параметр можно указать в командной строке или в файле elasticsearch.yml. После формирования кластера удалите этот параметр из конфигурации каждого узла. Он не должен быть задан для узлов, не способных выполнять роль мастера, узлов, присоединяющихся к существующему кластеру, или при перезапуске одного или нескольких узлов.
Технически достаточно задать cluster.initial_master_nodes на одном узле, способном выполнять роль мастера в кластере, и упомянуть только этот узел в значении параметра, но это не обеспечивает отказоустойчивость до полного формирования кластера. Поэтому лучше всего использовать как минимум три узла, способных выполнять роль мастера, каждый с параметром cluster.initial_master_nodes, содержащим все три узла.
Необходимо задать cluster.initial_master_nodes один и тот же список узлов на каждом узле, на котором он задан, чтобы быть уверенным, что во время инициализации сформируется только один кластер, и, следовательно, чтобы избежать риска потери данных.
Для кластера с 3 узлами, способными выполнять роль мастера (с именами узлов master-a, master-b и master-c), конфигурация будет выглядеть следующим образом:
cluster.initial_master_nodes: - master-a - master-b - master-c
Как и все параметры узла, начальный набор узлов, способных выполнять роль мастера, также можно указать в командной строке, используемой для запуска Elasticsearch:
bin/elasticsearch -E cluster.initial_master_nodes=master-a,master-b,master-c
Выбор имени кластера
Параметр cluster.name позволяет создавать несколько кластеров, которые изолированы друг от друга. Узлы проверяют, что они согласны с именем своего кластера, когда они впервые подключаются друг к другу, и Elasticsearch сформирует кластер только из узлов, у которых есть одно и то же имя кластера. Значение по умолчанию для имени кластера — elasticsearch, но рекомендуется изменить его, чтобы отразить логическое имя кластера.
Автоматическая инициализация в режиме разработки
Если кластер работает с полностью стандартной конфигурацией, он автоматически инициализирует кластер на основе узлов, которые могут быть обнаружены на том же хосте в течение короткого времени после запуска. Это означает, что по умолчанию можно запустить несколько узлов на одном компьютере и иметь их автоматическое формирование кластера, что очень полезно для сред разработки и экспериментов. Однако, поскольку узлы могут не всегда успешно обнаруживать друг друга достаточно быстро, этой автоматической инициализации нельзя доверять, и её нельзя использовать в производственных развертываниях.
Если любой из следующих параметров настроен, автоматическая инициализация не будет выполняться, и вы должны настроить cluster.initial_master_nodes, как описано в разделе по инициализации кластера:
-
discovery.seed_providers -
discovery.seed_hosts -
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/7.17/modules-discovery-bootstrap-cluster.html