Azure 应用服务提供内置可靠性功能,以帮助确保应用程序保持可用和复原能力。 本文介绍如何创建包含区域冗余的应用服务计划。 它还介绍如何在现有计划中禁用和启用区域冗余,以及如何检查区域冗余支持。 有关区域冗余的详细信息,请参阅 应用服务中的可靠性。
重要
区域冗余将应用服务计划实例分布在不同的可用区域;但它并不创建有保证的应用副本。 如果 perSiteScaling 为 true,并且某个应用或部署槽位的工作器数量限制为 1,不要据此推断该应用或槽位具有第二个热副本。
2 或更高的限制允许将实例放置在多个不同的计划工作器上,但不能保证这些实例跨越物理区域。 设计工作负载时,请审查 App Service 中的逐应用扩展和可靠性。
创建新的区域冗余应用服务计划
若要创建包含区域冗余的新应用服务计划,请执行以下步骤。
- 将
--zone-redundant的参数设置。
- 将
--number-of-workers 参数(即实例数)设置为值 2 或更多。
az appservice plan create \
-n <app-service-plan-name> \
-g <resource-group-name> \
--zone-redundant \
--number-of-workers 2 \
--sku P1V3
- 将
zoneRedundant 属性设置为 true。
- 将
sku.capacity 属性设置为值 2 或更多。 如果未定义 sku.capacity 属性,则值默认值为 1。
resource appServicePlan 'Microsoft.Web/serverfarms@2024-11-01' = {
name: appServicePlanName
location: location
sku: {
name: sku
capacity: 2
}
kind: 'linux'
properties: {
reserved: true
zoneRedundant: true
}
}
为现有应用服务计划设置区域冗余
若要在现有应用服务计划中启用区域冗余, 请检查区域冗余支持。
如果应用服务计划支持区域冗余,请使用Azure门户、Azure CLI或Bicep和Azure 资源管理器来启用或禁用它。
重要
在启用区域冗余之前,先记录当前的套餐容量和扩展模式。 如果启用了按应用缩放,请检查每个应用和部署槽已配置的工作器限制。 限制为 1 时,不会在另一个区域提供同步副本。 对于 基于规则 的缩放,确保每个适用的自动缩放配置文件的最小、默认和最大容量都至少为 2。
在 Azure 门户中,转到应用服务计划。
在左侧导航窗格中选择设置>缩放(应用服务计划)。
按照为该计划配置的缩放模式说明进行操作:
-
手册:如果 实例数 小于
2,则增加为 2;保持更高的值。 选择 区域冗余,然后保存你的更改。
-
自动:最小实例数由系统管理,在门户中不可用。 选择 “区域冗余”,保存更改,然后确认最终的套餐容量至少
2为 。
-
基于规则:你不能在门户中执行这个工作流程。 首先,分别更新每个适用的自动缩放配置文件,使其最小值、默认值和最大值各自都至少为
2,并保留较高的值。 然后使用 Azure CLI 或 Bicep 和 Azure 资源管理器 来启用区域冗余。
Azure portal中应用服务计划的区域冗余属性的截图。
对于 手动 或 自动 缩放,要禁用区域冗余,请取消选择 区域冗余,然后保存你的更改。
重要
对于 基于规则 的缩放,首先更新每个适用的自动缩放配置文件,使其最小值、默认值和最大值均至少为 2。 保持更高的价值。 仅更改当前sku.capacity并不能阻止自动缩放稍后请求较低的容量。
当当前 2 已经是 或更高版本时,要sku.capacity,只需将 true 属性设置为 zoneRedundant。 此次更新保留了当前的容量。
az appservice plan update \
-n <app-service-plan-name> \
-g <resource-group-name> \
--set zoneRedundant=true
如果电流 sku.capacity 小 2于 ,则将其提升至 2 ,同时启用区域冗余。
az appservice plan update \
-n <app-service-plan-name> \
-g <resource-group-name> \
--set zoneRedundant=true sku.capacity=2
若要 禁用区域冗余,请将 zoneRedundant 属性设置为 false。
az appservice plan update \
-n <app-service-plan-name> \
-g <resource-group-name> \
--set zoneRedundant=false
重要
对于 基于规则 的扩展,在部署前分别更新自动扩展配置。 每个适用的配置文件的最小值、默认值和最大值都不得低于 2,并保留更高的值。 此模板中的 sku.capacity 表达式不会更新自动缩放配置。
若要 启用区域冗余,请将 zoneRedundant 属性设置为 true。
将 currentPlanCapacity 设置为该计划当前配置的容量。 该 max 表达式保持一个已经 2 或更大的值,只将较低的值提升为 2。
调整示例时,请保留 kind、reserved、sku 和其他设置的当前计划值。
param currentPlanCapacity int
resource appServicePlan 'Microsoft.Web/serverfarms@2024-11-01' = {
name: appServicePlanName
location: location
sku: {
name: sku
capacity: max(2, currentPlanCapacity)
}
kind: 'linux'
properties: {
reserved: true
zoneRedundant: true
}
}
若要 禁用区域冗余,请将 zoneRedundant 属性设置为 false。
如果应用服务计划位于不支持区域冗余的缩放单元上, 则无法对计划启用区域冗余。 相反,需要将 应用重新部署到不同缩放单元上的新计划。
检查应用服务计划上的区域冗余支持
若要检查现有应用服务计划是否支持区域冗余,请执行以下步骤:
使用 Azure 门户、Azure CLI或Bicep和资源管理器来确定应用服务计划支持的最大可用性区域数。
在 Azure 门户中,转到应用服务计划。
选择“扩展规模”(应用服务计划)。
最大可用区域 显示应用服务计划可以使用的最大区域数。
查询计划 maximumNumberOfZones 的属性。
az appservice plan show \
-n <app-service-plan-name> \
-g <resource-group-name> \
--query properties.maximumNumberOfZones
查询计划 maximumNumberOfZones 的属性。
resource appServicePlan 'Microsoft.Web/serverfarms@2024-11-01' existing = {
name: '<app-service-plan-name>'
}
#disable-next-line BCP083
output maximumNumberOfZones int = appServicePlan.properties.maximumNumberOfZones
将数字与下表进行比较,以确定计划是否支持区域冗余。
| 最大区域数 |
区域冗余支持 |
| 超过 1 |
已支持 |
| 等于 1 |
不支持* |
* 如果使用不支持可用性区域的计划或戳记,则必须在新资源组中创建新的应用服务计划。 此设置可确保部署位于支持可用性区域的应用服务基础结构上。
查看应用服务计划的物理区域
当你有一个区域冗余的应用服务计划时,平台会将计划实例部署在 物理可用区域之间。 使用 Azure 门户或 Azure CLI 检查应用当前实例所报告的物理区域。
注释
观测到的 physicalZone 值是某一时点的位置信息。 它们不能证明隐藏应用副本的存在,也不能保证应用或部署槽的物理区域多样性。 通过使用按应用缩放,应用可在少于该计划实例数的情况下运行。
在 Azure 门户中,进入你想检查的 App Service 应用。
选择 健康检查。
选择 “实例 ”以查看每个实例的物理区域位置。
使用 REST API,它返回 physicalZone 当前观察到的指定应用实例的值。
az rest --method get --url https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/sites/{appName}/instances?api-version=2024-04-01
Bicep不支持此操作。 请改用Azure CLI或Azure门户。
相关内容