同服务计划两个Azure Web应用VNET网络配置报错咨询
Azure Web应用关联VNET子网触发App Service Plan VNET配额超限报错解决方案
问题场景
- 环境配置:
- 2个Web应用
webapps1、webapps4部署在同一个应用服务计划SP1下,计划规格为P1v2: 1 - 配套虚拟网络
VNET1,其下2个子网均已配置Microsoft.Web/serverFarms委托
- 2个Web应用
- 操作目标:将
webapps1关联至VNET1的sub01子网,webapps4关联至VNET1的sub02子网 - 执行的PowerShell配置脚本:
# 为webapps1配置子网关联 $properties = @{ subnetResourceId = "/subscriptions/XXX/resourceGroups/RG1/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/sub01" } $vNetParams = @{ ResourceName = "mywebapps1/VirtualNetwork" Location = "West Europe" ResourceGroupName = "RG1" ResourceType = "Microsoft.Web/sites/networkConfig" PropertyObject = $properties } $result = New-AzResource @vNetParams -Force # 为webapps4配置子网关联 $properties = @{ subnetResourceId = "/subscriptions/XXX/resourceGroups/RG1/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/sub02" } $vNetParams = @{ ResourceName = "mywebapps4/VirtualNetwork" Location = "West Europe" ResourceGroupName = "RG1" ResourceType = "Microsoft.Web/sites/networkConfig" PropertyObject = $properties } $result = New-AzResource @vNetParams -Force
- 执行结果:第一条命令执行成功,第二条命令抛出如下错误:
New-AzResource : {"Code":"Conflict","Message":"Adding this VNET would exceed the App Service Plan VNET limit of 1
问题解答
1. 报错具体含义
该报错由旧版经典VNET集成的架构限制触发:
- 你当前调用的
Microsoft.Web/sites/networkConfig资源接口对应Azure App Service的旧版经典VNET集成模式,该模式下VNET关联规则绑定在App Service计划(ASP)层面而非单Web应用层面,对应配额规则为:每个ASP最多只能关联1个VNET连接,与子网是否属于同一个VNET无关。 - 你已经为同属SP1计划的webapps1配置了VNET关联,再给同计划下的webapps4配置VNET关联时,系统判定会超出单ASP 1个VNET连接的配额,因此抛出Conflict错误。
- 该报错并非P1v2 SKU规格不足导致,而是旧版接口本身的架构限制,不支持同ASP下多应用关联多子网的场景。
2. 正确配置方法
可根据业务需求选择以下两种可行方案:
方案一:切换为新版区域VNET集成(最优,无额外成本)
新版区域VNET集成是Azure官方推荐的标准集成方案,VNET规则绑定在单应用层面,同ASP下的应用可共享集成基础设施,分别接入同VNET下的不同子网,不会触发配额超限,操作步骤如下:- 先删除当前已经给webapps1配置的旧版VNET关联,清除SP1计划上残留的经典VNET集成配置
- 弃用旧版
Microsoft.Web/sites/networkConfig资源接口,改用新版VNET集成对应的官方命令配置。PowerShell配置示例:
# 为webapps1关联sub01子网 $sub01Id = "/subscriptions/XXX/resourceGroups/RG1/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/sub01" Set-AzWebApp -ResourceGroupName "RG1" -Name "mywebapps1" -VNetIntegrationSubnetId $sub01Id # 为webapps4关联sub02子网 $sub02Id = "/subscriptions/XXX/resourceGroups/RG1/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/sub02" Set-AzWebApp -ResourceGroupName "RG1" -Name "mywebapps4" -VNetIntegrationSubnetId $sub02Id也可使用Azure CLI完成配置:
# 配置webapps1 az webapp vnet-integration add --name mywebapps1 --resource-group RG1 --vnet vnet1 --subnet sub01 # 配置webapps4 az webapp vnet-integration add --name mywebapps4 --resource-group RG1 --vnet vnet1 --subnet sub02- 前置校验:确保两个子网均已完成
Microsoft.Web/serverFarms委托,同时子网未配置强制网络策略阻断Web应用的出站集成流量,否则配置会失败。
方案二:拆分App Service计划
若因业务兼容需求必须使用旧版经典VNET集成模式,需要为webapps4单独创建一个独立的同规格App Service计划,两个应用部署在不同的ASP下,即可各自独立配置VNET子网关联,不会触发配额限制。该方案需要额外支付新App Service计划实例的运行成本。
内容的提问来源于stack exchange,提问作者Frédéric De Lène Mirouze
相关产品推荐
相关产品推荐

