Omówienie ustawień automatycznego skalowania
Ustawienia autoskalowania pomagają zagwarantować, że masz uruchomioną odpowiednią ilość zasobów, aby obsłużyć zmienne obciążenie 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 szczegółowo przedstawiono anatomię ustawienia autoskalowania. Artykuł rozpoczyna się od schematu i właściwości ustawienia, a następnie przechodzi przez różne typy profilów, które można skonfigurować. Na koniec w artykule omówiono sposób oceniania profilu do wykonania w dowolnym momencie przez funkcję autoskalowania na platformie Azure.
Schemat ustawień automatycznego skalowania
Aby zilustrować schemat ustawień autoskalowania, używane jest następujące ustawienie autoskalowania. Należy pamiętać, że to ustawienie autoskalowania ma następujące ustawienia:
- Jeden profil.
- Dwie reguły metryk w tym profilu: jedna dla skalowania w poziomie, a druga na potrzeby skalowania w poziomie.
- Reguła skalowania w poziomie jest wyzwalana, gdy średnia wartość procentowa metryki procesora CPU zestawu skalowania maszyn wirtualnych jest większa niż 85 procent w ciągu ostatnich 10 minut.
- Reguła skalowania w poziomie jest wyzwalana, gdy średnia zestawu skalowania maszyn wirtualnych jest mniejsza niż 60 procent 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 .
{
"id": "/subscriptions/s1/resourceGroups/rg1/providers/microsoft.insights/autoscalesettings/setting1",
"name": "setting1",
"type": "Microsoft.Insights/autoscaleSettings",
"location": "East US",
"properties": {
"enabled": true,
"targetResourceUri": "/subscriptions/s1/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachineScaleSets/vmss1",
"profiles": [
{
"name": "mainProfile",
"capacity": {
"minimum": "1",
"maximum": "4",
"default": "1"
},
"rules": [
{
"metricTrigger": {
"metricName": "Percentage CPU",
"metricResourceUri": "/subscriptions/s1/resourceGroups/rg1/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/s1/resourceGroups/rg1/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"
}
}
]
}
]
}
}
| Sekcja | Nazwa elementu | Opis |
|---|---|---|
| Ustawienie | ID (Identyfikator) | Identyfikator zasobu ustawienia autoskalowanie. Ustawienia skalowania automatycznego to zasób usługi Azure Resource Manager. |
| Ustawienie | name | Nazwa ustawienia Autoskalu. |
| Ustawienie | location | Lokalizacja ustawienia autoskalowania. Ta lokalizacja może różnić się od lokalizacji skalowanego zasobu. |
| properties | targetResourceUri | Identyfikator zasobu skalowanego zasobu. Dla zasobu można mieć tylko jedno ustawienie autoskalowanie. |
| properties | Profile | Ustawienie autoskalowania składa się z co najmniej jednego profilu. Za każdym razem, gdy aparat skalowania automatycznego jest uruchamiany, wykonuje jeden profil. |
| profil | name | Nazwa profilu. Możesz wybrać dowolną nazwę, która ułatwia zidentyfikowanie profilu. |
| profil | Capacity.maximum | Dozwolona maksymalna pojemność. Gwarantuje to, że autoskalowanie podczas wykonywania tego profilu nie skaluje zasobu powyżej tej liczby. |
| profil | Pojemność.minimum | Dozwolona minimalna pojemność. Gwarantuje to, że autoskalowanie podczas wykonywania tego profilu nie skaluje zasobu poniżej tej liczby. |
| profil | Capacity.default | Jeśli wystąpił problem podczas odczytywania metryki zasobów (w tym przypadku procesor CPU maszyny wirtualnej vmss1), a bieżąca pojemność jest poniżej wartości domyślnej, autoskalowanie jest skalowane w poziomie do wartości domyślnej. Ma to na celu zapewnienie dostępności zasobu. Jeśli bieżąca pojemność jest już wyższa niż pojemność domyślna, skalowanie automatyczne nie jest skalowane w poziomie. |
| profil | rules | Automatyczne skalowanie automatycznie skaluje się między maksymalną i minimalną pojemnością przy użyciu reguł w profilu. W profilu można mieć wiele reguł. Zazwyczaj istnieją dwie reguły: jedna, aby określić, kiedy należy skalować w poziomie, a drugą, kiedy należy skalować w poziomie. |
| Reguły | metricTrigger | Definiuje warunek metryki reguły. |
| metricTrigger | metricName | 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. Można na przykład skalować zestaw skalowania maszyn wirtualnych na podstawie liczby komunikatów w kolejce magazynu. |
| metricTrigger | timeGrain | 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 elemecie statystyk. |
| metricTrigger | Statystyki | 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 | Ilość czasu na wyszukanie metryk. Na przykład timeWindow = "PT10M" oznacza, że za każdym razem, gdy autoskalacja jest uruchamiana, wysyła zapytania do metryk w ciągu ostatnich 10 minut. Przedział czasu umożliwia normalizację metryk i pozwala uniknąć reagowania na przejściowe skoki. |
| metricTrigger | timeAggregation | Metoda agregacji używana do agregowania przykładowych metryk. Na przykład funkcja TimeAggregation = "Średnia" powinna agregować próbkowane metryki, przyjmując średnią. W poprzednim przypadku weź dziesięć minut próbek i uśrednij je. |
| Reguły | scaleAction | Akcja do wykonania po wyzwoleniu metrykiTrigger reguły. |
| scaleAction | kierunek | "Zwiększ" w celu skalowania w poziomie lub "Zmniejsz" w celu skalowania w poziomie. |
| scaleAction | wartość | Ile należy zwiększyć lub zmniejszyć pojemność zasobu. |
| scaleAction | cooldown | Czas oczekiwania po operacji skalowania przed ponownym skalowaniem. Jeśli na przykład cooldown = "PT10M", skalowanie automatyczne 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
Istnieją trzy typy profilów autoskalowania:
Profil regularny: Najbardziej typowy profil. Jeśli nie musisz skalować zasobu na podstawie dnia tygodnia lub w określonym dniu, możesz użyć zwykłego profilu. Ten profil można następnie skonfigurować przy użyciu reguł metryk, które określają, kiedy należy skalować w poziomie i kiedy skalować w poziomie. Należy zdefiniować tylko jeden zwykły profil.
Przykładowy profil użyty wcześniej w tym artykule jest przykładem zwykłego profilu. Należy pamiętać, że istnieje również możliwość ustawienia profilu w celu skalowania do statycznej liczby wystąpień dla zasobu.
Stały profil daty: Ten profil jest przeznaczony dla specjalnych przypadków. Załóżmy na przykład, że masz ważne wydarzenie, które pojawi się 26 grudnia 2017 r. (PST). Chcesz, aby minimalna i maksymalna pojemność zasobu różniła się w tym dniu, ale nadal jest skalowana w tych samych metrykach. W takim przypadku należy dodać profil stałej daty do listy profilów ustawień. Profil jest skonfigurowany do uruchamiania tylko w dniu wydarzenia. W przypadku każdego innego dnia autoskaluj używa zwykłego profilu.
"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: Ten typ profilu umożliwia zapewnienie, że ten profil jest zawsze używany w określonym dniu tygodnia. Profile cyklu mają tylko godzinę rozpoczęcia. Są uruchamiane do momentu uruchomienia następnego profilu cyklu lub profilu stałej daty. Ustawienie Autoskaluj z tylko jednym profilem cyklu uruchamia ten profil, nawet jeśli w tym samym ustawieniu istnieje zwykły profil zdefiniowany. W poniższych dwóch przykładach pokazano, jak jest używany ten profil:
Przykład 1: Dni robocze a weekendy
Załóżmy, że w weekendy chcesz, aby maksymalna pojemność wynosiła 4. W dni powszednie, ponieważ oczekujesz większego obciążenia, maksymalna pojemność ma wynosić 10. W takim przypadku ustawienie będzie zawierać dwa profile cyklu, jeden do uruchomienia w weekendy i drugi w dni robocze. Ustawienie wygląda następująco:
"profiles": [ { "name": "weekdayProfile", "capacity": { ... }, "rules": [{ ... }], "recurrence": { "frequency": "Week", "schedule": { "timeZone": "Pacific Standard Time", "days": [ "Monday" ], "hours": [ 0 ], "minutes": [ 0 ] } }} }, { "name": "weekendProfile", "capacity": { ... }, "rules": [{ ... }] "recurrence": { "frequency": "Week", "schedule": { "timeZone": "Pacific Standard Time", "days": [ "Saturday" ], "hours": [ 0 ], "minutes": [ 0 ] } } }]Powyższe ustawienie pokazuje, że każdy profil cyklu ma harmonogram. Ten harmonogram określa, kiedy profil zaczyna działać. Profil zostanie zatrzymany po uruchomieniu innego profilu.
Na przykład w poprzednim ustawieniu wartość "weekdayProfile" jest ustawiona na początek w poniedziałek o godzinie 12:00. Oznacza to, że ten profil zaczyna działać w poniedziałek o godzinie 12:00. Trwa do soboty o godzinie 12:00, kiedy "weekendProfile" ma rozpocząć działanie.
Przykład 2. Godziny pracy
Załóżmy, że chcesz mieć jeden próg metryk w godzinach pracy (od 9:00 do 15:00) i inny przez cały czas. Ustawienie wygląda następująco:
"profiles": [ { "name": "businessHoursProfile", "capacity": { ... }, "rules": [{ ... }], "recurrence": { "frequency": "Week", "schedule": { "timeZone": "Pacific Standard Time", "days": [ "Monday", “Tuesday”, “Wednesday”, “Thursday”, “Friday” ], "hours": [ 9 ], "minutes": [ 0 ] } } }, { "name": "nonBusinessHoursProfile", "capacity": { ... }, "rules": [{ ... }] "recurrence": { "frequency": "Week", "schedule": { "timeZone": "Pacific Standard Time", "days": [ "Monday", “Tuesday”, “Wednesday”, “Thursday”, “Friday” ], "hours": [ 17 ], "minutes": [ 0 ] } } }]Poprzednie ustawienie pokazuje, że "businessHoursProfile" zaczyna działać w poniedziałek o godzinie 9:00 i nadal 17:00. Wtedy uruchamia się polecenie "nonBusinessHoursProfile". "nonBusinessHoursProfile" działa do 9:00 we wtorek, a następnie "businessHoursProfile" przejmuje ponownie. Powtarza się to do piątku o godzinie 17:00. W tym momencie "nonBusinessHoursProfile" działa do poniedziałku o godzinie 9:00.
Uwaga
Interfejs użytkownika autoskalowania w witrynie Azure Portal wymusza czasy zakończenia profilów cyklu i rozpoczyna uruchamianie domyślnego profilu ustawienia autoskalowania między profilami cyklu.
Autoskaluj ocenę
Biorąc pod uwagę, że ustawienia autoskalowania mogą mieć wiele profilów, a każdy profil może mieć wiele reguł metryk, ważne jest, aby zrozumieć, jak jest oceniane ustawienie autoskalowania. Za każdym razem, gdy zadanie autoskalowania jest uruchamiane, zaczyna się od wybrania odpowiedniego profilu. Następnie autoskaluj oblicza minimalne i maksymalne wartości oraz wszystkie reguły metryk w profilu i decyduje, czy jest wymagana akcja skalowania.
Który profil wybierze autoskalowanie?
Autoskalowanie używa następującej sekwencji do wybrania profilu:
- Najpierw wyszukuje dowolny profil daty stałej skonfigurowany do uruchomienia teraz. Jeśli istnieje, skalowanie automatyczne jest uruchamiane. Jeśli istnieje wiele profilów dat stałych, które mają zostać uruchomione, autoskaluj wybierze pierwszy.
- Jeśli nie ma profilów dat stałych, skalowanie automatyczne analizuje profile cyklu. Jeśli zostanie znaleziony profil cyklu, zostanie uruchomiony.
- Jeśli nie ma stałych profilów daty lub cyklu, skalowanie automatyczne uruchamia zwykły profil.
W jaki sposób autoskaluj ocenia wiele reguł?
Po określeniu, który profil ma zostać uruchomiony, ocenia wszystkie reguły skalowania w poziomie w profilu (są to reguły z kierunkiem = "Zwiększ".
Jeśli zostanie wyzwolona co najmniej jedna reguła skalowania w poziomie, autoskalowanie oblicza nową pojemność określoną przez funkcję scaleAction każdej z tych reguł. Następnie jest skalowana w poziomie do maksymalnej liczby tych pojemności, aby zapewnić dostępność usługi.
Załóżmy na przykład, że istnieje zestaw skalowania maszyn wirtualnych o bieżącej pojemności 10. Istnieją dwie reguły skalowania w poziomie: jedna, która zwiększa pojemność o 10 procent, i jedną, która zwiększa pojemność o 3 liczby. Pierwsza reguła spowoduje utworzenie nowej pojemności 11, a druga reguła spowoduje pojemność 13. Aby zapewnić dostępność usługi, skalowanie automatyczne wybiera akcję, która powoduje maksymalną pojemność, dlatego zostanie wybrana druga reguła.
Jeśli żadne reguły skalowania w poziomie nie zostaną wyzwolone, skalowanie automatyczne ocenia wszystkie reguły skalowania w poziomie (reguły z kierunkiem = "Zmniejsz". Autoskaluj wykonuje akcję skalowania tylko wtedy, gdy wszystkie reguły skalowania są wyzwalane.
Autoskalowanie oblicza nową pojemność określoną przez funkcję scaleAction każdej z tych reguł. Następnie wybiera akcję skalowania, która powoduje maksymalną liczbę tych pojemności w celu zapewnienia dostępności usługi.
Załóżmy na przykład, że istnieje zestaw skalowania maszyn wirtualnych o bieżącej pojemności 10. Istnieją dwie reguły skalowania: jedna, która zmniejsza pojemność o 50 procent, a druga, która zmniejsza pojemność o 3 liczby. Pierwsza reguła spowoduje utworzenie nowej pojemności 5, a druga reguła spowoduje pojemność 7. Aby zapewnić dostępność usługi, skalowanie automatyczne wybiera akcję, która powoduje maksymalną pojemność, dlatego zostanie wybrana druga reguła.
Następne kroki
Dowiedz się więcej o autoskalowaniu, korzystając z następujących informacji:
- Omówienie skalowania automatycznego
- Typowe metryki skalowania automatycznego usługi Azure Monitor
- Najlepsze rozwiązania dotyczące skalowania automatycznego w usłudze Azure Monitor
- Wysyłanie powiadomień o alertach dotyczących wiadomości e-mail i elementu webhook za pomocą akcji autoskalowania
- Autoskaluj interfejs API REST