Типы масштабирования

Тип масштабирования группы виртуальных машин необходимо выбирать при создании каждой группы. Тип определяет каким образом будет изменяться число виртуальных машин в группе: автоматически или вручную.

Группы с ручным масштабированием

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

Группы с автоматическим масштабированием

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

  • Если среднее значение метрики поднимется выше целевого, Instance Groups создаст новые виртуальные машины в группе.

  • Если среднее значение опустится ниже настолько, что при сокращении размера группы среднее значение останется ниже целевого, то Instance Groups удалит лишние виртуальные машины.

    Например, в зоне доступности 4 виртуальных машины, среднее значение метрики равно 70, а целевое — 80. Тогда Instance Groups не будет сокращать размер группы, так как при удалении виртуальной машины среднее значение станет выше целевого значения: 4 × 70 / 3 = 93,3. Когда среднее значение упадет до 60, Instance Groups удалит одну виртуальную машину, так как среднее значение не поднимется выше целевого: 4 × 60 / 3 = 80.

Для автоматически масштабируемой группы необходимо задать общие настройки масштабирования и настройки используемых метрик.

Общие настройки

Чтобы регулировка не была слишком чувствительной, Instance Groups позволяет задать:

  • период стабилизации — после увеличения количества машин в группе машины не удаляются до окончания периода стабилизации, даже если среднее значение метрики стало достаточно низким.

  • период прогрева — в течение этого времени после запуска виртуальной машины данные с этой машины не будут использоваться. Вместо них будут использоваться средние значения метрики в группе.

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

  • период усреднения — все значения метрик будут усредняться за этот период.

    Например, нагрузка CPU может в одну секунду подняться до 100%, а в другую упасть до 10%. Чтобы игнорировать такие скачки нагрузки, Instance Groups использует среднее значение за указанный период, например за 1 минуту.

Вы также можете установить ограничения на количество виртуальных машин в группе:

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

Метрики для автоматического масштабирования

Для автоматического масштабирования вы можете использовать метрики:

Нагрузка CPU

Instance Groups может управлять размером группы так, чтобы поддерживать среднюю нагрузку CPU на целевом уровне. Средняя нагрузка CPU рассчитывается для виртуальных машин из одной группы и из одной зоны доступности.

Рассмотрим алгоритм действий сервиса вне периода стабилизации:

  1. Рассчитать среднюю нагрузку CPU на каждой виртуальной машине, кроме тех, для которых не закончился период прогрева. На каждой ВМ нагрузка замеряется несколько раз в минуту. Полученные значения усредняются для каждой машины по периоду усреднения, который вы задаете при создании группы.

  2. Рассчитав среднюю нагрузку по каждой машине, дополнительно усреднить ее по зонам доступности.

    Например, группа из 4 машин находится целиком в одной зоне. Одна из них запускается, а для остальных нагрузка 90%, 75% и 85%. Средняя нагрузка по зоне: (90+75+85) / 3 = 83.4%

  3. Получить общую нагрузку: умножить полученную среднюю нагрузку на общее количество машин. В примере — 83.4 × 4 = 333.6%

  4. Разделить общую нагрузку на целевой уровень нагрузки по зоне, чтобы получить требуемое количество машин (результат округлить в большую сторону). Например, целевой уровень — 75%. Значит, нужное количество машин 333.6 / 75 = 4.48 ~ 5 ВМ.

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

Пользовательские метрики

Если вы записываете пользовательскую метрику в сервисе Yandex Monitoring, вы можете использовать значения этой метрики для автоматического масштабирования в Instance Groups.

В Yandex Monitoring при записи метрики укажите дополнительные метки:

  • instance_group_id — идентификатор группы виртуальных машин.
  • zone_id — идентификатор зоны доступности, если значение метрики рассчитывается для всех виртуальных машин в одной зоне.
  • instance_id — идентификатор виртуальной машины, если значение метрики рассчитывается для каждой виртуальной машины отдельно.

В Instance Groups при использовании этой метрики необходимо указать:

  • Имя метрики, которое вы указали в Yandex Monitoring.
  • Целевое значение метрики, которое должен поддерживать Instance Groups.
  • Тип метрики, который влияет на то, как Instance Groups будет рассчитывать среднее значение метрики:
    • GAUGE — используется для метрик, отображающих значение метрики в определенный момент времени, например количество запросов в секунду к серверу на виртуальной машине. Instance Groups вычисляет среднее значение метрики за указанный период усреднения.
    • COUNTER — используется для метрик, которые монотонно растут со временем, например для общего количества запросов к серверу на виртуальной машине. Instance Groups вычисляет средний прирост метрики за указанный период усреднения.
  • Тип правил применения метрики:
    • UTILIZATION — означает, что метрика применяется к одной виртуальной машине. Сначала Instance Groups вычисляет среднее значение метрики для каждой виртуальной машины, а затем усредняет значения для машин в одной зоне доступности. Этот тип метрики должен иметь метку instance_id.
    • WORKLOAD — означает, что метрика применяется к виртуальным машинам из одной зоны доступности. Этот тип метрики должен иметь метку zone_id.

См. также