本文介绍如何在虚拟网络中创建区域冗余容器应用。 你将创建一个 Azure 容器应用环境,启用它以实现区域冗余,并使用具有基础结构子网的新虚拟网络或预先存在的虚拟网络进行配置。
先决条件
区域冗余可用于支持容器应用和可用区的所有区域。
若要查看哪些区域支持容器应用,请参阅 产品可用性(按区域)。
创建区域冗余容器应用
使用 Azure 门户、Azure CLI 或 PowerShell 创建区域冗余容器应用。
- 转到 Azure 门户。
- 在顶部搜索框中搜索“容器应用”。
- 选择“容器应用”。
- 在“容器应用环境”字段中选择“新建”以打开“创建容器应用环境”面板。
- 输入环境名称。
- 为“区域冗余”字段选择“已启用”。
区域冗余需要具有基础结构子网的虚拟网络。 你可以选择现有虚拟网络或新建一个。 创建新虚拟网络时,你可以接受为你提供的值,也可以自定义设置。
- 选择“网络”选项卡。
- 若要分配自定义虚拟网络名称,请在“虚拟网络”字段中选择“新建”。
- 若要分配自定义基础结构子网名称,请在“基础结构子网”字段中选择“新建”。
- 对于“虚拟 IP”,可以选择“内部”或“外部”。
- 选择 创建。
创建一个虚拟网络和基础结构子网,以将其与容器应用环境包含在一起。
使用这些命令时,请将 <PLACEHOLDERS> 替换为你的值。
注释
“仅消耗”环境需要一个具有 CIDR 范围 /23 或更大范围的专用子网。 工作负荷配置文件环境需要一个具有 CIDR 范围 /27 或更大范围的专用子网。 若要详细了解子网大小调整,请参阅网络体系结构概述。
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
查询基础结构子网 ID。
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 范围 /23 或更大范围的专用子网。 工作负荷配置文件环境需要一个具有 CIDR 范围 /27 或更大范围的专用子网。 若要详细了解子网大小调整,请参阅网络体系结构概述。
$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
查询基础结构子网 ID。
$InfrastructureSubnet=(Get-AzVirtualNetworkSubnetConfig -Name $SubnetArgs.Name -VirtualNetwork $vnet).Id
使用 --zone-redundant 参数创建环境。 该位置必须与创建虚拟网络时使用的位置相同。
容器应用环境需要 Log Analytics 工作区。 以下命令创建 Log Analytics 工作区,并将工作区 ID 和主共享密钥保存到环境变量中。
$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 视图:
验证响应是否包含 "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。