Udostępnij za pośrednictwem


Autoskaluj przy użyciu metryk gościa w szablonie zestawu skalowania systemu Linux

Istnieją dwa szerokie typy metryk na platformie Azure, które są zbierane z maszyn wirtualnych i zestawów skalowania: Metryki hosta i metryki gościa. Na wysokim poziomie, jeśli chcesz używać standardowych metryk procesora CPU, dysku i sieci, metryki hosta są odpowiednie. Jeśli jednak potrzebujesz większego wyboru metryk, należy zapoznać się z metrykami gościa.

Metryki hosta nie wymagają dodatkowej konfiguracji, ponieważ są zbierane przez maszynę wirtualną hosta, natomiast metryki gościa wymagają zainstalowania rozszerzenia Diagnostyka Azure systemu Windows lub rozszerzenia Diagnostyka Azure systemu Linux na maszynie wirtualnej gościa. Jedną z typowych przyczyn użycia metryk gościa zamiast metryk hosta jest to, że metryki gościa zapewniają większy wybór metryk niż metryki hosta. Jednym z takich przykładów są metryki użycia pamięci, które są dostępne tylko za pośrednictwem metryk gościa. Obsługiwane metryki hosta są wymienione tutaj i często używane metryki gościa są wymienione tutaj. W tym artykule pokazano, jak zmodyfikować podstawowy, opłacalny szablon zestawu skalowania w celu używania reguł skalowania automatycznego na podstawie metryk gościa dla zestawów skalowania systemu Linux.

Zmienianie definicji szablonu

W poprzednim artykule utworzyliśmy podstawowy szablon zestawu skalowania. Teraz użyjemy tego wcześniejszego szablonu i zmodyfikujemy go, aby utworzyć szablon, który wdraża zestaw skalowania systemu Linux z autoskalowaniem opartym na metrykach gościa.

Najpierw dodaj parametry dla storageAccountName i storageAccountSasToken. Agent diagnostyki przechowuje dane metryk w tabeli na tym koncie magazynu. Od agenta diagnostyki systemu Linux w wersji 3.0 użycie klucza dostępu do magazynu nie jest już obsługiwane. Zamiast tego użyj tokenu sygnatury dostępu współdzielonego.

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

Następnie zmodyfikuj zestaw extensionProfile skalowania, aby uwzględnić rozszerzenie diagnostyczne. W tej konfiguracji określ identyfikator zasobu zestawu skalowania do zbierania metryk, a także konto magazynu i token SYGNATURy dostępu współdzielonego do przechowywania metryk. Określ częstotliwość agregacji metryk (w tym przypadku co minutę) oraz metryki do śledzenia (w tym przypadku procent używanej pamięci). Aby uzyskać bardziej szczegółowe informacje na temat tej konfiguracji i metryk innych niż procent używanej pamięci, zobacz tę dokumentację.

                 }
               }
             ]
+          },
+          "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"
+                        }
+                      ]
+                    }
+                  }
+                }
+              }
+            ]
           }
         }
       }

Na koniec dodaj autoscaleSettings zasób, aby skonfigurować autoskalowanie na podstawie tych metryk. Ten zasób zawiera klauzulę odwołującą dependsOn się do zestawu skalowania, aby upewnić się, że zestaw skalowania istnieje przed próbą automatycznego skalowania. Jeśli wybierzesz inną metrykę do automatycznego skalowania, użyj counterSpecifier konfiguracji rozszerzenia diagnostyki jako metricName w konfiguracji autoskalowania. Aby uzyskać więcej informacji na temat konfiguracji autoskalowanie, zobacz dokumentację najlepszych rozwiązań dotyczących automatycznego skalowania i dokumentacji interfejsu API REST usługi Azure Monitor.

+    },
+    {
+      "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"
+                }
+              }
+            ]
+          }
+        ]
+      }
     }
   ]
 }

Następne kroki

Poprzedni szablon można wdrożyć, wykonując instrukcje opisane w dokumentacji usługi Azure Resource Manager.

Tę serię samouczków można uruchomić z artykułu szablonu podstawowego zestawu skalowania.

Zobaczysz, jak zmodyfikować szablon podstawowego zestawu skalowania w celu wdrożenia zestawu skalowania w istniejącej sieci wirtualnej.

Zobaczysz, jak zmodyfikować szablon podstawowego zestawu skalowania w celu wdrożenia zestawu skalowania przy użyciu obrazu niestandardowego.

Możesz zobaczyć, jak zmodyfikować podstawowy szablon zestawu skalowania w celu wdrożenia zestawu skalowania systemu Linux przy użyciu automatycznego skalowania opartego na gościu.

Aby uzyskać więcej informacji na temat zestawów skalowania, zobacz stronę przeglądu zestawu skalowania.