Оптимизация размеров и автомасштабирование
Проанализируйте данные о производительности VM, чтобы оптимизировать размеры экземпляров, реализуйте плановое автомасштабирование для предсказуемых рабочих нагрузок и используйте точечные экземпляры VMSS для пакетных рабочих нагрузок.
«Оптимизация размеров и автомасштабирование» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Что такое изменение размера ресурсов
Изменение размера ресурсов — это подбор SKU Azure VM или службы в соответствии с фактическими требованиями рабочей нагрузки: без избыточного выделения ресурсов (что приводит к лишним расходам) и без недостаточного выделения (что создаёт риск снижения производительности). При миграции из локальной среды большинство организаций изначально выделяют на 30–50% больше ресурсов из соображений осторожности. Регулярный анализ размеров ресурсов, обычно ежемесячный, позволяет вернуть значительную часть переплаты без негативного влияния на производительность приложения.
Анализ данных о производительности VM
Используйте метрики Azure Monitor и VM Insights, чтобы собирать данные о CPU, памяти, дисковых IOPS и пропускной способности сети как минимум за 30 дней. Учитывайте пиковую загрузку (P95 или P99), а не среднюю, чтобы VM подходящего размера могла справляться со скачками трафика. По умолчанию рекомендация Azure Advisor по изменению размера анализирует предыдущие 7 дней, но в конфигурации Advisor этот период можно увеличить до 30 или 60 дней для получения более репрезентативных данных.
# Get P95 CPU utilisation for a VM over 30 days
az monitor metrics list \
--resource /subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM \
--metric 'Percentage CPU' \
--aggregation Percentile \
--interval P1D \
--start-time 2024-05-01T00:00:00Z \
--end-time 2024-06-01T00:00:00ZСемейства SKU VM и изменение размера
VM Azure организованы в семейства SKU, оптимизированные для разных рабочих нагрузок: D-series (общего назначения), E-series (оптимизированные для памяти), F-series (оптимизированные для вычислений), N-series (GPU) и L-series (оптимизированные для хранилищ). Если загрузка CPU VM низкая, а использование памяти высокое, переход с D-series на E-series при том же количестве vCPU обеспечивает больше RAM при аналогичной стоимости. Изменение размера VM в Azure обычно требует кратковременного перезапуска продолжительностью несколько минут.
# Resize a VM to a smaller SKU
az vm resize \
--resource-group myRG \
--name myVM \
--size Standard_D2s_v5Запланированное автоматическое масштабирование для предсказуемых рабочих нагрузок
Запланированное автоматическое масштабирование подходит, когда закономерности рабочей нагрузки предсказуемы. Для розничного приложения с высокой посещаемостью в рабочие часы и почти нулевой нагрузкой ночью можно настроить расписание масштабирования с увеличением на 07:00 и расписание масштабирования с уменьшением на 22:00. Virtual Machine Scale Sets (VMSS) и App Service поддерживают правила запланированного автоматического масштабирования. Такой подход проще и обеспечивает более предсказуемые затраты, чем автоматическое масштабирование на основе метрик при известных закономерностях нагрузки.
# Add a scheduled autoscale rule to a VMSS (scale out at 07:00, in at 22:00 UTC)
az monitor autoscale create \
--resource-group myRG \
--resource myVMSS \
--resource-type Microsoft.Compute/virtualMachineScaleSets \
--name myAutoscale \
--min-count 2 --max-count 10 --count 2Автоматическое масштабирование на основе метрик
Автоматическое масштабирование на основе метрик динамически добавляет или удаляет экземпляры в ответ на метрики реального времени, такие как процент загрузки CPU, длина очереди HTTP-запросов или пользовательские метрики, публикуемые через Azure Monitor. Вы определяете правила масштабирования с увеличением (когда добавлять экземпляры) и правила масштабирования с уменьшением (когда удалять экземпляры), задавая периоды охлаждения для предотвращения частых колебаний. Рекомендуется устанавливать порог масштабирования с увеличением ниже порога масштабирования с уменьшением — например, увеличивать масштаб при загрузке CPU выше 70% и уменьшать при загрузке ниже 30%, — с пятиминутным периодом охлаждения.
# Add a metric-based scale-out rule (CPU > 70% for 5 minutes)
az monitor autoscale rule create \
--autoscale-name myAutoscale \
--resource-group myRG \
--scale out 1 \
--condition 'Percentage CPU > 70 avg 5m'Экземпляры VMSS Spot для пакетных нагрузок
Azure Spot VMs позволяют использовать неиспользуемые ресурсы Azure со скидкой до 90% по сравнению с тарифами с оплатой по мере использования. Компромисс заключается в том, что Azure может изъять spot-VM с уведомлением за 30 секунд, когда ресурсы снова понадобятся. Поэтому spot-экземпляры идеально подходят для прерываемых пакетных нагрузок, таких как рендеринг, научные вычисления и конвейеры обработки данных. VMSS поддерживает смешивание обычных VM (для базовой нагрузки) и spot-VM (для резкого увеличения нагрузки) в одном масштабируемом наборе с использованием политики смешивания приоритетов.
# Create a VMSS with spot instances for batch workloads
az vmss create \
--resource-group myRG \
--name myBatchVMSS \
--image UbuntuLTS \
--priority Spot \
--eviction-policy Deallocate \
--max-price -1 \
--instance-count 5Автомасштабирование App Service
Автомасштабирование Azure App Service работает на уровне плана App Service: оно добавляет или удаляет рабочие экземпляры на основе настроенных Вами правил. Доступные триггеры метрик включают длину очереди HTTP, процент загрузки CPU и процент использования памяти. Уровень Standard и выше поддерживает ручное масштабирование и автомасштабирование, а уровень Basic — только ручное масштабирование. Для бессерверных нагрузок рассмотрите функции Azure в плане потребления: они масштабируются до нуля и тарифицируются только за выполнение, полностью устраняя затраты на простаивающие экземпляры.
# Enable autoscale on an App Service plan
az monitor autoscale create \
--resource-group myRG \
--resource myAppServicePlan \
--resource-type Microsoft.Web/serverfarms \
--name webAppAutoscale \
--min-count 1 --max-count 5 --count 1Ошибки автомасштабирования, которых следует избегать
Распространённые ошибки автомасштабирования: привязка сеанса — если приложение хранит состояние сеанса в памяти VM, масштабирование внутрь приведёт к потере сеансов; вместо этого используйте Redis Cache или сеансы на основе базы данных. Медленный запуск — если прогрев VM или контейнеров занимает 10 минут, автомасштабирование на основе метрик не сможет отреагировать достаточно быстро; выполняйте предварительный прогрев с помощью запланированного масштабирования наружу перед ожидаемыми пиковыми нагрузками. Слишком агрессивное масштабирование внутрь — завершение работы экземпляров во время обработки запросов приводит к ошибкам; настройте отвод соединений и достаточно длительный период ожидания после масштабирования.
Оптимизация размеров баз данных и PaaS
Оптимизация размеров применяется и к службам PaaS. Для Azure SQL Database на модели DTU можно уменьшить размер, если процент DTU стабильно ниже 50%. Модель vCore позволяет независимо масштабировать CPU и хранилище. Размер Azure Cache for Redis можно уменьшить, перейдя с уровня Premium на Standard, если постоянное хранение и георепликация не нужны. Пулы узлов Azure Kubernetes Service могут использовать автомасштабировщик кластера для масштабирования узлов внутрь и наружу в зависимости от состояния ожидающих и простаивающих модулей.
# Change Azure SQL Database service objective (tier)
az sql db update \
--resource-group myRG \
--server mySQLServer \
--name myDatabase \
--service-objective S2Непрерывная практика оптимизации размеров
Оптимизация размеров — это не разовая задача. Нагрузки со временем меняются: меняется характер трафика, добавляются функции, увеличивается или сокращается база пользователей. Включите ежемесячный анализ размеров в процесс FinOps: получайте рекомендации Advisor, анализируйте 10 наиболее недоиспользуемых VM и избыточно выделенных служб PaaS и создавайте рабочие задачи для ответственных команд. Отслеживайте реализованную экономию по сравнению с созданными рекомендациями, чтобы демонстрировать руководству ROI FinOps.
Сочетание оптимизации размеров с резервированием
Оптимальная стратегия управления затратами: сначала оптимизировать размер, затем выполнить резервирование. Покупка Reserved VM Instance для VM с избыточно большим размером закрепляет обязательство за неподходящим SKU. Сначала измените размер VM на правильный, затем в течение 30 дней наблюдайте за новым уровнем Utilization, чтобы подтвердить стабильность, и после этого приобретите резервирование для этого SKU с оптимизированным размером. Такой двухэтапный подход позволяет получить максимальную скидку и избежать неиспользуемых зарезервированных ресурсов.
Быстрая проверка
Проверьте своё понимание концепций Microsoft Azure Fundamentals (AZ-900) из этого урока.
Итоги урока
В этом уроке Вы узнали, что оптимизация размеров сопоставляет SKU VM с фактическими требованиями нагрузки с помощью показателей производительности, запланированное автомасштабирование и автомасштабирование на основе метрик динамически изменяют объём ресурсов в соответствии со спросом, а Spot VM обеспечивают скидки до 90% для прерываемых пакетных нагрузок. Далее мы рассмотрим Azure Savings Plans и Reservations для нагрузок с зафиксированными обязательствами.
Изучай Cloud & IT Cert Prep с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 150
- Уроки
- 600
Часто задаваемые вопросы
Урок «Оптимизация размеров и автомасштабирование» бесплатный?
Да — полный текст урока «Оптимизация размеров и автомасштабирование» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Чему я научусь в уроке «Оптимизация размеров и автомасштабирование»?
Проанализируйте данные о производительности VM, чтобы оптимизировать размеры экземпляров, реализуйте плановое автомасштабирование для предсказуемых рабочих нагрузок и используйте точечные экземпляры… Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?
Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Оптимизация размеров и автомасштабирование»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?
Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Выявление и устранение потерь
- Оптимизация размеров и автомасштабирование
- Планы экономии Azure и резервирования
- FinOps и модели распределения затрат