Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Настройка Elasticsearch ›Обнаружение и формирование кластера

Состояние кластера

Состояние кластера — это внутренняя структура данных, которая отслеживает различные сведения, необходимые каждому узлу, включая:

  • Идентификатор и атрибуты других узлов кластера
  • Параметры всего кластера
  • Метаданные индексов, включая карту и параметры каждого индекса
  • Расположение и состояние каждой копии фрагмента в кластере

Выбранный мастер-узел гарантирует, что каждый узел кластера имеет копию одного и того же состояния кластера. API состояния кластера позволяет получить представление об этом внутреннем состоянии для отладки или диагностики.

Публикация состояния кластера

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

Выбранный мастер-узел предоставляет ограниченное время для полного опубликования каждого обновления состояния кластера всем узлам. Оно определяется параметром cluster.publish.timeout, который по умолчанию равен 30s, отсчитываемый от момента начала публикации. Если это время истечёт до того, как новое состояние кластера будет закреплено, то изменение состояния кластера отклоняется, и избранный мастер-узел считает себя неисправным. Он отказывается от своих полномочий и начинает попытки избрать нового мастер-узла.

Если новое состояние кластера закрепляется до истечения cluster.publish.timeout, избранный мастер-узел считает изменение успешным. Он ожидает истечения тайм-аута или получения подтверждений о применении обновленного состояния каждым узлом в кластере, а затем начинает обработку и публикацию следующего обновления состояния кластера. Если некоторые подтверждения не получены (т.е. некоторые узлы ещё не подтвердили применение текущего обновления), эти узлы считаются отстающими, так как их состояние кластера отстаёт от последнего состояния избранного мастера. Избранный мастер-узел ждёт, пока отстающие узлы догонят за дополнительное время, cluster.follower_lag.timeout, которое по умолчанию равно 90s. Если узел до сих пор не успешно применил обновление состояния кластера в течение этого времени, он считается неисправным, и избранный мастер-узел удаляет его из кластера.

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

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

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

Висящие индексы

Когда узел присоединяется к кластеру, если он обнаруживает какие-либо фрагменты, хранящиеся в его локальном каталоге данных, которые ещё не существуют в состоянии кластера, он посчитает эти фрагменты принадлежащими «висящему» индексу. Вы можете перечислить, импортировать или удалить висящие индексы с помощью API «Висящие индексы».

API не может гарантировать, что импортированные данные действительно представляют последнее состояние данных, когда индекс ещё был частью кластера.

© 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/cluster-state-overview.html

Spec-Zone.ru

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