替代云服务(外延支持) .cscfg 和 .csdef 文件中的 SKU 设置

本文介绍如何使用 allowModelOverride 属性更新 Azure 云服务中的角色大小和实例计数。 使用此属性时,无需更新服务配置 (.cscfg) 和服务定义 (.csdef) 文件。 因此,可在不重新打包以及不重新部署的情况下,将云服务向上、向下调整规模,以及缩减或扩展。

设置 allowModelOverride 属性

可将 allowModelOverride 属性设置为 truefalse

  • 若 allowModelOverride 设置为 true,API 调用会更新云服务的角色大小和实例计数,而不会通过 .csdef 和 .cscfg 文件验证这些值。

    备注

    .cscfg 文件将会更新,以反映角色实例计数。 .csdef 文件(嵌入于 .cspkg 中)将保留旧值。

  • 若 allowModelOverride 设置为 false,则当角色大小和实例计数值分别与 .csdef 和 .cscfg 文件中的值不匹配时,API 调用将引发错误。

默认值是 false。 若属性设置为 true 后又重置为 false,则系统将再次验证 .csdef 文件和 .cscfg 文件。

以下示例演示如何使用 Azure 资源管理器 (ARM) 模板、PowerShell 或 SDK 来设置 allowModelOverride 属性。

ARM 模板

若在此处将 allowModelOverride 属性设置为 true,则系统会用 roleProfile 部分中定义的角色属性更新云服务:

"properties": {
        "packageUrl": "[parameters('packageSasUri')]",
        "configurationUrl": "[parameters('configurationSasUri')]",
        "upgradeMode": "[parameters('upgradeMode')]",
        "allowModelOverride": true,
        "roleProfile": {
          "roles": [
            {
              "name": "WebRole1",
              "sku": {
                "name": "Standard_D1_v2",
                "capacity": "1"
              }
            },
            {
              "name": "WorkerRole1",
              "sku": {
                "name": "Standard_D1_v2",
                "capacity": "1"
              }
            }
          ]
        },

PowerShell

若对新的 New-AzCloudService cmdlet 设置了 AllowModelOverride 开关,则系统将用角色配置文件中定义的 SKU 属性更新云服务:

New-AzCloudService ` 
-Name "ContosoCS" ` 
-ResourceGroupName "ContosOrg" ` 
-Location "East US" `
-AllowModelOverride  ` 
-PackageUrl $cspkgUrl ` 
-ConfigurationUrl $cscfgUrl ` 
-UpgradeMode 'Auto' ` 
-RoleProfile $roleProfile ` 
-NetworkProfile $networkProfile  ` 
-ExtensionProfile $extensionProfile ` 
-OSProfile $osProfile `
-Tag $tag

SDK

若将 AllowModelOverride 变量设置为 true,则系统将用角色配置文件中定义的 SKU 属性更新云服务:

CloudService cloudService = new CloudService
    {
        Properties = new CloudServiceProperties
            {
                RoleProfile = cloudServiceRoleProfile
                Configuration = < Add Cscfg xml content here>
                PackageUrl = <Add cspkg SAS url here>,
                ExtensionProfile = cloudServiceExtensionProfile,
                OsProfile= cloudServiceOsProfile,
                NetworkProfile = cloudServiceNetworkProfile,
                UpgradeMode = 'Auto',
                AllowModelOverride = true
            },
                Location = m_location
            };
CloudService createOrUpdateResponse = m_CrpClient.CloudServices.CreateOrUpdate("ContosOrg", "ContosoCS", cloudService);

Azure 门户

Azure 门户不允许使用 allowModelOverride 属性来替代 .csdef 和 .cscfg 文件中的角色大小和实例计数。

后续步骤