Из этой статьи вы узнаете, как создать зонально-избыточное контейнерное приложение в виртуальной сети. Вы создадите среду Azure Container Apps, включите поддержку отказоустойчивости в зоне и настроите ее с новой или уже существующей виртуальной сетью, которая имеет подсеть инфраструктуры.
Дополнительные сведения о том, как контейнерные приложения поддерживают зональную избыточность, см. в разделе Надежность в контейнерных приложениях.
Предпосылки
Избыточность зон доступна во всех регионах, поддерживающих контейнерные приложения и зоны доступности.
Чтобы узнать, какие регионы поддерживают зоны доступности, см. регионы Azure с поддержкой зон доступности.
Сведения о том, какие регионы поддерживают приложения контейнеров, см. в разделе "Доступность продукта по регионам".
Создание зонально избыточного контейнерного приложения
Используйте портал Azure, Azure CLI или PowerShell для создания зонально-избыточного контейнерного приложения.
- Перейдите на портал Azure.
-
Найдите контейнерные приложения в верхнем поле поиска.
- Выберите Приложения-контейнеры.
- Выберите "Создать" в поле "Среда приложений контейнеров", чтобы открыть панель "Создание среды приложений контейнеров".
- Введите имя среды.
- Выберите "Включено " для поля избыточности зоны.
Для избыточности зоны необходима виртуальная сеть с инфраструктурной подсетью. Можно выбрать существующую виртуальную сеть или создать новую. При создании новой виртуальной сети можно принять значения, указанные для вас, или настроить параметры.
- Выберите вкладку "Сеть".
- Чтобы назначить пользовательское имя для виртуальной сети, выберите Create New в поле Virtual Network.
- Чтобы назначить имя настраиваемой подсети инфраструктуры, выберите "Создать" в поле "Подсеть инфраструктуры".
- Для виртуального IP-адреса можно выбрать внутренний или внешний.
- Нажмите кнопку "Создать".
Создайте виртуальную сеть и подсеть инфраструктуры для включения в среду контейнерных приложений.
При использовании этих команд замените <PLACEHOLDERS> вашими значениями.
Замечание
Для среды профилей рабочих нагрузок по умолчанию требуется выделенная подсеть с диапазоном CIDR /27 или более широким. Для устаревшей среды типа Consumption требуется выделенная подсеть с диапазоном CIDR /23 или большее значение. Дополнительные сведения о размерах подсети см. в обзоре сетевой архитектуры.
az network vnet create \
--resource-group <RESOURCE_GROUP_NAME> \
--name <VNET_NAME> \
--location <LOCATION> \
--address-prefix 10.0.0.0/16
az network vnet subnet create \
--resource-group <RESOURCE_GROUP_NAME> \
--vnet-name <VNET_NAME> \
--name infrastructure \
--address-prefixes 10.0.0.0/21
Запрос идентификатора подсети инфраструктуры.
INFRASTRUCTURE_SUBNET=`az network vnet subnet show --resource-group <RESOURCE_GROUP_NAME> --vnet-name <VNET_NAME> --name infrastructure --query "id" -o tsv | tr -d '[:space:]'`
Создайте среду с параметром --zone-redundant . Расположение должно быть таким же расположением, которое используется при создании виртуальной сети.
az containerapp env create \
--name <CONTAINER_APP_ENV_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--location "<LOCATION>" \
--infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET \
--zone-redundant
Создайте виртуальную сеть и подсеть инфраструктуры для включения в среду контейнерных приложений.
При использовании этих команд замените <PLACEHOLDERS> вашими значениями.
Замечание
Для среды профилей рабочих нагрузок по умолчанию требуется выделенная подсеть с диапазоном CIDR /27 или более широким. Для устаревшей среды типа Consumption требуется выделенная подсеть с диапазоном CIDR /23 или большее значение. Дополнительные сведения о размерах подсети см. в обзоре сетевой архитектуры.
$SubnetArgs = @{
Name = 'infrastructure-subnet'
AddressPrefix = '10.0.0.0/21'
}
$subnet = New-AzVirtualNetworkSubnetConfig @SubnetArgs
$VnetArgs = @{
Name = <VNetName>
Location = <Location>
ResourceGroupName = <ResourceGroupName>
AddressPrefix = '10.0.0.0/16'
Subnet = $subnet
}
$vnet = New-AzVirtualNetwork @VnetArgs
Запрос идентификатора подсети инфраструктуры.
$InfrastructureSubnet=(Get-AzVirtualNetworkSubnetConfig -Name $SubnetArgs.Name -VirtualNetwork $vnet).Id
Создайте среду с параметром --zone-redundant . Расположение должно быть таким же расположением, которое используется при создании виртуальной сети.
Для среды "Приложения контейнеров" требуется рабочая область Log Analytics. Следующие команды создают рабочую область Log Analytics и сохраняют идентификатор рабочей области и первичный общий ключ в переменные среды.
$WorkspaceArgs = @{
Name = 'myworkspace'
ResourceGroupName = <ResourceGroupName>
Location = <Location>
PublicNetworkAccessForIngestion = 'Enabled'
PublicNetworkAccessForQuery = 'Enabled'
}
New-AzOperationalInsightsWorkspace @WorkspaceArgs
$WorkspaceId = (Get-AzOperationalInsightsWorkspace -ResourceGroupName <ResourceGroupName> -Name $WorkspaceArgs.Name).CustomerId
$WorkspaceSharedKey = (Get-AzOperationalInsightsWorkspaceSharedKey -ResourceGroupName <ResourceGroupName> -Name $WorkspaceArgs.Name).PrimarySharedKey
Создайте среду, выполнив следующую команду:
$EnvArgs = @{
EnvName = <EnvironmentName>
ResourceGroupName = <ResourceGroupName>
Location = <Location>
AppLogConfigurationDestination = "log-analytics"
LogAnalyticConfigurationCustomerId = $WorkspaceId
LogAnalyticConfigurationSharedKey = $WorkspaceSharedKey
VnetConfigurationInfrastructureSubnetId = $InfrastructureSubnet
VnetConfigurationInternal = $true
ZoneRedundant = $true
}
New-AzContainerAppManagedEnv @EnvArgs
Проверка наличия избыточности в зоне
Чтобы проверить, что зональная избыточность включена для среды контейнерных приложений:
Перейдите на портал Azure.
Выполните поиск среды контейнерных приложений в верхнем поле поиска.
Выберите среды для контейнерных приложений.
Выберите свою среду.
Выберите JSON View: 
Убедитесь, что ответ содержит "zoneRedundant": true: 
Выполните команду az container app env show.
При использовании этой команды замените <PLACEHOLDERS> на ваши значения.
az containerapp env show \
--name <CONTAINER_APP_ENV_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--subscription <SUBSCRIPTION_ID>
Команда возвращает ответ JSON. Убедитесь, что ответ содержит "zoneRedundant": true.
Выполните команду az container app env show.
При использовании этой команды замените <PLACEHOLDERS> на ваши значения.
$Env = Get-AzContainerAppManagedEnv `
-Name <EnvironmentName> `
-ResourceGroupName <ResourceGroupName>
$Env.ZoneRedundant
Команда отображает True , является ли среда избыточной по зонам, и False если она отсутствует.