Поделиться через


Автоматическое масштабирование с помощью метрик гостевой виртуальной машины в шаблоне масштабируемого набора Linux

В Azure существует два основных типа метрик, которые собираются из виртуальных машин и масштабируемых наборов: метрики узла и гостевые метрики. В целом, если вы хотите использовать стандартные показатели ЦП, диска и сети, можно выбрать метрики узла. Однако если вам нужны более крупные метрики, необходимо выбрать метрики гостевой виртуальной машины.

Метрики узла не нуждаются в дополнительной настройке, так как они собираются виртуальной машиной узла, а для метрик гостя требуется установить расширение система диагностики Azure Windows или расширение система диагностики Azure Linux на гостевой виртуальной машине. Одна из основных причин использования метрик гостевой виртуальной машины вместо метрик узла заключается в том, что метрики гостевой виртуальной машины предоставляют больший набор показателей, чем метрики узла. Один из таких примеров — это метрики потребления памяти, которые доступны только через метрики гостевой виртуальной машины. Поддерживаемые метрики узла перечислены здесь, а часто используемые метрики гостевой виртуальной машины — здесь. В этой статье показано, как изменить базовый приемлемый шаблон масштабируемого набора для использования правил автоматического масштабирования на основе метрик гостевой виртуальной машины для масштабируемых наборов Linux.

Изменение определения шаблона

В предыдущей статье мы создали шаблон базового масштабируемого набора. Теперь мы будем использовать этот шаблон и изменим его, чтобы создать шаблон, который развертывает масштабируемый набор Linux из автомасштабирования на основе метрик гостевой виртуальной машины.

Сначала добавьте параметры для storageAccountName и storageAccountSasToken. Агент диагностики хранит данные метрик в таблице в этой учетной записи хранения. Начиная с агента диагностики Linux версии 3.0 использование ключа доступа к хранилищу больше не поддерживается. Вместо этого используйте маркер SAS.

     },
     "adminPassword": {
       "type": "securestring"
+    },
+    "storageAccountName": {
+      "type": "string"
+    },
+    "storageAccountSasToken": {
+      "type": "securestring"
     }
   },

Затем измените масштабируемый набор extensionProfile, чтобы включить расширение диагностики. В этой конфигурации укажите идентификатор ресурса масштабируемого набора, который будет использоваться для сбора метрик, а также учетную запись хранения и маркер SAS для хранения метрик. Укажите то, как часто будут вычисляться метрики (в данном случае — каждую минуту) и какие метрики нужно отслеживать (в этом случае — это процент используемой памяти). Дополнительные сведения об этой конфигурации и других метриках см. в этой документации.

                 }
               }
             ]
+          },
+          "extensionProfile": {
+            "extensions": [
+              {
+                "name": "LinuxDiagnosticExtension",
+                "properties": {
+                  "publisher": "Microsoft.Azure.Diagnostics",
+                  "type": "LinuxDiagnostic",
+                  "typeHandlerVersion": "3.0",
+                  "settings": {
+                    "StorageAccount": "[parameters('storageAccountName')]",
+                    "ladCfg": {
+                      "diagnosticMonitorConfiguration": {
+                        "performanceCounters": {
+                          "sinks": "WADMetricJsonBlob",
+                          "performanceCounterConfiguration": [
+                            {
+                              "unit": "percent",
+                              "type": "builtin",
+                              "class": "memory",
+                              "counter": "percentUsedMemory",
+                              "counterSpecifier": "/builtin/memory/percentUsedMemory",
+                              "condition": "IsAggregate=TRUE"
+                            }
+                          ]
+                        },
+                        "metrics": {
+                          "metricAggregation": [
+                            {
+                              "scheduledTransferPeriod": "PT1M"
+                            }
+                          ],
+                          "resourceId": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', 'myScaleSet')]"
+                        }
+                      }
+                    }
+                  },
+                  "protectedSettings": {
+                    "storageAccountName": "[parameters('storageAccountName')]",
+                    "storageAccountSasToken": "[parameters('storageAccountSasToken')]",
+                    "sinksConfig": {
+                      "sink": [
+                        {
+                          "name": "WADMetricJsonBlob",
+                          "type": "JsonBlob"
+                        }
+                      ]
+                    }
+                  }
+                }
+              }
+            ]
           }
         }
       }

Наконец, добавьте ресурс autoscaleSettings, чтобы настроить автоматическое масштабирование на основе этих метрик. Для ресурса указано предложение dependsOn, которое ссылается на масштабируемый набор, чтобы убедиться, что масштабируемый набор имеется, прежде чем пытаться его масштабировать. Если бы для автоматического масштабирования была выбрана другая метрика, вы бы использовали counterSpecifier из конфигурации расширения диагностики в качестве metricName в конфигурации автоматического масштабирования. Дополнительные сведения о настройке автомасштабирования см. в статье Рекомендации по автомасштабированию и Создание или обновление параметров автоматического масштабирования.

+    },
+    {
+      "type": "Microsoft.Insights/autoscaleSettings",
+      "apiVersion": "2015-04-01",
+      "name": "guestMetricsAutoscale",
+      "location": "[resourceGroup().location]",
+      "dependsOn": [
+        "Microsoft.Compute/virtualMachineScaleSets/myScaleSet"
+      ],
+      "properties": {
+        "name": "guestMetricsAutoscale",
+        "targetResourceUri": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', 'myScaleSet')]",
+        "enabled": true,
+        "profiles": [
+          {
+            "name": "Profile1",
+            "capacity": {
+              "minimum": "1",
+              "maximum": "10",
+              "default": "3"
+            },
+            "rules": [
+              {
+                "metricTrigger": {
+                  "metricName": "/builtin/memory/percentUsedMemory",
+                  "metricNamespace": "",
+                  "metricResourceUri": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', 'myScaleSet')]",
+                  "timeGrain": "PT1M",
+                  "statistic": "Average",
+                  "timeWindow": "PT5M",
+                  "timeAggregation": "Average",
+                  "operator": "GreaterThan",
+                  "threshold": 60
+                },
+                "scaleAction": {
+                  "direction": "Increase",
+                  "type": "ChangeCount",
+                  "value": "1",
+                  "cooldown": "PT1M"
+                }
+              },
+              {
+                "metricTrigger": {
+                  "metricName": "/builtin/memory/percentUsedMemory",
+                  "metricNamespace": "",
+                  "metricResourceUri": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', 'myScaleSet')]",
+                  "timeGrain": "PT1M",
+                  "statistic": "Average",
+                  "timeWindow": "PT5M",
+                  "timeAggregation": "Average",
+                  "operator": "LessThan",
+                  "threshold": 30
+                },
+                "scaleAction": {
+                  "direction": "Decrease",
+                  "type": "ChangeCount",
+                  "value": "1",
+                  "cooldown": "PT1M"
+                }
+              }
+            ]
+          }
+        ]
+      }
     }
   ]
 }

Дальнейшие действия

Предыдущий шаблон можно развернуть, следуя указаниям, описанным в документации по Azure Resource Manager.

Начать работу с этой серией руководств можно со статьи о шаблоне базового масштабируемого набора.

Вы узнаете, как изменить шаблон базового масштабируемого набора, чтобы развернуть масштабируемый набор в существующей виртуальной сети.

Вы узнаете, как изменить шаблон базового масштабируемого набора, чтобы развернуть масштабируемый набор с помощью настраиваемого образа.

Вы узнаете, как изменить шаблон базового масштабируемого набора, чтобы развернуть масштабируемый набор Linux с использованием автосохранения на основе гостя.

Дополнительные сведения о масштабируемых наборах см. на этой странице.