Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Руководство [7.17] ›Настройка Elasticsearch ›Открытие и формирование кластера

Открытие

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

Этот процесс начинается со списка адресов seed из одного или нескольких поставщиков seed-узлов, а также с адресов любых узлов, имеющих право быть мастер-узлами, которые были в последнем известном кластере. Процесс проходит в две фазы: Во-первых, каждый узел зондирует адреса seed, подключаясь к каждому адресу и пытаясь определить узел, к которому он подключен, и проверить, имеет ли он право быть мастер-узлом. Во-вторых, в случае успеха, он делится с удалённым узлом списком всех своих известных узлов с правом быть мастер-узлом, а удалённый узел в свою очередь отвечает списком своих узлов. Затем узел зондирует все новые узлы, которые он только что обнаружил, запрашивает их узлы и так далее.

Если узел не имеет права быть мастер-узлом, то он продолжает этот процесс открытия до тех пор, пока не обнаружит избранного мастер-узла. Если избранный мастер не будет обнаружен, узел повторит попытку через discovery.find_peers_interval, что по умолчанию равно 1s.

Если узел имеет право быть мастер-узлом, то он продолжает этот процесс открытия до тех пор, пока не обнаружит избранный мастер-узел или обнаружит достаточно узлов с правом быть мастер-узлом без мастера, чтобы завершить выборы. Если ни одно из этих условий не выполняется достаточно быстро, узел повторит попытку через discovery.find_peers_interval, что по умолчанию равно 1s.

Поставщики seed-узлов

По умолчанию модуль формирования кластера предлагает два поставщика seed-узлов для настройки списка узлов-семян: поставщик seed-узлов на основе настроек и поставщик seed-узлов на основе файла. Он может быть расширен для поддержки облачных сред и других типов поставщиков seed-узлов через плагины открытия. Поставщики seed-узлов настраиваются с помощью параметра discovery.seed_providers, который по умолчанию равен поставщику узлов на основе настроек. Этот параметр принимает список различных поставщиков, позволяя использовать несколько способов поиска seed-узлов для вашего кластера.

Каждый поставщик seed-узлов возвращает IP-адреса или имена хостов seed-узлов. Если он возвращает какие-либо имена хостов, они преобразуются в IP-адреса с помощью поиска DNS. Если имя хоста разрешается до нескольких IP-адресов, Elasticsearch пытается найти seed-узел по всем этим адресам. Если поставщик узлов явно не указывает TCP-порт узла, он неявно использует первый порт в диапазоне портов, заданном параметром transport.profiles.default.port или параметром transport.port, если параметр transport.profiles.default.port не задан. Количество одновременных поисков контролируется параметром discovery.seed_resolver.max_concurrent_resolvers, который по умолчанию равен 10, а время ожидания для каждого поиска контролируется параметром discovery.seed_resolver.timeout, который по умолчанию равен 5s. Обратите внимание, что запросы DNS зависят от кэширования DNS JVM.

Поставщик seed-узлов на основе настроек

Поставщик seed-узлов на основе настроек использует параметр узла для настройки статического списка адресов seed-узлов. Эти адреса могут быть указаны как имена хостов или IP-адреса; хосты, указанные как имена хостов, преобразуются в IP-адреса во время каждого цикла открытия.

Список хостов устанавливается с помощью статического параметра discovery.seed_hosts. Например:

discovery.seed_hosts:
   - 192.168.1.10:9300
   - 192.168.1.11 
   - seeds.mydomain.com 

Порт по умолчанию будет transport.profiles.default.port, и будет использоваться transport.port, если не указан.

Если имя хоста разрешается до нескольких IP-адресов, Elasticsearch будет пытаться подключиться ко всем разрешённым адресам.

Поставщик seed-узлов на основе файла

Поставщик seed-узлов на основе файла настраивает список хостов через внешний файл. Elasticsearch перезагружает этот файл при изменении, так что список seed-узлов может динамически изменяться без необходимости перезапуска каждого узла. Это предоставляет удобный механизм для экземпляра Elasticsearch, работающего в контейнере Docker, для динамического получения списка IP-адресов для подключения, когда эти IP-адреса могут быть неизвестны при запуске узла.

Для включения открытия на основе файла настройте поставщика узлов file следующим образом в файле elasticsearch.yml:

discovery.seed_providers: file

Затем создайте файл в $ES_PATH_CONF/unicast_hosts.txt в формате, описанном ниже. Каждый раз, когда вносятся изменения в файл unicast_hosts.txt, эти новые изменения будут подхвачены Elasticsearch, и будет использован новый список узлов.

Обратите внимание, что плагин открытия на основе файла дополняет список узлов unicast в elasticsearch.yml: если в discovery.seed_hosts есть действительные адреса seed-узлов, Elasticsearch использует эти адреса в дополнение к тем, которые указаны в unicast_hosts.txt.

Файл unicast_hosts.txt содержит одну запись узла на строку. Каждая запись узла состоит из хоста (имени хоста или IP-адреса) и необязательного номера порта транспортного уровня. Если номер порта указан, он должен следовать непосредственно за именем хоста (в той же строке), разделённый символом :. Если номер порта не указан, Elasticsearch неявно использует первый порт в диапазоне портов, заданном параметром transport.profiles.default.port или параметром transport.port, если параметр transport.profiles.default.port не задан.

Например, это пример unicast_hosts.txt для кластера с четырьмя узлами, участвующими в открытии, некоторые из которых не работают на стандартном порте:

10.10.10.5
10.10.10.6:9305
10.10.10.5:10005
# an IPv6 address
[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:9301

Разрешены имена хостов вместо IP-адресов и они преобразуются в IP-адреса с помощью DNS, как описано выше. IPv6-адреса должны быть указаны в скобках, а порт, если требуется, должен идти после скобок.

Вы также можете добавить комментарии в этот файл. Все комментарии должны начинаться с # в начале строки (т.е. комментарии не могут начинаться посередине строки).

Поставщик узлов EC2

Плагин открытия EC2 добавляет поставщика узлов, который использует API AWS для поиска списка seed-узлов.

Поставщик узлов Azure Classic

Плагин открытия Azure Classic добавляет поставщика узлов, который использует API Azure Classic для поиска списка seed-узлов.

Поставщик узлов Google Compute Engine

Плагин открытия GCE добавляет поставщика узлов, который использует API GCE для поиска списка seed-узлов.

© 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-hosts-providers.html

Spec-Zone.ru

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