本文介绍如何使用 allowModelOverride 属性更新 Azure 云服务中的角色大小和实例计数。 使用此属性时,无需更新服务配置 (.cscfg) 和服务定义 (.csdef) 文件。 因此,可在不重新打包以及不重新部署的情况下,将云服务向上、向下调整规模,以及缩减或扩展。
可将 allowModelOverride 属性设置为 true
或 false
。
若 allowModelOverride 设置为
true
,API 调用会更新云服务的角色大小和实例计数,而不会通过 .csdef 和 .cscfg 文件验证这些值。备注
.cscfg 文件将会更新,以反映角色实例计数。 .csdef 文件(嵌入于 .cspkg 中)将保留旧值。
若 allowModelOverride 设置为
false
,则当角色大小和实例计数值分别与 .csdef 和 .cscfg 文件中的值不匹配时,API 调用将引发错误。
默认值是 false
。 若属性设置为 true
后又重置为 false
,则系统将再次验证 .csdef 文件和 .cscfg 文件。
以下示例演示如何使用 Azure 资源管理器 (ARM) 模板、PowerShell 或 SDK 来设置 allowModelOverride 属性。
若在此处将 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"
}
}
]
},
若对新的 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
若将 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 门户不允许使用 allowModelOverride 属性来替代 .csdef 和 .cscfg 文件中的角色大小和实例计数。