如何通过New-AzCloudService配置Azure扩展支持可交换云服务
Azure Cloud Services(扩展支持)可交换云服务配置解答
1. 部署时可直接通过New-AzCloudService配置Swappable Cloud Service
支持在创建云服务时直接配置交换配对,你之前运行脚本报New-AzCloudService : Parameter set cannot be resolved using the specified named parameters的核心原因有两点:
- 传入的
SwappableCloudService.Id值格式错误:不能直接传云服务名称,必须传入目标生产云服务的完整ARM资源ID - NetworkProfile构造不符合Az模块参数规范:直接复用旧实例的属性对象会导致参数类型不匹配,触发参数集解析失败
另外需要提前确认本地Az.CloudService模块版本≥4.1.0,低于该版本的cmdlet未开放SwappableCloudService参数,也会触发同类报错。
正确配置步骤如下:
- 先获取待配对的生产环境云服务实例,提取其完整资源ID
- 按Az模块要求的哈希表结构构造NetworkProfile对象,SwappableCloudService字段仅需传入目标实例的完整资源ID即可
- 将构造完成的NetworkProfile作为参数传入New-AzCloudService执行部署
可直接参考以下可运行的代码示例:
# 模块版本不满足要求时先执行:Update-Module -Name Az.CloudService -Force # 1. 获取同资源组、同区域下已存在的生产云服务实例 $productionCloudService = Get-AzCloudService -ResourceGroupName $resourceGroupName -CloudServiceName $productionName # 2. 保留原有负载均衡配置逻辑 $loadBalancerConfig = CreateLoadBalancerConfig # 3. 构造符合参数规范的NetworkProfile $networkProfile = @{ LoadBalancerConfiguration = $loadBalancerConfig SwappableCloudService = @{ Id = $productionCloudService.Id # 必须传入完整ARM资源ID,不能仅传实例名称 } } # 4. 执行暂存环境云服务部署 New-AzCloudService -Name $stagingName ` -ResourceGroupName $resourceGroupName ` -Location $location ` -ConfigurationFile $cscfgFilePath ` -DefinitionFile $csdefFilePath ` -PackageFile $cspkgFilePath ` -StorageAccount $storageAccount ` -KeyVaultName $keyVaultName ` -NetworkProfile $networkProfile
注意:配对的两个云服务必须属于同一订阅、同一资源组、同一区域,配对关系为双向自动生效,暂存实例绑定生产实例后,生产实例的SwappableCloudService字段会自动指向暂存实例,无需重复配置。配对完成后可直接通过Switch-AzCloudService命令执行VIP交换。
2. 部署完成后不支持配置/修改Swappable Cloud Service
目前所有管控渠道(Azure门户、REST API、PowerShell、CLI)都不支持对已部署完成的云服务新增、修改Swappable Cloud Service绑定关系,该配置仅在云服务创建阶段生效。
如果已经部署了未配置交换配对的云服务实例,无法通过后期配置启用交换能力,只能删除该实例后重新部署,在创建流程中传入正确的配对配置。
内容的提问来源于stack exchange,提问作者s.matushonok
相关产品推荐
相关产品推荐

