Если у кластера Elasticsearch имеется избыточная ёмкость из‑за непикового трафика или уменьшения объёмов данных, вы можете уменьшить количество его узлов для оптимизации расходов.
Тип | Сценарий | Процесс изменения |
|---|---|---|
Удаление узлов случайным образом | Случайным образом удаляет узлы кластера для оптимизации расходов. |
Узлы удаляются по одному, чтобы не прерывать работу сервисов. |
Удаление указанных узлов | Удаляет указанные узлы кластера для оптимизации расходов. |
Для кластера с оплатой по использованию вы можете увидеть его новую цену при подтверждении масштабирования вниз в консоли. После завершения масштабирования вниз кластер будет оплачиваться по новой цене.
Например, если в кластере три data node, три client node и три cold data node, максимальное количество узлов, которое можно удалить за один раз, равно двум. Формула: (3+3)/2 = 3; и количество узлов, которое можно удалить, должно быть меньше 3, поэтому правильный результат — 2.
Например, если максимальное количество реплик для всех индексов в кластере равно 2, общее количество data nodes и cold data nodes после масштабирования вниз должно быть не менее 3.
Например, если в кластере два data node и пять master node, для текущей операции масштабирования вниз можно удалить только два master node. Формула: 5/2 = 2.5; и количество узлов, которое можно удалить, должно быть меньше 2.5, поэтому правильный результат — 2.
Node Type | Value Range |
|---|---|
Data nodes |
|
Master nodes | 3, 5, 7, или 9 (должно быть нечётным числом от 3 до 9) |
Client nodes | 1~64 |
Холодные узлы данных | 1–32 |
Перед изменением ознакомьтесь с возможными воздействиями и рекомендациями по эксплуатации, а также разработайте план по минимизации этих воздействий.
Во время масштабирования вниз (scale-in) шарды на удаляемых узлах мигрируют на оставшиеся узлы. Этот процесс будет потреблять I/O‑производительность. Поэтому рекомендуется выполнять операцию в непиковые часы.
Чтобы минимизировать это воздействие, рекомендуется регулировать скорость миграции данных в соответствии с циклом нагрузки Кластера: увеличить скорость миграции данных в непиковые часы, чтобы сократить продолжительность задачи, и уменьшить её перед пиковыми часами, чтобы обеспечить оптимальную производительность Кластера. Скорость миграции данных определяется параметром indices.recovery.max_bytes_per_sec. Значение параметра по умолчанию равно количеству vCPU, умноженному на 8 МБ. Например, при четырёх vCPU скорость миграции данных составляет 32 МБ/с. Вы можете изменить её в соответствии с требованиями сервиса.
После масштабирования вниз (scale-in) оставшиеся узлы должны будут обрабатывать всю нагрузку Кластера. Это может привести к повышенному использованию CPU, памяти и дискового I/O, влияя на производительность запросов и загрузки данных. При неравномерном распределении шардов могут возникнуть узкие места в производительности. Поэтому перед масштабированием вниз необходимо оценить, способны ли оставшиеся узлы справиться с текущей нагрузкой Кластера.
После запуска задачу масштабирования нельзя остановить, пока она не завершится успешно или не завершится с ошибкой.
Для оценки длительности операции масштабирования вниз (scale-in) можно использовать следующую формулу:
Scale-in duration (min) = 5 (min) x Number of nodes to be removed + Data migration duration (min)
где 5 минут — это типичное время выполнения операций, не связанных с миграцией данных (например, инициализация), на один узел. Это эмпирическое значение.
Data migration duration (min) = Total data size of the nodes to be removed (MB) ÷ [Total number of vCPUs of the data nodes x 8 (MB/s) x 60 (s)]
где,
Параметр | Описание |
|---|---|
Action | Выберите Scale in. |
Resources | Количество ресурсов уменьшено. |
Nodes | Уменьшите количество узлов в столбце Nodes. Вы можете изменить несколько типов узлов одновременно. Для диапазона количеств узлов, поддерживаемых каждым типом узла, см. Constraints. |
Параметр | Описание |
|---|---|
Тип узла | Разверните тип узла, который необходимо изменить, чтобы отобразить все узлы под ним. Выберите узлы, которые нужно удалить. |
Во время миграции данных система переносит все данные с удаляемых узлов на оставшиеся узлы и удаляет эти узлы после завершения миграции данных. Если данные на удаляемых узлах имеют реплики на других узлах, миграцию данных можно пропустить, и изменение кластера будет выполнено быстрее.