0Pricing
Azure Fundamentals · Урок

Автомасштабирование и пользовательские домены

Настраивайте правила масштабирования на основе показателей CPU и очереди HTTP, привязывайте пользовательский домен к веб-приложению и подключайте бесплатный сертификат, управляемый App Service.

«Автомасштабирование и пользовательские домены» — бесплатный урок Azure Fundamentals на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Azure Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Azure Fundamentals содержит 4 уроков всего.

Зачем нужно автомасштабирование

Автомасштабирование автоматически регулирует количество экземпляров App Service, на которых работает приложение, в зависимости от спроса в реальном времени. Без автомасштабирования необходимо рассчитывать ресурсы на пиковую нагрузку и платить за простаивающие мощности в непиковые часы. При автомасштабировании Azure добавляет экземпляры при росте нагрузки и удаляет их при её снижении, оптимизируя производительность и затраты. Для автомасштабирования требуется уровень Standard или выше.

Масштабирование наружу и вверх

Azure предлагает два направления масштабирования. Scale наружу (горизонтальное масштабирование) добавляет одинаковые экземпляры приложения, распределяющие нагрузку между собой, — именно это в основном делает автомасштабирование. Scale вверх (вертикальное масштабирование) означает переход на виртуальную машину большего размера с увеличенными ресурсами CPU и RAM за счёт изменения SKU плана App Service. Масштабирование наружу предпочтительнее для повышения отказоустойчивости, поскольку несколько экземпляров могут продолжить работу при отдельных сбоях; масштабирование вверх ограничено возможностями оборудования.

# Scale out to 5 instances manually
az appservice plan update \
  --name MyAppServicePlan \
  --resource-group MyRG \
  --number-of-workers 5

# Scale up: change the SKU tier
az appservice plan update \
  --name MyAppServicePlan \
  --resource-group MyRG \
  --sku P2V3

Правила и профили автомасштабирования

Автомасштабирование в Azure настраивается с помощью параметров автомасштабирования, связанных с планом App Service. Параметр автомасштабирования содержит один или несколько профилей (обычный, с фиксированной датой или повторяющийся), каждый из которых включает правила. Правило масштабирования наружу срабатывает, когда метрика превышает порог (например, CPU > 70%), а правило масштабирования внутрь — когда она опускается ниже другого порога (например, CPU < 30%). Всегда задавайте оба типа правил, чтобы избежать неконтролируемого роста или чрезмерных расходов.

# Create an autoscale setting with CPU-based rules
az monitor autoscale create \
  --name MyAutoscale \
  --resource-group MyRG \
  --resource MyAppServicePlan \
  --resource-type Microsoft.Web/serverfarms \
  --min-count 2 \
  --max-count 10 \
  --count 2

# Add scale-out rule: CPU > 70% for 5 minutes
az monitor autoscale rule create \
  --autoscale-name MyAutoscale \
  --resource-group MyRG \
  --scale out 2 \
  --condition 'CpuPercentage > 70 avg 5m'

Автомасштабирование по расписанию

Автомасштабирование по расписанию (профили повторения) позволяет заранее увеличивать ресурсы при предсказуемых изменениях трафика. Например, увеличивать число экземпляров до 10 каждый будний день в 08:00 и уменьшать его до 2 в 18:00. Сочетание профилей по расписанию и по метрикам даёт преимущества обоих подходов: заранее подготовленные ресурсы для известных пиков и гибкая реакция на неожиданные скачки.

# Add a recurrence profile for weekday peak hours
az monitor autoscale profile create \
  --autoscale-name MyAutoscale \
  --resource-group MyRG \
  --name 'WeekdayPeak' \
  --min-count 5 \
  --max-count 15 \
  --count 5 \
  --recurrence week mon tue wed thu fri \
  --start 08:00 \
  --end 18:00 \
  --timezone 'UTC'

Периоды ожидания

Период ожидания — это задержка после действия масштабирования, в течение которой дальнейшее масштабирование не выполняется. Он предотвращает частые колебания — быстрые повторные масштабирования наружу и внутрь, вызванные кратковременными скачками метрик. По умолчанию период ожидания составляет 5 минут для масштабирования наружу и 5 минут для масштабирования внутрь. Для масштабирования внутрь задайте более длительный период (например, 10–15 минут), чтобы экземпляры успели завершить активные подключения перед удалением.

# Scale-in rule with 10-minute cooldown
az monitor autoscale rule create \
  --autoscale-name MyAutoscale \
  --resource-group MyRG \
  --scale in 1 \
  --condition 'CpuPercentage < 30 avg 10m' \
  --cooldown 10

Настройка пользовательского домена

Приложения App Service получают имя узла по умолчанию azurewebsites.net. Чтобы использовать собственный домен (например, www.contoso.com), добавьте пользовательский домен в параметрах App Service и создайте соответствующие записи DNS у регистратора домена. Право владения необходимо подтвердить, создав запись CNAME или запись TXT (так называемую запись проверки) в зоне DNS, а затем создав фактическую запись CNAME или A для маршрутизации.

# DNS records at your registrar:
# CNAME  www           MyUniqueWebApp.azurewebsites.net
# TXT    asuid.www     <verification_id from Azure portal>

# After DNS propagation, add the custom domain in Azure
az webapp config hostname add \
  --webapp-name MyUniqueWebApp \
  --resource-group MyRG \
  --hostname www.contoso.com

Сертификаты TLS для пользовательских доменов

После привязки пользовательского домена для включения HTTPS требуется сертификат TLS. App Service предлагает три варианта: управляемый сертификат App Service (бесплатный, с автоматическим продлением, только для стандартных доменов), сертификат App Service (приобретается через Azure и хранится в Key Vault) или загрузка сертификата стороннего поставщика (собственный сертификат от Let's Encrypt или центра сертификации). Режим «только HTTPS» автоматически перенаправляет весь трафик HTTP на HTTPS.

# Create a free App Service Managed Certificate
az webapp config ssl create \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --hostname www.contoso.com

# Bind the certificate to enforce HTTPS
az webapp config ssl bind \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --certificate-thumbprint <THUMBPRINT> \
  --ssl-type SNI

# Enforce HTTPS only
az webapp update \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --https-only true

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

Хотя CPU — распространённая метрика автомасштабирования, длина очереди HTTP часто лучше подходит для веб-приложений. При большой длине очереди новые запросы ожидают обработки, поскольку экземпляры полностью заняты. Масштабирование на основе HttpQueueLength обнаруживает перегрузку быстрее, чем CPU, поскольку значение CPU может колебаться, не указывая напрямую на задержку, заметную пользователю. Для надёжного автомасштабирования используйте обе метрики вместе.

# Scale out when HTTP queue length exceeds 100
az monitor autoscale rule create \
  --autoscale-name MyAutoscale \
  --resource-group MyRG \
  --scale out 2 \
  --condition 'HttpQueueLength > 100 avg 1m' \
  --cooldown 5

# Scale in when queue drops below 10
az monitor autoscale rule create \
  --autoscale-name MyAutoscale \
  --resource-group MyRG \
  --scale in 1 \
  --condition 'HttpQueueLength < 10 avg 10m' \
  --cooldown 10

Уведомления об автомасштабировании

Настройте уведомления об автомасштабировании, чтобы получать оповещения по электронной почте или через веб-перехватчик при возникновении событий масштабирования. Это помогает командам понимать особенности трафика и проверять, что автомасштабирование работает ожидаемым образом. Уведомления настраиваются в разделе уведомлений параметра автомасштабирования; в качестве получателей можно указать несколько адресов электронной почты и конечных точек веб-перехватчиков (для интеграции со Slack, PagerDuty или пользовательскими инструментами).

# Add email notification to autoscale setting
az monitor autoscale update \
  --name MyAutoscale \
  --resource-group MyRG \
  --add-condition '{"email": {"sendToSubscriptionAdministrator": true, "customEmails": ["ops@contoso.com"]}, "webhooks": []}'

Домены apex и Traffic Manager

Для сопоставления домена apex (например, contoso.com без www) с App Service требуется запись A, указывающая на IP-адрес App Service, а также запись TXT для проверки. Поскольку IP-адреса App Service могут изменяться, Microsoft рекомендует использовать Azure Traffic Manager или Azure Front Door в качестве промежуточного звена: эквивалентная CNAME-запись для домена apex (запись ALIAS/ANAME) указывает на профиль Traffic Manager, который перенаправляет трафик в App Service.

# Get the App Service inbound IP (for A record)
az webapp show \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --query 'inboundIpAddress' -o tsv

# DNS at registrar (apex domain with A record approach)
# A      contoso.com     <inboundIpAddress>
# TXT    asuid           <verification_id>

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

После настройки автомасштабирования проверьте его корректную работу, создав искусственную нагрузку. Используйте такие инструменты, как Apache JMeter, k6 или Azure Load Testing, чтобы имитировать одновременную работу пользователей. В Azure Monitor отслеживайте метрику количества экземпляров плана App Service, чтобы убедиться, что при увеличении нагрузки количество экземпляров возрастает, а после её снижения — уменьшается. Задокументируйте наблюдаемое значение RPS (запросов в секунду) для каждого экземпляра, чтобы проверить заданные пороги масштабирования.

# Run a quick load test with curl (basic)
for i in {1..100}; do curl -o /dev/null -s https://www.contoso.com/health & done
wait

# Monitor current instance count
az monitor metrics list \
  --resource '/subscriptions/.../providers/Microsoft.Web/serverfarms/MyAppServicePlan' \
  --metric 'InstanceCount' \
  --interval PT1M

Быстрая проверка

Проверьте своё понимание концепций Microsoft Azure Fundamentals (AZ-900), рассмотренных в этом уроке.

Повторение урока

В этом уроке Вы узнали, что правила автомасштабирования в планах App Service добавляют или удаляют экземпляры на основе триггеров, связанных с CPU, очередью HTTP или расписанием; для пользовательских доменов в зоне DNS требуются записи CNAME/A и запись TXT для проверки; а сертификаты TLS (включая бесплатные управляемые сертификаты) включают HTTPS для пользовательских доменов. Далее мы рассмотрим аутентификацию и работу с сетью в App Service.

Часто задаваемые вопросы

Урок «Автомасштабирование и пользовательские домены» бесплатный?

Да — полный текст урока «Автомасштабирование и пользовательские домены» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Azure Fundamentals, подпишись на CoddyKit PRO. Курс Azure Fundamentals содержит 4 уроков всего.

Чему я научусь в уроке «Автомасштабирование и пользовательские домены»?

Настраивайте правила масштабирования на основе показателей CPU и очереди HTTP, привязывайте пользовательский домен к веб-приложению и подключайте бесплатный сертификат, управляемый App Service. Ты практикуешь Azure Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Azure Fundamentals?

Предыдущий опыт не требуется. Azure Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Автомасштабирование и пользовательские домены»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Azure Fundamentals?

Да. Каждый урок Azure Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Создание плана App Service и веб-приложения
  2. Слоты развертывания и переключение
  3. Автомасштабирование и пользовательские домены
  4. Аутентификация и сетевое взаимодействие App Service
← Назад к Azure Fundamentals