在提供了可用性区域的区域中,Azure 容器应用将使用可用区区域,从而针对你的应用程序和数据提供高可用性保护,以防止它们在数据中心出现故障时受到影响。
可用性区域是 Azure 区域中独特的物理位置。 每个区域由一个或多个数据中心组成,这些数据中心配置了独立电源、冷却和网络。 为确保能够进行复原,所有已启用的地区中都必须至少有三个单独的区域。 通过将计算、存储、网络和数据资源共置在一个区域并将其复制到其他区域,可以在应用程序体系结构中内置高可用性。
通过启用容器应用的区域冗余功能,副本会自动分布在区域中的区域中。 流量在副本之间进行负载平衡。 如果发生区域中断,流量将自动路由到其余区域中的副本。
万一发生全区域中断,你可以选择使用以下两种策略之一:
手动恢复:手动部署到新区域,或等待区域恢复,然后手动重新部署所有环境和应用。
复原恢复:首先,提前将容器应用部署到多个区域。 接下来,使用 Azure Front Door 或 Azure 流量管理器来处理传入请求,将流量引向你的主要区域。 然后,如果发生中断,你可以对流量进行重定向以使其避开受影响的区域。 有关详细信息,请参阅 Azure 中的跨区域复制。
注意
无论选择哪种策略,都务必要确保你的部署配置文件处于源代码管理之下,以便在需要时轻松进行重新部署。
此外,以下资源有助于你创建自己的灾难恢复计划:
在你的容器应用程序环境中设置区域冗余
若要利用可用性区域,必须在创建容器应用环境时启用区域冗余。 该环境必须包含一个带有可用子网的虚拟网络 (VNET)。 为确保正确分配副本,你应该使用可被三整除的值来配置应用程序的最小和最大副本计数。 最小副本数应至少为三个。
通过 Azure 门户启用区域冗余
要使用 Azure 门户在启用区域冗余的环境中创建容器应用程序:
- 导航到 Azure 门户。
- 在顶部搜索框中搜索“容器应用”。
- 选择“容器应用”。
- 在“容器应用环境”字段中选择“新建”以打开“创建容器应用环境”面板。
- 输入环境名称。
- 为“区域冗余”字段选择“已启用”。
区域冗余需要具有基础结构子网的虚拟网络 (VNET)。 可以选择现有证书或创建一个新证书。 创建新 VNET 时,你可以接受为你提供的值,也可以自定义设置。
- 选择“网络”选项卡。
- 若要分配自定义 VNET 名称,请在“虚拟网络”字段中选择“新建”。
- 若要分配自定义基础结构子网名称,请在“基础结构子网”字段中选择“新建”。
- 对于“虚拟 IP”,可以选择“内部”或“外部”。
- 选择创建。
使用 Azure CLI 启用区域冗余
创建一个 VNET 和基础设施子网以包含在容器应用程序环境中。
使用这些命令时,请将 <PLACEHOLDERS>
替换为你的值。
注意
与容器应用环境关联的子网需要 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
接下来,查询基础设施子网 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
参数创建环境。 该位置必须与创建 VNET 时使用的位置相同。
az containerapp env create \
--name <CONTAINER_APP_ENV_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--location "<LOCATION>" \
--infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET \
--zone-redundant