Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается поддержка надежности в Службе приложений Azure, охватывающая устойчивость внутри региона через зоны доступности и развертывания в нескольких регионах.
Надежность — это общая ответственность между вами и корпорацией Майкрософт. Это руководство позволяет определить, какие варианты надежности соответствуют конкретным бизнес-целям и целям простоя.
Служба приложений — это служба на базе HTTP для размещения веб-приложений, REST API и мобильных серверных частей. Служба приложений интегрируется с Microsoft Azure для обеспечения безопасности, балансировки нагрузки, автомасштабирования и автоматического управления приложениями. Сведения о том, как служба приложений может повысить надежность и устойчивость рабочей нагрузки приложения, см. в обзоре службы приложений.
При развертывании службы приложений можно подготовить несколько экземпляров в плане службы приложений. Этот план представляет вычислительные узлы, выполняющие код приложения. Платформа выполняет усилия по развертыванию экземпляров в разных доменах сбоя, но не автоматически распределяет экземпляры между зонами доступности.
Рекомендации по развертыванию в производственной среде
Используйте планы службы приложений ценовой категории "Премиум" версии 3/4.
Включите зоновую избыточность. Чтобы узнать о требованиях к избыточности зоны и как ее включить, см. раздел поддержки зоны доступности.
Включите зональную избыточность, что требует использования плана службы приложений на как минимум двух экземплярах.
Временные сбои
Временные ошибки являются короткими, периодическими сбоями в компонентах. Они часто происходят в распределенной среде, такой как облачная, и являются обычным явлением в операциях. Временные ошибки исправляют себя через короткий период времени. Важно, чтобы приложения обрабатывали временные ошибки, обычно повторяя затронутые запросы.
Все облачные приложения должны следовать рекомендациям по обработке временных ошибок Azure при обмене данными с любыми размещенными в облаке API, базами данных и другими компонентами. Дополнительные сведения см. в Рекомендациях по обработке временных сбоев.
Пакеты SDK, предоставляемые корпорацией Майкрософт, обычно обрабатывают временные ошибки. Так как вы размещаете собственные приложения в службе приложений, рассмотрите, как избежать временных сбоев:
Разверните несколько экземпляров в вашем плане. Служба приложений выполняет автоматические обновления и другие формы обслуживания в экземплярах вашего плана. Если экземпляр становится неработоспособным, служба может автоматически заменить этот экземпляр новым здоровым экземпляром. В процессе замены может быть короткий период, когда предыдущий экземпляр недоступен, и новый экземпляр не готов обслуживать трафик. Эти эффекты можно устранить, развернув несколько экземпляров плана службы приложений.
Используйте слоты развертывания. Слоты развертывания службы приложений обеспечивают развертывание приложений без простоя. Используйте слоты развертывания, чтобы свести к минимуму влияние развертываний и изменений конфигурации для пользователей. Слоты развертывания также снижают вероятность рестарта вашего приложения. Перезапуск приложения приводит к временной ошибке.
Избегайте увеличения или уменьшения масштаба. Увеличение и уменьшение масштаба требует изменения ЦП, памяти и других ресурсов, выделенных каждому экземпляру. Операции масштабирования и уменьшения масштаба могут активировать перезапуск приложения. Вместо масштабирования вверх или вниз выберите уровень и размер экземпляра, которые соответствуют вашим требованиям к производительности при типичной нагрузке. Вы можете расширять и уменьшать масштаб, динамически добавляя и удаляя экземпляры для адаптации к изменениям объёма трафика.
Поддержка зоны доступности
Зоны доступности — это физически отдельные группы центров обработки данных в каждом регионе Azure. При сбое одной зоны службы могут переключиться на одну из оставшихся зон.
Служба приложений может быть настроена как с избыточностью по зонам, что означает, что ваши ресурсы распределяются по нескольким зонам доступности. Распределение между несколькими зонами помогает рабочим нагрузкам обеспечить устойчивость и надежность. При настройке зональной избыточности в планах службы приложений все приложения, использующие этот план, становятся избыточными по зонам.
Распределение экземпляров в развертывании с избыточностью между зонами следует определенным правилам. Эти правила остаются применимыми при изменении масштаба приложений. Дополнительные сведения см. в разделе "Соображения".
Поддержка регионов
Планы службы приложений с избыточностью между зонами можно развернуть в любом регионе, поддерживающем зоны доступности.
Сведения о том, какие регионы поддерживают зоны доступности для Среда службы приложений версии 3, см. в разделе "Регионы".
Требования
Необходимо использовать типы планов Premium версии 2-4. Чтобы просмотреть дополнительные сведения, убедитесь, что выбран соответствующий уровень в верхней части этой страницы.
Необходимо использовать планы типа Premium v2-4 или Isolated v2 и иметь не менее двух инстанций таких планов.
Зоны доступности поддерживаются только в новых единицах масштабирования службы приложений. Даже если вы используете один из поддерживаемых регионов, и при этом зоны доступности не поддерживаются для используемой единицы масштабирования, вы получите ошибку при создании плана службы приложений с зональной избыточностью.
Единица масштабирования, которую вы назначаете, основана на группе ресурсов, в которую вы развертываете план службы приложений. Чтобы ваши рабочие нагрузки размещались в единице масштабирования, которая поддерживает зоны доступности, может потребоваться создать новую группу ресурсов, а также создать план службы приложений и само приложение службы приложений в этой новой группе ресурсов.
Чтобы узнать, находится ли план службы приложений на отметке, поддерживающей зоны доступности, проверьте
maximumNumberOfZones
свойство плана службы приложений. Если значение больше одного, ваш штамп поддерживает зоны, и вы можете включить избыточность зон в плане. Если значение равно одному, ваша единица масштабирования не поддерживает зоны доступности, и необходимо внедрить новый план для обеспечения отказоустойчивости зоны.az appservice plan show -n <app-service-plan-name> -g <resource-group-name> --query properties.maximumNumberOfZones
В плане необходимо развернуть не менее двух экземпляров.
Рекомендации
Во время сбоя зоны доступности могут быть затронуты отдельные аспекты службы приложений Azure, хотя приложение продолжает обрабатывать трафик. К ним относятся масштабирование плана службы приложений, создание приложений, конфигурация приложений и публикация приложений.
При включении зональной избыточности в плане службы приложений вы также повышаете устойчивость к обновлениям, которые развертываются платформой службы приложений. Дополнительные сведения см. в статье "Надежность во время обслуживания службы".
Распределение экземпляров в развертывании с избыточностью между зонами следует определенным правилам. Эти правила остаются применимыми, так как приложение уменьшается и увеличивается при масштабировании.
Минимальные экземпляры: План службы приложений должен иметь не менее двух экземпляров для зональной избыточности.
Максимальное количество зон доступности, поддерживаемых планом: Azure определяет количество зон доступности, которые может использовать ваш план. Чтобы просмотреть число зон доступности, которые может использовать ваш план, см. свойство maximumNumberOfZones в плане службы приложений Azure. Это свойство доступно только для чтения. Если это значение равно 1, план службы приложений не поддерживает избыточность зоны. Если значение maximumNumberOfZones больше 1, план службы приложений можно настроить для избыточности зон.
az appservice plan show -n <app-service-plan-name> -g <resource-group-name> --query properties.maximumNumberOfZones
Распределение экземпляров: Если включена избыточность зон, экземпляры плана распределяются по нескольким зонам доступности автоматически. Распределение основано на следующих правилах:
- Экземпляры распределяются равномерно, если указать вместимость (число экземпляров) больше maximumNumberOfZones, а количество экземпляров делится на maximumNumberOfZones.
- Оставшиеся экземпляры распределяются по другим зонам.
- Когда платформа службы приложений выделяет экземпляры для зонально-избыточного плана службы приложений, она использует наилучшую возможную балансировку зон, которую предоставляют базовые масштабируемые наборы виртуальных машин Azure. План службы приложений балансируется, если каждая зона имеет одинаковое количество виртуальных машин или отличается плюс одной виртуальной машиной или минус одной виртуальной машины от всех остальных зон. Дополнительные сведения см. в разделе "Балансировка зоны".
Размещение физической зоны: Вы можете просмотреть физическую зону доступности , используемую для каждого экземпляра плана службы приложений. Используйте REST API, который возвращает
physicalZone
значение для каждого экземпляра.az rest --method get --url https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/sites/{appName}/instances?api-version=2024-04-01
Для планов службы приложений, которые не настроены как избыточные по зонам, базовые экземпляры виртуальных машин не устойчивы к сбоям зоны доступности. Они могут столкнуться с простоем во время сбоя в любой зоне в этом регионе.
Себестоимость
При использовании планов Службы приложений уровня "Премиум" v2-v4 не взимается дополнительная плата за включение зон доступности, если в плане службы приложений есть два или более экземпляра. Плата взимается в зависимости от SKU вашего плана App Service, указанной вами емкости и количества экземпляров, к которым вы масштабируетесь на основе критериев автомасштабирования.
Если включить зоны доступности и указать вместимость менее двух, платформа устанавливает минимальное количество экземпляров равное двум. Платформа взымает плату за эти два случая.
При использовании плана изолированной службы приложений версии v2 не требуется дополнительной оплаты за активацию зон доступности, если в вашем плане службы приложений есть два или более экземпляра. Плата взимается на основе SKU вашего плана службы приложений, заданной вами емкости и всех экземпляров, масштабируемых в соответствии с вашими критериями автомасштабирования.
Если включить зоны доступности и указать вместимость менее двух, платформа устанавливает минимальное количество экземпляров равное двум. Платформа взымает плату за эти два случая.
Настройка поддержки зоны доступности
Для развертывания нового зонально-избыточного плана службы приложений необходимо использовать планы Premium типов версии 2-4. Чтобы просмотреть дополнительные сведения, убедитесь, что выбран соответствующий уровень в верхней части этой страницы.
Создайте новый план App Service с зональной избыточностью. Чтобы развернуть новый план службы приложений с зональной избыточностью, выберите параметр избыточность зоны при развертывании плана на портале Azure или задайте свойство плана службы приложений
zoneRedundant
в команде Azure CLI, команде Azure PowerShell, Bicep-файле или шаблоне Azure Resource Managertrue
.az appservice plan create -g MyResourceGroup -n MyPlan --zone-redundant --number-of-workers 2 --sku P1V3
Примечание.
Если вы используете Azure CLI для изменения
zone-redundant
свойства, необходимо указать--number-of-workers
свойство, которое является числом экземпляров, и использовать емкость больше или равно 2.Перенос существующего плана службы приложений в зональную избыточность. Если у вас есть существующий план службы приложений, поддерживающий избыточность зоны (максимально доступные зоны больше 1), вы можете включить избыточность зоны, задав свойству плана
zoneRedundant
службы приложений значениеtrue
в Azure CLI, файле Bicep или шаблоне Resource Manager:az appservice plan update -g <resource group name> -n <app service plan name> --set zoneRedundant=true sku.capacity=2
Примечание.
Если вы используете Azure CLI для изменения
zoneRedundant
свойства, необходимо указатьsku.capacity
свойство, которое является числом экземпляров, и использовать емкость больше или равно 2.Если вы находитесь на плане или метке, которая не поддерживает зоны доступности, необходимо создать новый план службы приложений в новой группе ресурсов, чтобы вы приземлились на месте службы приложений, поддерживающем зоны.
Примечание.
Изменение зоны избыточности состояния плана службы приложений происходит почти мгновенно. Во время процесса не возникают проблемы со временем простоя или производительностью.
Отключите избыточность в зоне. Чтобы отключить избыточность зоны, задайте для свойства
zoneRedundant
плана службы приложений значениеfalse
или используйте Azure CLI.az appservice plan update -g <resource group name> -n <app service plan name> --set zoneRedundant=false sku.capacity=1
Примечание.
Если вы используете Azure CLI для отключения
zoneRedundant
свойства, следует указатьsku.capacity
свойство, в противном случае значение по умолчанию равно 1.
Создайте новый план App Service с зональной избыточностью.
Если у вас нет ранее созданной зонально избыточной среды службы приложений, разверните новую зонально избыточную среду службы приложений. Дополнительные сведения о создании среды службы приложений см. в статье "Создание среды службы приложений".
Чтобы создать план службы приложений на портале Azure, выберите "Избыточность зоны". Чтобы создать план с помощью команды Azure CLI, команды Azure PowerShell, файла Bicep или шаблона Resource Manager, задайте для свойства плана
zoneRedundant
службы приложений значениеtrue
, как показано в следующем примере кода:
az appservice plan create -g MyResourceGroup -n MyPlan --app-service-environment MyAse --zone-redundant --number-of-workers 2 --sku I1V2
Примечание.
Если вы используете Azure CLI для изменения
zoneRedundant
свойства, необходимо указатьnumber-of-workers
свойство, которое является числом экземпляров, и использовать емкость больше или равно 2.Перенос существующего плана службы приложений на зону избыточности Если у вас есть существующая среда службы приложений или план службы приложений Isolated v2, поддерживающий избыточность зоны, вы можете активировать избыточность по зонам в любое время. Чтобы включить избыточность зоны для среды службы приложений, установите для свойства
zoneRedundant
значениеtrue
или используйте Azure CLI.az resource update --ids /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/hostingEnvironments/{aseName} --set properties.zoneRedundant=true
Примечание.
При изменении состояния избыточности зоны среды службы приложений инициируется обновление, которое занимает 12–24 часа. Во время процесса обновления не возникают проблемы простоя или производительности.
Для планов изолированной службы приложений версии 2, если среда службы приложений является избыточной по зонам, планы службы приложений можно сделать избыточными по зонам. Каждый план службы приложений имеет собственный независимый параметр избыточности зоны, что означает, что в Среде App Service можно использовать сочетание планов с избыточностью зоны и без. Чтобы включить избыточность зоны в плане изолированной службы приложений версии 2, задайте для свойства плана
zoneRedundant
службы приложений значениеtrue
или используйте Azure CLI.az appservice plan update -g <resource group name> -n <app service plan name> --set zoneRedundant=true sku.capacity=2
Примечание.
Если вы используете Azure CLI для изменения
zoneRedundant
свойства, необходимо указатьsku.capacity
свойство, которое является числом экземпляров, и использовать емкость больше или равно 2.Отключите избыточность в зоне. Чтобы отключить избыточность зоны, можно задать для плана службы приложений или свойства среды
zoneRedundant
службы приложений значениеfalse
или использовать Azure CLI:az resource update --ids /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/hostingEnvironments/{aseName} --set properties.zoneRedundant=false az appservice plan update -g <resource group name> -n <app service plan name> --set zoneRedundant=false sku.capacity=1
Примечание.
Если вы используете Azure CLI для отключения
zoneRedundant
свойства, следует указатьsku.capacity
свойство, в противном случае значение по умолчанию равно 1.
Планирование ресурсов и управление ими
Чтобы подготовиться к сбою зоны доступности, рассмотрите избыточное выделение емкости плана службы приложений. Избыточное выделение ресурсов позволяет решению выносить некоторую степень потери емкости и продолжать функционировать без снижения производительности. Дополнительные сведения см. в разделе Управление емкостью с помощью чрезмерного выделения.
Нормальная работа
В следующем разделе описывается, чего стоит ожидать, когда планы App Service настроены на зональную избыточность, и все зоны доступности находятся в рабочем состоянии.
Маршрутизация трафика между зонами: Во время обычных операций трафик направляется между всеми доступными экземплярами плана службы приложений во всех зонах доступности.
Репликация данных между зонами: Во время обычных операций любое состояние, хранящееся в файловой системе приложения, хранится в хранилище, избыточном между зонами, и синхронно реплицируется между зонами доступности.
Опыт снижения активности
Во время сбоя зоны доступности могут быть затронуты отдельные аспекты службы приложений Azure, хотя приложение продолжает обрабатывать трафик. К ним относятся масштабирование плана службы приложений, создание приложений, конфигурация приложений и публикация приложений.
В следующем разделе описывается, чего ожидать, когда планы службы приложений настроены на избыточность зоны и одна или несколько зон высокой доступности недоступны.
Обнаружение и ответ: Платформа службы приложений автоматически обнаруживает сбои в зоне доступности и инициирует ответ. Нет необходимости в ручном вмешательстве для инициации переключения зоны.
Активные запросы: Если зона доступности перестает работать, все запросы, которые находятся в обработке и связаны с экземпляром плана службы приложений в неисправной зоне доступности, завершаются. Они должны быть пересмотрены.
Перенаправка трафика: Если зона недоступна, служба приложений обнаруживает потерянные экземпляры из этой зоны и автоматически пытается найти новые экземпляры замены. После поиска замены он распределяет трафик между новыми экземплярами по мере необходимости.
Если автомасштабирование настроено и определяет, что требуется больше экземпляров, он выдает запрос службе приложений для добавления этих экземпляров. Параметры автомасштабирования работают независимо от параметров платформы службы приложений, что означает, что спецификация количества экземпляров не должна быть кратной двум. Дополнительные сведения см. в разделе "Масштабирование приложения" в службе приложений и обзор автомасштабирования.
Внимание
Нет никаких гарантий, что в случае сбоя зоны запросы на дополнительные экземпляры будут успешными. Восстановление утраченных экземпляров выполняется по мере возможностей. Если вам нужна гарантированная емкость при потере зоны доступности, необходимо создать и настроить планы службы приложений для учета потери зоны. Это можно достичь избыточным выделением емкости вашего плана службы приложений.
Поведение вне времени выполнения: Приложения, развернутые в плане службы приложений, зоне-дублирующем, продолжают работать и обслуживать трафик, даже если зона доступности испытывает сбой. Однако во время сбоя зоны доступности могут повлиять нерабовременные действия. К ним относятся масштабирование плана службы приложений, создание приложений, конфигурация приложений и публикация приложений.
Возврат к исходному состоянию
Когда зона доступности восстанавливается, служба приложений автоматически создает экземпляры в восстановленной зоне доступности, удаляет все временные экземпляры, созданные в других зонах доступности, и направляет трафик между экземплярами как обычно.
Тестирование отказов в зоне
Платформа службы приложений управляет маршрутизацией трафика, отработкой отказа и восстановлением после отказа для зонально-избыточных планов App Service. Так как эта функция полностью управляема, не требуется инициировать или проверять процессы сбоя зоны доступности.
Поддержка нескольких регионов
Служба приложений — это однорегиональная служба. Если регион становится недоступным, приложение также недоступно.
Альтернативные подходы с несколькими регионами
Чтобы снизить риск сбоя в одном регионе, влияющего на приложение, развернитесь в нескольких регионах. Следующие шаги помогают укрепить устойчивость:
- Разверните приложение на инстанциях в каждом регионе.
- Настройте политики балансировки нагрузки и отказоустойчивости.
- Реплицируйте данные в разных регионах, чтобы можно было восстановить последнее состояние приложения.
Следующие ресурсы связаны с этим подходом:
Пример подхода, демонстрирующего эту архитектуру, см. в статье " Высокодоступное корпоративное развертывание" с помощью среды службы приложений.
Резервные копии
При использовании уровня "Базовый" или более высокого уровня, можно создать резервную копию приложения в Службе приложений в файл с помощью возможностей резервного копирования и восстановления этой службы.
Эта функция полезна, если вам трудно повторно развернуть код или сохранить состояние на диске. Для большинства решений не следует полагаться исключительно на резервные копии. Вместо этого используйте другие возможности, описанные в этом руководстве, для поддержки требований к устойчивости. Однако резервные копии защищают от некоторых рисков, которые другие методы не обеспечивают. Дополнительные сведения см. в статье "Резервное копирование и восстановление приложения в службе приложений".
Надежность при проведении технического обслуживания
Служба приложений Azure выполняет регулярные обновления служб, а также другие формы обслуживания. Чтобы обеспечить доступность ожидаемой емкости во время обновления, платформа автоматически добавляет дополнительные экземпляры плана службы приложений во время процесса обновления.
Включите зоновую избыточность. При включении избыточности зоны в плане службы приложений вы также повышаете устойчивость для обновлений, которые развертываются платформой службы приложений. Домены обновления состоят из коллекций виртуальных машин, которые отключаются во время обновления. Домены обновления привязаны к зонам доступности. Развертывание нескольких экземпляров в плане службы приложений и включение отказоустойчивости зон для плана добавляет дополнительный уровень устойчивости во время обновления, если экземпляры или зоны становятся неработоспособными.
Дополнительные сведения см. в статье "Плановое обслуживание" для службы приложений Azure.
Настройка цикла обновления. Вы можете настроить цикл обновления для среды службы приложений. Если вам нужно проверить влияние обновлений на рабочую нагрузку, рассмотрите возможность включения обновлений вручную, чтобы можно было выполнить проверку и тестирование на экземпляре, отличном от производства, перед развертыванием изменений в рабочем экземпляре.
Чтобы узнать больше о предпочтениях обслуживания, см. раздел «Предпочтения обновления для планового обслуживания среды службы приложений».
Соглашение об уровне обслуживания (SLA)
Соглашение об уровне обслуживания (SLA) для службы приложений описывает ожидаемую доступность службы и условия, которые должны быть выполнены для достижения этого ожидания доступности. Для получения дополнительной информации см. Соглашения об уровне обслуживания для онлайн-сервисов.
При развертывании зонально-избыточного плана службы приложений увеличивается процент доступности, определенный в соглашении об уровне обслуживания.