Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
自动缩放可提供极佳的弹性,并可在辅助节点类型上按需添加或减少节点。 通过监视和优化为工作负载提供服务的节点数量,此自动和弹性行为可减少管理开销和潜在的业务影响。 你只需为工作负载配置规则,其余由自动缩放处理。 当满足这些定义的阈值时,自动缩放规则会采取操作来调整节点类型的容量。 可随时启用、禁用或配置自动缩放。 本文提供示例部署,如何启用或禁用自动缩放,以及如何配置示例自动缩放策略。
要求和支持的指标:
- Service Fabric 托管群集资源的 API 版本应为 2022-01-01 或更高版本。
- 群集 SKU 必须为标准。
- 仅可在群集中的辅助节点类型上配置。
- 为节点类型启用自动缩放后,在重新部署资源时将
vmInstanceCount属性配置为-1。 - 仅支持 Azure Monitor 已发布的指标。
注意
如果将启用了 Hyper-V 角色的 Windows OS 映像(即虚拟机(VM)配置为嵌套虚拟化,则可用内存指标将不可用,因为 VM 中的动态内存驱动程序将处于停止状态。
常见的一个应用自动缩放的场景是特定服务的负载随时间变化。 例如,网关等服务可根据处理传入请求所需的资源量进行缩放。 让我们看看这些缩放规则的外观示例,我们将在本文后面部分使用这些规则:
- 如果我的网关的所有实例平均使用率超过 70%,则通过再增加两个实例来横向扩展网关服务。 每 30 分钟执行此操作一次,但总共不超过 20 个实例。
- 如果我的网关的所有实例平均使用少于 40% 核心,则通过删除一个实例来缩小服务。 每 30 分钟执行一次,但总实例数不能少于 3 个。
自动扩缩部署示例
本示例将逐步引导您完成以下步骤:
- 默认情况下,创建具有两个节点类型的标准 SKU Service Fabric 托管群集
NT1和NT2。 - 向次要节点类型添加自动缩放规则,
NT2。
注意
节点类型的自动缩放是根据托管群集 VMSS CPU 主机指标来完成的。 VMSS 资源在模板中被自动解析。
下面将逐步介绍如何设置已配置自动缩放的群集。
在区域中创建资源组
Connect-AzAccount -Environment AzureChinaCloud Select-AzSubscription -SubscriptionId $subscriptionid New-AzResourceGroup -Name $myresourcegroup -Location $location创建群集资源
下载此示例标准 SKU Service Fabric 托管群集示例 执行以下命令以部署群集资源:
$parameters = @{ clusterName = $clusterName adminPassword = $VmAdminPassword clientCertificateThumbprint = $clientCertificateThumbprint } New-AzResourceGroupDeployment -Name "deploy_cluster" -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterObject $parameters -Verbose配置和启用辅助节点类型的自动缩放规则
下载 托管群集自动缩放示例模板,然后通过以下命令配置自动缩放:
$parameters = @{ clusterName = $clusterName } New-AzResourceGroupDeployment -Name "deploy_autoscale" -ResourceGroupName $resourceGroupName -TemplateFile .\sfmc-deploy-autoscale.json -TemplateParameterObject $parameters -Verbose
注意
此部署完成后,将来的群集资源部署应在启用自动缩放规则的辅助节点类型上将 vmInstanceCount 属性设置为 -1。 这将确保群集部署不会与自动缩放冲突。
启用或禁用辅助节点类型的自动缩放
默认情况下,Service Fabric 托管群集部署的节点类型不会启用自动缩放。 自动缩放可以随时启用或禁用,这取决于每个节点类型的配置和可用性。
若要启用此功能,请在 ARM 模板中的类型enabled下配置Microsoft.Insights/autoscaleSettings属性,如下所示:
"resources": [
{
"type": "Microsoft.Insights/autoscaleSettings",
"apiVersion": "2015-04-01",
"name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
"location": "[resourceGroup().location]",
"properties": {
"name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
"targetResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'), '/nodetypes/', parameters('nodeType2Name'))]",
"enabled": true,
...
若要禁用自动缩放,请将值设置为 false
删除自动缩放规则
若要删除节点类型的任何自动缩放策略设置,可以运行以下 PowerShell 命令。
Remove-AzResource -ResourceId "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/microsoft.insights/autoscalesettings/$name" -Force
设置自动缩放策略
默认情况下,Service Fabric 托管群集不会为自动缩放 配置任何策略。 必须配置自动缩放策略,以便在基础资源上进行任何缩放操作。
以下示例将策略设置为 nodeType2Name 至少三个节点,但允许纵向扩展到 20 个节点。 当过去 30 分钟内的平均 CPU 使用率为 70% 且粒度为 1 分钟时,它会触发纵向扩展。 在过去 30 分钟内,如果平均 CPU 使用率低于 40%,并且监测的粒度为每 1 分钟一次,就会触发缩减。
"resources": [
{
"type": "Microsoft.Insights/autoscaleSettings",
"apiVersion": "2015-04-01",
"name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
"location": "[resourceGroup().location]",
"properties": {
"name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
"targetResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'), '/nodetypes/', parameters('nodeType2Name'))]",
"enabled": "[parameters('enableAutoScale')]",
"profiles": [
{
"name": "Autoscale by percentage based on CPU usage",
"capacity": {
"minimum": "3",
"maximum": "20",
"default": "3"
},
"rules": [
{
"metricTrigger": {
"metricName": "Percentage CPU",
"metricNamespace": "",
"metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/SFC_', reference(resourceId('Microsoft.ServiceFabric/managedClusters', parameters('clusterName')), '2022-01-01').clusterId,'/providers/Microsoft.Compute/virtualMachineScaleSets/',parameters('nodeType2Name'))]",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "PT30M",
"timeAggregation": "Average",
"operator": "GreaterThan",
"threshold": 70
},
"scaleAction": {
"direction": "Increase",
"type": "ChangeCount",
"value": "5",
"cooldown": "PT5M"
}
},
{
"metricTrigger": {
"metricName": "Percentage CPU",
"metricNamespace": "",
"metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/SFC_', reference(resourceId('Microsoft.ServiceFabric/managedClusters', parameters('clusterName')), '2022-01-01').clusterId,'/providers/Microsoft.Compute/virtualMachineScaleSets/',parameters('nodeType2Name'))]",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "PT30M",
"timeAggregation": "Average",
"operator": "LessThan",
"threshold": 40
},
"scaleAction": {
"direction": "Decrease",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT5M"
}
}
]
}
]
}
}
]
可下载此 ARM 模板来启用自动缩放,其中包含上述示例
查看托管群集资源的已配置自动缩放定义
你可以使用 Azure 资源浏览器查看已配置的自动缩放设置。
- 转到 Azure 资源浏览器
导航到
subscriptions->SubscriptionName->resource group->microsoft.insights->autoscalesettings-> 自动缩放策略名称:例如sfmc01-NT2。导航树中将显示类似于下面的内容:
在右侧可以查看此自动缩放设置的完整定义。
在此示例中,自动缩放使用基于 CPU% 的横向扩展和缩减规则进行配置。
疑难解答
应考虑的一些事项:
查看针对托管群集的辅助节点类型触发的自动缩放事件
- 转到群集活动日志
- 查看自动缩放纵向扩展/缩减已完成操作的活动日志
为节点类型配置了多少个虚拟机,工作负载在所有 VM 还是只是部分 VM 上发生?
缩小和扩大阈值的差值是否足够大?
假设你设置了一个规则,指示当五分钟期间的平均 CPU 利用率超过 50% 时扩容,而当平均 CPU 利用率低于 50% 时缩容。 在 CPU 使用率接近此阈值时,此设置会导致“摇摆”问题,缩放操作不断地增加和减少集的大小。 由于此设置,自动缩放服务会尝试防止“摇摆”的发生,这可能表现为不缩放。 因此,请确保扩大和缩小阈值的差值要足够大,以允许在缩放之间存在一些空间。
是否可以扩展或缩减节点类型的规模? 在节点类型层级调整节点数量,并确保顺利完成。 如何在托管群集上缩放节点类型
在 Azure 资源浏览器中查看 Microsoft.ServiceFabric/managedclusters/nodetypes 和 Microsoft.Insights 资源
Azure 资源浏览器是一个不可或缺的疑难解答工具,它显示 Azure 资源管理器资源的状态。 选择订阅并查看要进行故障排除的资源组。 在
ServiceFabric/managedclusters/clustername资源提供程序下,查看NodeTypes下创建的节点类型并检查属性,以验证provisioningState是否为Succeeded。 然后,转到clustername下的 Microsoft.Insights 资源提供程序并检查自动缩放规则是否一切正常。你发出的指标数据是否与预期一致? 使用
Get-AzMetricPowerShell 模块获取资源的指标值并查看
完成这些步骤后,如果仍然存在自动缩放问题,则可以尝试使用以下资源:提交支持请求。 准备共享模板和性能数据的视图。