Учебник по перебалансировке шардов Elasticsearch

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

Elasticsearch

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

Не путайте перераспределение осколков (shard reallocation), представляющее собой процесс поиска и перемещения не назначенных осколков на узлы, на которых они находятся, с ребалансировкой. При перераспределении назначенные шейды равномерно перемещаются на различные узлы, что позволяет равномерно распределить шейды по узлам.

Как включить автоматическую ребалансировку

Чтобы включить автоматическую ребалансировку кластера в Elasticsearch, мы можем воспользоваться конечной точкой API PUT request to_cluster и добавить необходимые нам настройки.

Для динамической ребалансировки шардов доступны следующие настройки:

  • cluster.routing.rebalance.enable: Управляет автоматической ребалансировкой для различных типов шардов, например:
    • All: Включает ребалансировку шардов для всех индексов.
    • None: Отключает ребалансировку шардов для всех индексов.
    • Replicas: Разрешается ребалансировка только реплик.
    • Primary: разрешена ребалансировка только первичного шарда.
  • cluster.routing.allocation.allow_rebalance: Устанавливает значение для ребалансировки шардов. Опции включают:
    • Always: Включает ребалансировку на неопределенный срок.
    • Indices_primaries_active: Разрешает ребалансировку только тогда, когда все первичные шарды в кластере распределены.
    • Indices_all_active: Позволяет выполнять ребалансировку, когда в кластере выделены только шарды. Сюда входят как первичные, так и реплики шардов.
  • cluster.routing.allocation.cluster.concurrent.rebalance: Эта опция задает количество одновременных ребалансировок, разрешенных в кластере. Значение по умолчанию равно 2.

Рассмотрим приведенный ниже запрос для разрешения автоматической ребалансировки шардов в кластере.

Ниже приведена команда cURL:

Эта команда должна вернуть ответ, так как JSON-объект подтверждает обновленные настройки.

Ручная ребалансировка индексов

Вы также можете вручную перебалансировать шард для определенного индекса. Я бы не рекомендовал использовать этот вариант, поскольку стандартные опции ребалансировки Elasticsearch очень эффективны.

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

Следует помнить, что при выполнении ручной ребалансировки Elasticsearch может автоматически перемещать шарды для обеспечения наилучшей ребалансировки.

Заключение

В этом руководстве мы рассмотрели обновление и изменение настроек кластера Elasticsearch для включения автоматической ребалансировки шардов. В статье также рассмотрена ручная ребалансировка, если она вам необходима.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий