Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Автомасштабирование предоставляет большую эластичность и позволяет добавлять или удалять узлы по запросу на узле дополнительного типа. Подобная автоматическая гибкая реакция на событие снижает расходы на управление и потенциальные последствия для бизнеса за счет мониторинга и оптимизации количества узлов, обслуживающих рабочую нагрузку. Вы настраиваете правила для рабочей нагрузки, а автомасштабирование занимается всем остальным. При достижении определенных порогов задействуются правила автомасштабирования для настройки емкости типа узла. Автомасштабирование можно включить, отключить или настроить в любой момент. В этой статье приводится пример развертывания, включения и отключения автомасштабирования, а также настройки политики автомасштабирования.
Требования и поддерживаемые метрики.
- Для ресурса управляемого кластера Service Fabric параметр apiVersion должен иметь значение 2022-01-01 или выше.
- SKU кластера должен быть 'Стандартный'.
- Можно настроить только на дополнительном типе узла в кластере.
- Включив автомасштабирование для типа узла, задайте для свойства
vmInstanceCount
значение-1
при повторном развертывании ресурса. - Поддерживаются только метрики Azure Monitor.
Примечание.
Если вы используете образ ОС Windows со включенной ролью Hyper-V, то есть эта виртуальная машина будет использовать вложенную виртуализацию, метрика доступной памяти будет недоступна, так как драйвер динамической памяти на виртуальной машине будет находиться в остановленном состоянии.
Автомасштабирование полезно, когда нагрузка на определённую службу варьируется с течением времени. Например, такая служба, как шлюз, может масштабироваться на основе количества ресурсов, необходимых для обработки входящих запросов. Рассмотрим пример таких правила масштабирования и будем использовать их далее в этой статье.
- Если все экземпляры моего шлюза в среднем используют более 70 %, масштабируйте службу шлюза, добавив два дополнительных экземпляра. Делайте это каждые 30 минут, но не более двадцати раз в общей сложности.
- Если все экземпляры шлюза в среднем используют менее 40 % ядер, масштабируйте службу, удалив один экземпляр. Выполняйте это каждые 30 минут, но всего не менее трех раз.
Пример развертывания с автомасштабированием
В этом примере мы рассмотрим:
- Создание управляемого кластера Service Fabric стандартной конфигурации SKU с двумя типами узлов,
NT1
иNT2
, по умолчанию. - Добавление правил автомасштабирования для дополнительного типа узла
NT2
.
Примечание.
Автомасштабирование типа узла осуществляется на основе метрик ЦП хоста VMSS управляемого кластера. Ресурс VMSS автоматически разрешается в шаблоне.
Ниже представлены пошаговые инструкции по настройке кластера с настроенным автомасштабированием.
Создание группы ресурсов в регионе
Login-AzAccount Select-AzSubscription -SubscriptionId $subscriptionid New-AzResourceGroup -Name $myresourcegroup -Location $location
Создание кластерного ресурса
Скачайте этот пример управляемого кластера Service Fabric с номером SKU "Стандартный". Выполните эту команду, чтобы развернуть кластерный ресурс:
$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, по умолчанию не позволяют включать автомасштабирование. Автомасштабирование можно включить или отключить в любой момент для каждого типа узла, который настроен и доступен.
Чтобы включить эту функцию, настройте свойство enabled
под типом Microsoft.Insights/autoscaleSettings
в шаблоне ARM, как показано ниже:
"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
будет установлена политика иметь не менее 3 узлов, но допускать масштабирование до 20 узлов. Она активирует увеличение масштаба, если средний объем использования ресурсов ЦП составляет 70 % за последние 30 минут со степенью детализации в 1 минуту. Она активирует уменьшение масштаба, если средний объем использования ресурсов ЦП составляет менее 40 % за последние 30 минут со степенью детализации в 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
.В дереве навигации отобразится примерно следующее:
Справа можно просмотреть полное определение этой конфигурации автомасштабирования.
В данном примере в конфигурации автомасштабирования используется правило масштабирования по шкале на основе загрузки ЦП в процентах.
Устранение неполадок
Необходимо учитывать следующие факторы.
Просмотрите события автомасштабирования, которые запускаются для дополнительных типов узлов управляемых кластеров.
- Перейдите к журналу действий кластера.
- Просмотрите журнал действий для завершенной операции масштабирования («Автомасштабирование») по увеличению/уменьшению.
Сколько виртуальных машин настроено для типа узла? Выполняется ли рабочая нагрузка на всех узлах или только на некоторых?
Отличаются ли пороговые значения для масштабирования внутрь и наружу?
Предположим, что вы установили такие правила: горизонтально увеличивать масштаб, если средняя загрузка ЦП в течение пяти минут превышает 50 %; горизонтально уменьшать масштаб, если средняя загрузка ЦП меньше 50 %. Такая конфигурация приводит к нестабильности. Когда загрузка ЦП приблизится к пороговому значению, действия по увеличению и уменьшению масштаба будут выполняться постоянно, непрерывно изменяя размер набора. Из-за этой настройки служба автомасштабирования пытается предотвратить «скачки», которые могут проявляться как отсутствие масштабирования. Поэтому убедитесь, что пороговые значения для действий по увеличению и уменьшению масштаба ощутимо отличаются, чтобы создать некоторое пространство между изменениями масштаба.
Можете ли вы увеличить или уменьшить масштаб типа узла? Настройте количество узлов на уровне типа узла и убедитесь, что операция успешно завершена. Масштабирование типа узла в управляемом кластере
Проверьте ресурсы Microsoft.ServiceFabric/managedclusters/nodetypes и Microsoft.Insights в обозревателе ресурсов Azure.
Обозреватель ресурсов Azure — это незаменимый инструмент для устранения неполадок, в котором отображается состояние ресурсов Azure Resource Manager. Откройте свою подписку и обратите внимание на группу ресурсов, в которой вы устраняете неполадки. В области поставщика ресурсов
ServiceFabric/managedclusters/clustername
найдите в разделеNodeTypes
созданные вами типы узлов проверьте их свойства. СвойствоprovisioningState
должно иметь значениеSucceeded
. Затем перейдите к поставщику ресурса Microsoft.Insights вclustername
и проверьте, правильно ли там указаны правила автомасштабирования.Соответствуют ли выходные значения метрик ожидаемым?
Get-AzMetric
Использование модуля PowerShell для получения значений метрик ресурса и проверки
Если после выполнения этих действий по-прежнему возникают проблемы автомасштабирования, можно попробовать найти решение в следующих ресурсах: Регистрация запроса на поддержку. Будьте готовы предоставить шаблон и обзор данных о вашей производительности.