Типы масштабирования
Тип масштабирования группы виртуальных машин необходимо выбирать при создании каждой группы. Тип определяет, каким образом будет изменяться число ВМ в группе: автоматически или вручную.
Примечание
Если для группы ВМ приостановлены процессы (статус PAUSED
), она не масштабируется.
Группы с ручным масштабированием
Вы можете создавать группы ВМ фиксированного размера и управлять размером такой группы вручную, исходя из ваших текущих потребностей в вычислительных мощностях.
Группы с автоматическим масштабированием
При создании автоматически масштабируемой группы ВМ вы указываете целевое значение метрики, а сервис постоянно регулирует количество ВМ:
- Если среднее значение метрики поднимется выше целевого, Instance Groups создаст новые ВМ в группе.
- Если среднее значение опустится ниже настолько, что при сокращении размера группы среднее значение останется ниже целевого, Instance Groups удалит лишние ВМ.
Цель такой регулировки — чтобы среднее значение метрики внутри одной зоны доступности или внутри всей группы (в зависимости от типа автоматического масштабирования) не сильно отклонялось от целевого.
Например, в зоне доступности 4 ВМ, среднее значение метрики равно 70, а целевое — 80. Тогда Instance Groups не будет сокращать размер группы, так как при удалении ВМ среднее значение станет выше целевого: 4 × 70 / 3 = 93,3. Когда среднее значение упадет до 60, Instance Groups удалит одну ВМ, так как среднее значение не поднимется выше целевого: 4 × 60 / 3 = 80.
Если в настройках указано несколько метрик, то в качестве размера группы ВМ используется наибольший из вычисленных по метрикам.
Для автоматически масштабируемой группы необходимо задать общие настройки масштабирования и настройки используемых метрик.
Тип автоматического масштабирования
Сервис может регулировать количество ВМ отдельно в каждой зоне доступности, указанной в настройках группы, или во всей группе ВМ:
- При зональном масштабировании для каждой зоны доступности независимо рассчитывается свое среднее значение метрики для масштабирования и нужное количество ВМ. По умолчанию автоматическое масштабирование — зональное.
- При региональном масштабировании метрика и количество ВМ рассчитываются для всей группы. Чтобы переключить группу на региональное автоматическое масштабирование, передайте политику масштабирования
auto_scale
с ключомauto_scale_type: REGIONAL
.
Общие настройки
Чтобы регулировка не была слишком чувствительной, Instance Groups позволяет задать:
-
Период стабилизации — после увеличения количества ВМ размер группы не уменьшается до окончания периода стабилизации, даже если среднее значение метрики стало достаточно низким.
-
Время на разогрев ВМ — в течение этого времени после запуска ВМ не будут использоваться:
- нагрузка CPU;
- значения метрик мониторинга, применяемых по правилу
UTILIZATION
.
Вместо них будут использоваться средние значения метрик в группе.
-
Промежуток измерения нагрузки — значение метрики будет рассчитываться как среднее всех измерений, сделанных за указанный промежуток.
Например, нагрузка CPU может в одну секунду подняться до 100%, а в другую упасть до 10%. Чтобы игнорировать такие скачки нагрузки, Instance Groups использует среднее значение за указанный период, например за одну минуту.
Вы также можете установить ограничения на количество ВМ в группе:
- Максимальный размер группы — Instance Groups не будет создавать ВМ, если их количество достигло этого значения.
- Минимальный размер в одной зоне доступности — Instance Groups не будет удалять ВМ в зоне доступности, если их количество в этой зоне достигло этого значения.
Метрики для автоматического масштабирования
Для автоматического масштабирования вы можете использовать метрики:
- Нагрузка CPU.
- Любые метрики из сервиса Yandex Monitoring.
Нагрузка CPU
Instance Groups может управлять размером группы так, чтобы стараться поддерживать среднюю нагрузку CPU не выше целевого уровня. Средняя нагрузка CPU рассчитывается для ВМ отдельно из каждой зоны доступности или из всей группы (при зональном или региональном масштабировании соответственно).
Рассмотрим алгоритм действий сервиса вне периода стабилизации:
-
Рассчитать среднюю нагрузку CPU за указанный промежуток измерения на каждой ВМ, кроме тех, для которых не закончилось время на разогрев. На каждой ВМ нагрузка замеряется несколько раз в минуту.
-
Из полученных значений рассчитать среднюю нагрузку по зоне доступности или по всей группе.
Например, группа из 4 машин находится в одной зоне доступности. Одна из них запускается, а для остальных средняя нагрузка за промежуток измерения — 90%, 75% и 85%. Средняя нагрузка по зоне: (90 + 75 + 85) / 3 = 83.4%.
-
Получить общую нагрузку: умножить полученную среднюю нагрузку на общее количество ВМ.
В примере 83.4 × 4 = 333.6%.
-
Разделить общую нагрузку на целевой уровень нагрузки, чтобы получить требуемое количество ВМ, и округлить результат в большую сторону.
Например, целевой уровень — 75%. Значит, нужное количество 333.6 / 75 = 4.48 ~ 5 ВМ. По результатам расчета нужно создать еще одну ВМ.
После расчета и изменения количества ВМ (если оно потребовалось) Instance Groups начинает рассчитывать среднюю нагрузку заново.
Метрики мониторинга
Вы можете использовать до трех любых метрик из сервиса Monitoring для автоматического масштабирования в Instance Groups. Для чтения метрик у сервисного аккаунта, привязанного к группе ВМ, должна быть роль monitoring.viewer
или выше.
В Instance Groups при использовании метрик мониторинга необходимо указать:
- Имя метрики, которое вы задали в Monitoring.
- Метки, которые вы задали в Monitoring:
- (опционально)
folder_id
— идентификатор каталога. По умолчанию — ID каталога, в котором находится группа. - (опционально)
service
— идентификатор сервиса. По умолчанию —custom
. Метку можно использовать для указания метрик сервисов, напримерservice
со значениемcompute
для Compute Cloud.
Также укажите остальные метки, характеризующие метрику.
- Тип метрики, который влияет, как Instance Groups будет рассчитывать среднее значение метрики:
GAUGE
— используется для метрик, отображающих значение метрики в определенный момент времени, например, количество запросов в секунду к серверу на ВМ. Instance Groups вычисляет среднее значение метрики за указанный период усреднения.COUNTER
— используется для метрик, которые монотонно растут со временем, например для общего количества запросов к серверу на ВМ. Instance Groups вычисляет средний прирост метрики за указанный период усреднения.
- Тип правил применения метрики:
-
UTILIZATION
— означает, что метрика характеризует потребление ресурсов одной ВМ.Количество ВМ в зоне доступности или во всей группе (при зональном или региональном масштабировании соответственно) по
UTILIZATION
-метрике рассчитывается аналогично количеству по нагрузке CPU.При поставке в Monitoring
UTILIZATION
-метрика должна иметь меткуinstance_id
— идентификатор ВМ. -
WORKLOAD
— означает, что метрика характеризует суммарную нагрузку на все ВМ в одной зоне доступности или во всей группе (при зональном или региональном масштабировании соответственно).Чтобы рассчитать количество ВМ в зоне доступности или во всей группе по
WORKLOAD
-метрике, среднее значение метрики делится на целевое, и результат округляется вверх.Например, в зоне доступности две ВМ. Метрика характеризует суммарное количество запросов ко всем ВМ в секунду (RPS). Если целевое значение метрики — 200, то при среднем значении 450 Instance Groups увеличит количество ВМ в зоне доступности до трех: 450 / 200 = 2,25 ~ 3 ВМ.
Значение метрики рассчитывается и используется в том числе во время разогрева ВМ, указанное в общих настройках.
Если для группы работает зональное масштабирование, при поставке в Monitoring
WORKLOAD
-метрика должна иметь меткуzone_id
— идентификатор зоны доступности.
-
- Целевое значение метрики, по которому Instance Groups рассчитывает нужное количество ВМ. Для
UTILIZATION
-метрик целевое значение — это желаемый уровень потребления ресурсов каждой ВМ, дляWORKLOAD
-метрик — максимальная допустимая нагрузка на каждую ВМ.
Расчет среднего значения метрики
Для расчета среднего значения метрики используется экспоненциально взвешенное скользящее среднее
Обычное среднее рассчитывается по формуле:
где — функция метрики на временном отрезке .
В значениях метрик могут быть резкие скачки, распределенные на всем временном отрезке . При расчете обычного среднего не учитывается когда был скачок — ближе к началу временного отрезка или к концу. Это может привести к нерациональному масштабированию группы ВМ и лишним затратам на ресурсы.
Чтобы учесть момент возникновения скачка метрики, используется экспоненциально взвешенное скользящее среднее:
где — весовая функция , , позволяющая учитывать значения функции ближе к концу отрезка , то есть ближе к текущему моменту времени, с большими весами.
Коэффициент зависит от длительности измерения метрики и вычисляется по формуле:
где — это длительность измерения метрики в секундах, .