Omówienie ustawień automatycznego skalowania
Ustawienia autoskalowania pomagają upewnić się, że masz odpowiednią ilość zasobów uruchomionych w celu obsługi zmieniającego się obciążenia aplikacji. Ustawienia autoskalowania można skonfigurować tak, aby zostały wyzwolone na podstawie metryk wskazujących obciążenie lub wydajność albo wyzwalane zgodnie z zaplanowaną datą i godziną.
W tym artykule opisano ustawienia automatycznego skalowania.
Schemat ustawień automatycznego skalowania
W poniższym przykładzie przedstawiono ustawienie skalowania automatycznego z następującymi atrybutami:
- Pojedynczy profil domyślny.
- Dwie reguły metryk w tym profilu: jedna dla skalowania w poziomie i jedna dla skalowania w poziomie.
- Reguła skalowania w poziomie jest wyzwalana, gdy średnia metryka procesora CPU zestawu skalowania maszyn wirtualnych jest większa niż 85% w ciągu ostatnich 10 minut.
- Reguła skalowania w poziomie jest wyzwalana, gdy średnia zestawu skalowania maszyn wirtualnych jest mniejsza niż 60% w ciągu ostatniej minuty.
Uwaga
Ustawienie może mieć wiele profilów. Aby dowiedzieć się więcej, zobacz sekcję profile . Profil może również zawierać wiele reguł skalowania w poziomie i zdefiniowanych reguł skalowania w poziomie. Aby zobaczyć, jak są oceniane, zobacz sekcję oceny .
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Insights/autoscaleSettings",
"apiVersion": "2015-04-01",
"name": "VMSS1-Autoscale-607",
"location": "eastus",
"properties": {
"name": "VMSS1-Autoscale-607",
"enabled": true,
"targetResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
"profiles": [
{
"name": "Auto created default scale condition",
"capacity": {
"minimum": "1",
"maximum": "4",
"default": "1"
},
"rules": [
{
"metricTrigger": {
"metricName": "Percentage CPU",
"metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "PT10M",
"timeAggregation": "Average",
"operator": "GreaterThan",
"threshold": 85
},
"scaleAction": {
"direction": "Increase",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT5M"
}
},
{
"metricTrigger": {
"metricName": "Percentage CPU",
"metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "PT10M",
"timeAggregation": "Average",
"operator": "LessThan",
"threshold": 60
},
"scaleAction": {
"direction": "Decrease",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT5M"
}
}
]
}
]
}
}
W poniższej tabeli opisano elementy w poprzednim ustawieniu autoskalowania JSON.
Sekcja | Nazwa elementu | Nazwa portalu | opis |
---|---|---|---|
Ustawienie | ID | Identyfikator zasobu ustawienia automatycznego skalowania. Ustawienia skalowania automatycznego to zasób usługi Azure Resource Manager. | |
Ustawienie | name | Nazwa ustawienia automatycznego skalowania. | |
Ustawienie | lokalizacja | Lokalizacja ustawienia autoskalowania. Ta lokalizacja może różnić się od lokalizacji skalowanego zasobu. | |
właściwości | targetResourceUri | Identyfikator zasobu skalowanego zasobu. Można mieć tylko jedno ustawienie autoskalowanie na zasób. | |
właściwości | Profile | Warunek skalowania | Ustawienie autoskalowania składa się z co najmniej jednego profilu. Za każdym razem, gdy aparat autoskaluje, wykonuje jeden profil. Skonfiguruj maksymalnie 20 profilów na ustawienie autoskalowania. |
Profile | name | Nazwa profilu. Możesz wybrać dowolną nazwę, która ułatwia zidentyfikowanie profilu. | |
Profile | capacity.maximum | Limity wystąpień — maksimum | Dozwolona maksymalna pojemność. Gwarantuje to, że autoskalowanie nie skaluje zasobu powyżej tej liczby podczas wykonywania profilu. |
Profile | capacity.minimum | Limity wystąpień — minimum | Dozwolona minimalna pojemność. Gwarantuje to, że autoskalowanie nie skaluje zasobu poniżej tej liczby podczas wykonywania profilu |
Profile | capacity.default | Limity wystąpień — ustawienie domyślne | Jeśli występuje problem podczas odczytywania metryki zasobów, a bieżąca pojemność jest poniżej wartości domyślnej, skalowanie automatyczne jest skalowane w poziomie do wartości domyślnej. Ta akcja zapewnia dostępność zasobu. Jeśli bieżąca pojemność jest już wyższa niż pojemność domyślna, skalowanie automatyczne nie jest skalowane w poziomie. |
Profile | rules | Reguły | Automatyczne skalowanie automatycznie skaluje się między maksymalną i minimalną pojemnością przy użyciu reguł w profilu. Zdefiniuj maksymalnie 10 indywidualnych reguł w profilu. Zazwyczaj reguły są definiowane w parach, jeden do określenia, kiedy należy skalować w poziomie, a drugi do określenia, kiedy należy skalować w poziomie. |
reguła | metricTrigger | Reguła skalowania | Definiuje warunek metryki reguły. |
metricTrigger | metricName | Nazwa metryki | Nazwa metryki. |
metricTrigger | metricResourceUri | Identyfikator zasobu, który emituje metryki. W większości przypadków jest to samo, co skalowany zasób. W niektórych przypadkach może to być inne. Na przykład można skalować zestaw skalowania maszyn wirtualnych na podstawie liczby komunikatów w kolejce magazynu. | |
metricTrigger | timeGrain | Ziarno czasu (w minutach) | Czas trwania próbkowania metryk. Na przykład timeGrain = "PT1M" oznacza, że metryki powinny być agregowane co 1 minutę przy użyciu metody agregacji określonej w elemendystyce statystyki. |
metricTrigger | Statystyki | Statystyka ziarna czasu | Metoda agregacji w okresie timeGrain. Na przykład statystyka = "Średnia" i timeGrain = "PT1M" oznacza, że metryki powinny być agregowane co 1 minutę, biorąc średnią. Ta właściwość określa sposób próbkowania metryki. |
metricTrigger | timeWindow | Czas trwania | Ilość czasu na wyszukanie metryk. Na przykład timeWindow = "PT10M" oznacza, że za każdym razem, gdy jest uruchamiane automatyczne skalowanie, wysyła zapytania do metryk z ostatnich 10 minut. Przedział czasu umożliwia znormalizowanie metryk i unikanie reagowania na przejściowe skoki. |
metricTrigger | timeAggregation | Agregacja czasu | Metoda agregacji używana do agregowania przykładowych metryk. Na przykład timeAggregation = "Średnia" powinna agregować próbkowane metryki, przyjmując średnią. W poprzednim przypadku weź dziesięć minut próbek i uśrednij je. |
reguła | scaleAction | Akcja | Akcja do wykonania po wyzwoleniu metrykiTrigger reguły. |
scaleAction | kierunek | Operacja | "Zwiększ" w celu skalowania w poziomie lub "Zmniejsz", aby przeprowadzić skalowanie w poziomie. |
scaleAction | wartość | Liczba wystąpień | Ile należy zwiększyć lub zmniejszyć pojemność zasobu. |
scaleAction | cooldown | Czas schładzania (minuty) | Czas oczekiwania po operacji skalowania przed ponownym skalowaniem. Okres ochładzania wchodzi w życie po zdarzeniu skalowalnym lub skalowalnym w poziomie. Jeśli na przykład cooldown = "PT10M", autoskalowanie nie próbuje ponownie skalować przez kolejne 10 minut. Chłodzenie polega na umożliwieniu stabilizacji metryk po dodaniu lub usunięciu wystąpień. |
Profile skalowania automatycznego
Zdefiniuj maksymalnie 20 różnych profilów na ustawienie autoskalowania.
Istnieją trzy typy profilów skalowania automatycznego:
Profil domyślny: użyj profilu domyślnego, jeśli nie musisz skalować zasobu na podstawie określonej daty i godziny lub dnia tygodnia. Profil domyślny jest uruchamiany, gdy nie ma żadnych innych odpowiednich profilów dla bieżącej daty i godziny. Możesz mieć tylko jeden profil domyślny.
Profil daty stałej: profil stałej daty jest odpowiedni dla pojedynczej daty i godziny. Użyj profilu stałej daty, aby ustawić reguły skalowania dla określonego zdarzenia. Profil jest uruchamiany tylko raz w dniu i o godzinie zdarzenia. W przypadku wszystkich pozostałych przypadków autoskaluj używa profilu domyślnego.
... "profiles": [ { "name": " regularProfile", "capacity": { ... }, "rules": [ ... ] }, { "name": "eventProfile", "capacity": { ... }, "rules": [ ... ], "fixedDate": { "timeZone": "Pacific Standard Time", "start": "2017-12-26T00:00:00", "end": "2017-12-26T23:59:00" } } ]
Profil cyklu: profil cyklu jest używany przez dzień lub zestaw dni tygodnia. Schemat profilu cyklicznego nie zawiera daty zakończenia. Data i godzina dla profilu cyklicznego są ustawiane według godziny rozpoczęcia następującego profilu. Gdy portal jest używany do konfigurowania profilów cyklicznych, profil domyślny jest automatycznie aktualizowany w celu rozpoczęcia od momentu zakończenia określonego dla profilu cyklicznego. Aby uzyskać więcej informacji na temat konfigurowania wielu profilów, zobacz Autoskalowanie z wieloma profilami
Przykład częściowego schematu przedstawia tutaj profil cykliczny. Rozpoczyna się o 06:00 i kończy się o godzinie 19:00 w soboty i niedziele. Profil domyślny został zmodyfikowany tak, aby rozpoczynał się o godzinie 19:00 w soboty i niedziele.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ { "type": "Microsoft.Insights/ autoscaleSettings", "apiVersion": "2015-04-01", "name": "VMSS1-Autoscale-607", "location": "eastus", "properties": { "name": "VMSS1-Autoscale-607", "enabled": true, "targetResourceUri": "/subscriptions/ abc123456-987-f6e5-d43c-9a8d8e7f6541/ resourceGroups/rg-vmss1/providers/ Microsoft.Compute/ virtualMachineScaleSets/VMSS1", "profiles": [ { "name": "Weekend profile", "capacity": { ... }, "rules": [ ... ], "recurrence": { "frequency": "Week", "schedule": { "timeZone": "E. Europe Standard Time", "days": [ "Saturday", "Sunday" ], "hours": [ 6 ], "minutes": [ 0 ] } } }, { "name": "{\"name\":\"Auto created default scale condition\",\"for\":\"Weekend profile\"}", "capacity": { ... }, "recurrence": { "frequency": "Week", "schedule": { "timeZone": "E. Europe Standard Time", "days": [ "Saturday", "Sunday" ], "hours": [ 19 ], "minutes": [ 0 ] } }, "rules": [ ... ] } ], "notifications": [], "targetResourceLocation": "eastus" } } ] }
Autoskaluj ocenę
Ustawienia skalowania automatycznego mogą mieć wiele profilów. Każdy profil może mieć wiele reguł. Za każdym razem, gdy zadanie skalowania automatycznego jest uruchamiane, rozpoczyna się od wybrania odpowiedniego profilu dla tego czasu. Autoskaluj następnie oblicza wartości minimalne i maksymalne, wszystkie reguły metryk w profilu i decyduje, czy wymagana jest akcja skalowania. Zadanie skalowania automatycznego jest uruchamiane co 30 do 60 sekund w zależności od typu zasobu. Po wykonaniu akcji skalowania zadanie autoskalowania czeka na okres ochładzania, zanim zostanie ponownie skalowane. Okres chłodzenia dotyczy zarówno akcji skalowania w poziomie, jak i skalowania w poziomie.
Który profil będzie używany do automatycznego skalowania?
Za każdym razem, gdy usługa autoskalowania jest uruchamiana, profile są oceniane w następującej kolejności:
- Profile o stałej dacie
- Profile cykliczne
- Profil domyślny
Pierwszy znaleziony profil jest używany.
Jak skalowanie automatyczne ocenia wiele reguł?
Po określeniu, który profil ma zostać uruchomiony, ocenia reguły skalowania w poziomie w profilu, czyli gdzie kierunek = "Zwiększ". Jeśli co najmniej jedna reguła skalowania w poziomie zostanie wyzwolona, autoskalowanie oblicza nową pojemność określoną przez funkcję scaleAction określoną dla każdej reguły. Jeśli zostanie wyzwolona więcej niż jedna reguła skalowania w poziomie, skalowanie automatyczne jest skalowane do najwyższej określonej pojemności w celu zapewnienia dostępności usługi.
Załóżmy na przykład, że istnieją dwie reguły: Reguła 1 określa skalowanie w poziomie przez trzy wystąpienia, a reguła 2 określa skalowanie w poziomie o pięć. Jeśli obie reguły są wyzwalane, skalowanie automatyczne jest skalowane w poziomie przez pięć wystąpień. Podobnie, jeśli jedna reguła określa skalowanie w poziomie przez trzy wystąpienia, a druga reguła określa skalowanie w poziomie o 15%, wyższa z dwóch liczby wystąpień jest używana.
Jeśli żadne reguły skalowania w poziomie nie zostaną wyzwolone, autoskaluje reguły skalowania w poziomie, czyli reguły z kierunkiem = "Zmniejsz". Skalowanie automatyczne jest skalowane tylko wtedy, gdy wszystkie reguły skalowania są wyzwalane.
Autoskalowanie oblicza nową pojemność określoną przez funkcję scaleAction każdej z tych reguł. Aby zapewnić dostępność usługi, skalowanie automatyczne jest skalowane w możliwie najmniejszym stopniu, aby osiągnąć maksymalną określoną pojemność. Załóżmy na przykład, że dwie reguły skalowania w poziomie zmniejszają pojemność o 50% i jedną, która zmniejsza pojemność o trzy wystąpienia. Jeśli pierwsza reguła spowoduje pięć wystąpień, a druga reguła spowoduje siedem, skalowanie automatyczne jest skalowane do siedmiu wystąpień.
Za każdym razem, gdy autoskalowania oblicza wynik akcji skalowania w poziomie, ocenia, czy ta akcja wyzwoli akcję skalowania w poziomie. Scenariusz, w którym akcja skalowania wyzwala przeciwną akcję skalowania, jest nazywana flappingiem. Autoskalowanie może odroczyć akcję skalowania w celu uniknięcia flappingu lub skalowania o liczbę mniejszą niż określona w regule. Aby uzyskać więcej informacji na temat flappingu, zobacz Flapping in autoscale (Flapping in autoscale).
Następne kroki
Dowiedz się więcej o autoskalowaniem:
- Omówienie autoskalowania
- Typowe metryki skalowania automatycznego w usłudze Azure Monitor
- Autoskaluj z wieloma profilami
- Flapping in autoscale (Flapping in autoscale) (Flapping in autos
- Wysyłanie powiadomień o alertach wiadomości e-mail i elementu webhook za pomocą akcji automatycznego skalowania
- Interfejs API REST automatycznego skalowania