Типы масштабирования
Тип масштабирования группы виртуальных машин необходимо выбирать при создании каждой группы. Тип определяет, каким образом будет изменяться число ВМ в группе: автоматически или вручную.
Группы с ручным масштабированием
Вы можете создавать группы ВМ фиксированного размера и управлять размером такой группы вручную, исходя из ваших текущих потребностей в вычислительных мощностях.
Группы с автоматическим масштабированием
При создании автоматически масштабируемой группы ВМ вы указываете целевое значение метрики, а сервис постоянно регулирует количество ВМ так, чтобы среднее значение метрики внутри одной зоны доступности не сильно отклонялось:
- Если среднее значение метрики поднимется выше целевого, 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 использует среднее значение за указанный период, например за одну минуту.
Вы также можете установить ограничения на количество ВМ в группе:
- максимальный размер группы — 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 запускает этот процесс, и начинает рассчитывать среднюю нагрузку заново.
Метрики мониторинга
Вы можете использовать значение метрик сервиса Yandex Monitoring для автоматического масштабирования в Instance Groups.
Для этого у метрики должна быть указана дополнительная метка:
instance_id
— идентификатор ВМ, если значение метрики рассчитывается для каждой ВМ отдельно.zone_id
— идентификатор зоны доступности, если значение метрики рассчитывается для всех ВМ в одной зоне.
При записи пользовательской метрики в Yandex Monitoring также должна быть задана одна из этих меток.
В Instance Groups при использовании метрик мониторинга необходимо указать:
-
Имя метрики, которое вы задали в Yandex Monitoring.
-
Метки, которые вы задали в Yandex Monitoring:
- (опционально)
folder_id
— идентификатор каталога. По умолчанию — ID каталога, в котором находится группа. - (опционально)
service
— идентификатор сервиса. По умолчанию —service
. Метку можно использовать для указания метрик сервисов, напримерservice
со значениемcompute
для Compute Cloud.
Также укажите остальные метки, характеризующие метрику.
- (опционально)
-
Тип метрики, который влияет, как Instance Groups будет рассчитывать среднее значение метрики:
GAUGE
— используется для метрик, отображающих значение метрики в определенный момент времени, например, количество запросов в секунду к серверу на ВМ. Instance Groups вычисляет среднее значение метрики за указанный период усреднения.COUNTER
— используется для метрик, которые монотонно растут со временем, например для общего количества запросов к серверу на ВМ. Instance Groups вычисляет средний прирост метрики за указанный период усреднения.
-
Тип правил применения метрики:
UTILIZATION
— означает, что метрика применяется к одной ВМ. Сначала Instance Groups вычисляет среднее значение метрики для каждой ВМ, а затем усредняет значения для ВМ в одной зоне доступности. Этот тип метрики должен иметь меткуinstance_id
.WORKLOAD
— означает, что метрика применяется к ВМ из одной зоны доступности. Этот тип метрики должен иметь меткуzone_id
.
-
Целевое значение метрики, которое должен поддерживать Instance Groups.