Udostępnij za pośrednictwem


Skalowanie predykcyjne umożliwia skalowanie w poziomie przed zapotrzebowaniem na obciążenia w zestawach skalowania maszyn wirtualnych

Autoskalowanie predykcyjne używa uczenia maszynowego do zarządzania zestawami skalowania maszyn wirtualnych platformy Azure i skalowania ich przy użyciu wzorców obciążeń cyklicznych. Prognozuje ogólne obciążenie procesora CPU do zestawu skalowania maszyn wirtualnych na podstawie historycznych wzorców użycia procesora CPU. Przewiduje on ogólne obciążenie procesora CPU, obserwując i ucząc się z historycznych użycia. Ten proces zapewnia, że skalowanie w poziomie występuje w czasie, aby zaspokoić zapotrzebowanie.

Skalowanie automatyczne predykcyjne wymaga co najmniej siedmiu dni historii w celu zapewnienia przewidywań. Maksymalny okres próbkowania to okres kroczący wynoszący 15 dni, co daje najlepsze wyniki predykcyjne. W przypadku wzorców obciążeń miesięcznych lub rocznych użyj konfiguracji automatycznego skalowania opartego na harmonogramie lub skalowania automatycznego opartego na metrykach.

Autoskalowanie predykcyjne jest zgodne z granicami skalowania ustawionymi dla zestawu skalowania maszyn wirtualnych. Gdy system przewiduje, że procentowe obciążenie procesora CPU zestawu skalowania maszyn wirtualnych przekroczy granicę skalowania w poziomie, nowe wystąpienia są dodawane zgodnie ze specyfikacjami. Możesz również skonfigurować, jak daleko z wyprzedzeniem chcesz aprowizować nowe wystąpienia, do 1 godziny przed wystąpieniem przewidywanego wzrostu obciążenia.

Prognoza umożliwia tylko wyświetlanie przewidywanej prognozy procesora CPU bez wyzwalania akcji skalowania na podstawie przewidywania. Następnie można porównać prognozę z rzeczywistymi wzorcami obciążeń, aby zapewnić zaufanie do modeli przewidywania przed włączeniem funkcji autoskalowania predykcyjnego.

Predykcyjne oferty automatycznego skalowania

  • Autoskalowanie predykcyjne dotyczy obciążeń, które wykazują cykliczne wzorce użycia procesora CPU.
  • Obsługa jest dostępna tylko dla zestawów skalowania maszyn wirtualnych.
  • Metryka Procent użycia procesora CPU z typem agregacji Average jest jedyną obecnie obsługiwaną metrykami.
  • Automatyczne skalowanie predykcyjne obsługuje tylko skalowanie w poziomie. Konfigurowanie standardowego automatycznego skalowania w celu zarządzania skalowaniem w akcjach.
  • Automatyczne skalowanie predykcyjne jest dostępne tylko dla chmury komercyjnej platformy Azure. Chmury platformy Azure Government nie są obecnie obsługiwane.

Włączanie automatycznego skalowania predykcyjnego lub prognozy tylko w witrynie Azure Portal

  1. Przejdź do ekranu Zestaw skalowania maszyn wirtualnych i wybierz pozycję Skalowanie.

    Zrzut ekranu przedstawiający wybieranie pozycji Skalowanie w menu po lewej stronie w witrynie Azure Portal.

  2. W sekcji Autoskaluj niestandardowe zostanie wyświetlone autoskalie predykcyjne.

    Zrzut ekranu przedstawiający wybieranie opcji Autoskalowanie niestandardowe i Autoskalowanie predykcyjne w witrynie Azure Portal.

    Korzystając z zaznaczenia listy rozwijanej, można wykonywać następujące czynności:

    • Wyłącz automatyczne skalowanie predykcyjne. Ustawienie Wyłącz to wybór domyślny podczas pierwszego lądowania na stronie na potrzeby autoskalowania predykcyjnego.
    • Włącz tryb tylko prognozy.
    • Włącz automatyczne skalowanie predykcyjne.

    Uwaga

    Aby włączyć tryb autoskalowania predykcyjnego lub tylko prognozę, należy skonfigurować standardowe reaktywne warunki autoskalowania.

  3. Aby włączyć tryb tylko prognozy, wybierz go z listy rozwijanej. Zdefiniuj wyzwalacz skalowalny w poziomie na podstawie procentowego użycia procesora CPU. Następnie wybierz opcję Zapisz. Ten sam proces dotyczy włączania autoskalowania predykcyjnego. Aby wyłączyć tryb autoskalowania predykcyjnego lub tylko prognozy, wybierz pozycję Wyłącz z listy rozwijanej.

    Zrzut ekranu przedstawiający włączanie trybu tylko prognozy.

  4. W razie potrzeby określ czas przeduruchomienia, aby wystąpienia były w pełni uruchomione, zanim będą potrzebne. Wystąpienia można wstępnie zainicjować od 5 do 60 minut przed wymaganym czasem przewidywania.

    Zrzut ekranu przedstawiający konfigurację predykcyjnego automatycznego skalowania.

  5. Po włączeniu trybu autoskalowania predykcyjnego lub tylko prognozy i zapisaniu go wybierz pozycję Wykresy predykcyjne.

    Zrzut ekranu przedstawiający wybieranie opcji menu Predykcyjne wykresy.

  6. Zostaną wyświetlone trzy wykresy:

    Zrzut ekranu przedstawiający trzy wykresy na potrzeby automatycznego skalowania predykcyjnego.

    • Na górnym wykresie przedstawiono nakładane porównanie rzeczywistego i przewidywanego całkowitego procentowego użycia procesora CPU. Przedział czasu pokazanego wykresu wynosi od ostatnich siedmiu dni do następnych 24 godzin.
    • Środkowy wykres przedstawia maksymalną liczbę wystąpień uruchomionych w ciągu ostatnich siedmiu dni.
    • Na dolnym wykresie przedstawiono bieżące średnie wykorzystanie procesora CPU w ciągu ostatnich siedmiu dni.

Włączanie przy użyciu szablonu usługi Azure Resource Manager

  1. Pobierz identyfikator zasobu zestawu skalowania maszyn wirtualnych i grupę zasobów zestawu skalowania maszyn wirtualnych. Na przykład: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeee4e4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2

  2. Zaktualizuj plik autoscale_only_parameters przy użyciu identyfikatora zasobu zestawu skalowania maszyn wirtualnych i wszystkich parametrów ustawień automatycznego skalowania.

  3. Użyj polecenia programu PowerShell, aby wdrożyć szablon zawierający ustawienia autoskalowania. Na przykład:

PS G:\works\kusto_onboard\test_arm_template> new-azurermresourcegroupdeployment -name binzAutoScaleDeploy -resourcegroupname cpatest2 -templatefile autoscale_only.json -templateparameterfile autoscale_only_parameters.json
PS C:\works\autoscale\predictive_autoscale\arm_template> new-azurermresourcegroupdeployment -name binzAutoScaleDeploy - resourcegroupname patest2 -templatefile autoscale_only_binz.json -templateparameterfile autoscale_only_parameters_binz.json

        DeploymentName        : binzAutoScaleDeploy
        ResourceGroupName     : patest2
        ProvisioningState     : Succeeded
        Timestamp             : 3/30/2021 10:11:02 PM
        Mode                  : Incremental
        TemplateLink
        Parameters            :

                                Name              Type                           Value
                                ================  =============================  ====================
                                targetVmssResourceld String	                        /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2
                                location	      String                         East US
                                minimumCapacity   Int                            1
                                maximumCapacity   Int                            4
                                defaultCapacity   Int                            4
                                metricThresholdToScaleOut  Int                             50
                                metricTimeWindowForScaleOut  String                          PT5M
                                metricThresholdToScaleln  Int                              30   
                                metricTimeWindowForScaleln  String                           PT5M 
                                changeCountScaleOut  Int                             1
                                changeCountScaleln  Int                             1
                                predictiveAutoscaleMode String                            Enabled
                           
Outputs                        :
                                Name              Type                           Value
                                ================  ============================== ====================
                            
                                targetVmssResourceld  String	/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2 
                                settingLocation  String	                        East US
                                predictiveAutoscaleMode  String	                    Enabled

DeloymentDebugLoglevel         :

PS C:\works\autoscale\predictive_autoscale\arm_template>

autoscale_only.json

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
	"parameters": {
		"targetVmssResourceId": {
			"type": "string"
		},
		"location": {
			"type": "string"
		},
		"minimumCapacity": {
			"type": "Int",
			"defaultValue": 2,
			"metadata": {
				"description": "The minimum capacity.  Autoscale engine will ensure the instance count is at least this value."
			}
		},
		"maximumCapacity": {
			"type": "Int",
			"defaultValue": 5,
			"metadata": {
				"description": "The maximum capacity.  Autoscale engine will ensure the instance count is not greater than this value."
			}
		},
		"defaultCapacity": {
			"type": "Int",
			"defaultValue": 3,
			"metadata": {
				"description": "The default capacity.  Autoscale engine will preventively set the instance count to be this value if it can not find any metric data."
			}
		},
		"metricThresholdToScaleOut": {
			"type": "Int",
			"defaultValue": 30,
			"metadata": {
				"description": "The metric upper threshold.  If the metric value is above this threshold then autoscale engine will initiate scale out action."
			}
		},
		"metricTimeWindowForScaleOut": {
			"type": "string",
			"defaultValue": "PT5M",
			"metadata": {
				"description": "The metric look up time window."
			}
		},
		"metricThresholdToScaleIn": {
			"type": "Int",
			"defaultValue": 20,
			"metadata": {
				"description": "The metric lower threshold.  If the metric value is below this threshold then autoscale engine will initiate scale in action."
			}
		},
		"metricTimeWindowForScaleIn": {
			"type": "string",
			"defaultValue": "PT5M",
			"metadata": {
				"description": "The metric look up time window."
			}
		},
		"changeCountScaleOut": {
			"type": "Int",
			"defaultValue": 1,
			"metadata": {
				"description": "The instance count to increase when autoscale engine is initiating scale out action."
			}
		},
		"changeCountScaleIn": {
			"type": "Int",
			"defaultValue": 1,
			"metadata": {
				"description": "The instance count to decrease the instance count when autoscale engine is initiating scale in action."
			}
		},
        "predictiveAutoscaleMode": {
            "type": "String",
            "defaultValue": "ForecastOnly",
            "metadata": {
                "description": "The predictive Autoscale mode."
            }
        }
	},
	"variables": {
	},
	"resources": [{
			"type": "Microsoft.Insights/autoscalesettings",
			"name": "cpuPredictiveAutoscale",
			"apiVersion": "2022-10-01",
			"location": "[parameters('location')]",
			"properties": {
				"profiles": [{
						"name": "DefaultAutoscaleProfile",
						"capacity": {
							"minimum": "[parameters('minimumCapacity')]",
							"maximum": "[parameters('maximumCapacity')]",
							"default": "[parameters('defaultCapacity')]"
						},
						"rules": [{
								"metricTrigger": {
									"metricName": "Percentage CPU",
									"metricNamespace": "",
									"metricResourceUri": "[parameters('targetVmssResourceId')]",
									"timeGrain": "PT1M",
									"statistic": "Average",
									"timeWindow": "[parameters('metricTimeWindowForScaleOut')]",
									"timeAggregation": "Average",
									"operator": "GreaterThan",
									"threshold": "[parameters('metricThresholdToScaleOut')]"
								},
								"scaleAction": {
									"direction": "Increase",
									"type": "ChangeCount",
									"value": "[parameters('changeCountScaleOut')]",
									"cooldown": "PT5M"
								}
							}, {
								"metricTrigger": {
									"metricName": "Percentage CPU",
									"metricNamespace": "",
									"metricResourceUri": "[parameters('targetVmssResourceId')]",
									"timeGrain": "PT1M",
									"statistic": "Average",
									"timeWindow": "[parameters('metricTimeWindowForScaleIn')]",
									"timeAggregation": "Average",
									"operator": "LessThan",
									"threshold": "[parameters('metricThresholdToScaleIn')]"
								},
								"scaleAction": {
									"direction": "Decrease",
									"type": "ChangeCount",
									"value": "[parameters('changeCountScaleOut')]",
									"cooldown": "PT5M"
								}
							}
						]
					}
				],
				"enabled": true,
				"targetResourceUri": "[parameters('targetVmssResourceId')]",
                "predictiveAutoscalePolicy": {
                    "scaleMode": "[parameters('predictiveAutoscaleMode')]"
                }
			}
		}
	],
	"outputs": {
        "targetVmssResourceId" : {
            "type" : "string",
            "value" : "[parameters('targetVmssResourceId')]"
        },
        "settingLocation" : {
            "type" : "string",
            "value" : "[parameters('location')]"
        },
        "predictiveAutoscaleMode" : {
            "type" : "string",
            "value" : "[parameters('predictiveAutoscaleMode')]"
        }
    }
}

autoscale_only_parameters.json

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
	"parameters": {
		"targetVmssResourceId": {
			"value": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2"
		},
		"location": {
			"value": "East US"
		},
		"minimumCapacity": {
			"value": 1
		},
		"maximumCapacity": {
			"value": 4
		},
		"defaultCapacity": {
		  "value": 4
		},
		"metricThresholdToScaleOut": {
		  "value": 50
		},
		"metricTimeWindowForScaleOut": {
		  "value": "PT5M"
		},
		"metricThresholdToScaleIn": {
		  "value": 30
		},
		"metricTimeWindowForScaleIn": {
		  "value": "PT5M"
		},
		"changeCountScaleOut": {
		  "value": 1
		},
		"changeCountScaleIn": {
		  "value": 1
		},
		"predictiveAutoscaleMode": {
		  "value": "Enabled"
		}
	}
}

Aby uzyskać więcej informacji na temat szablonów usługi Azure Resource Manager, zobacz Omówienie szablonu usługi Resource Manager.

Często zadawane pytania

Ta sekcja zawiera odpowiedzi na często zadawane pytania.

Dlaczego procent procesora CPU powyżej 100 procent na wykresach predykcyjnych?

Wykres predykcyjny przedstawia skumulowane obciążenie wszystkich maszyn w zestawie skalowania. Jeśli masz 5 maszyn wirtualnych w zestawie skalowania, maksymalne obciążenie skumulowane dla wszystkich maszyn wirtualnych wynosi 500%, czyli pięć razy 100% maksymalnego obciążenia procesora CPU każdej maszyny wirtualnej.

Co się dzieje w czasie po włączeniu predykcyjnego automatycznego skalowania dla zestawu skalowania maszyn wirtualnych?

Autoskalowania przewidywania używa historii uruchomionego zestawu skalowania maszyn wirtualnych. Jeśli zestaw skalowania działa mniej niż siedem dni, zostanie wyświetlony komunikat informujący, że model jest trenowany. Aby uzyskać więcej informacji, zobacz komunikat o braku danych predykcyjnych. Przewidywania poprawiają się wraz z upływem czasu i osiągną maksymalną dokładność 15 dni po utworzeniu zestawu skalowania maszyn wirtualnych.

Jeśli zmiany wzorca obciążenia występują, ale pozostają okresowe, model rozpoznaje zmianę i zaczyna dostosowywać prognozę. Prognoza poprawia się wraz z upływem czasu. Maksymalna dokładność jest osiągana 15 dni po zmianie wzorca ruchu. Pamiętaj, że standardowe reguły automatycznego skalowania nadal mają zastosowanie. Jeśli wystąpi nowy nieprzewidywalny wzrost ruchu, zestaw skalowania maszyn wirtualnych będzie nadal skalowany w poziomie, aby zaspokoić zapotrzebowanie.

Co zrobić, jeśli model nie działa dobrze?

Modelowanie działa najlepiej w przypadku obciążeń, które wykazują okresowość. Zalecamy, aby najpierw ocenić przewidywania, włączając opcję "tylko prognoza", co spowoduje nakładanie przewidywanego użycia procesora CPU zestawu skalowania z rzeczywistym obserwowanym użyciem. Po porównaniu i ocenieniu wyników możesz wybrać opcję włączenia skalowania na podstawie przewidywanych metryk, jeśli przewidywania modelu są wystarczająco bliskie dla danego scenariusza.

Dlaczego muszę włączyć standardowe autoskalowania przed włączeniem autoskalowania predykcyjnego?

Skalowanie automatyczne w warstwie Standardowa jest niezbędnym rezerwowym, jeśli model predykcyjny nie działa dobrze w danym scenariuszu. Skalowanie automatyczne w warstwie Standardowa obejmuje nieoczekiwane skoki obciążenia, które nie są częścią typowego wzorca obciążenia procesora CPU. Zapewnia również rezerwę, jeśli wystąpi błąd podczas pobierania danych predykcyjnych.

Która reguła ma zastosowanie, jeśli ustawiono zarówno reguły predykcyjne, jak i standardowe skalowanie automatyczne?

Standardowe reguły automatycznego skalowania są używane, jeśli występuje nieoczekiwany wzrost obciążenia procesora CPU lub występuje błąd podczas pobierania danych predykcyjnych

Używamy progu ustawionego w standardowych regułach automatycznego skalowania, aby zrozumieć, kiedy chcesz skalować w poziomie i według liczby wystąpień. Jeśli zestaw skalowania maszyn wirtualnych ma być skalowany w poziomie, gdy użycie procesora CPU przekroczy 70% i rzeczywiste lub przewidywane dane pokazują, że użycie procesora CPU wynosi lub przekroczy 70%, nastąpi skalowanie w poziomie.

Błędy i ostrzeżenia

W tej sekcji opisano typowe błędy i ostrzeżenia.

Nie włączono standardowego automatycznego skalowania

Zostanie wyświetlony następujący komunikat o błędzie:

Aby włączyć automatyczne skalowanie predykcyjne, utwórz regułę skalowania w poziomie na podstawie metryki "Procentowe użycie procesora CPU". Kliknij tutaj, aby przejść do karty "Konfiguruj", aby ustawić regułę autoskalowania.

Zrzut ekranu przedstawiający komunikat o błędzie autoskalowanie predykcyjne opiera się na procentowym procesorze CPU bieżącego zasobu metryki.

Ten komunikat oznacza, że podjęto próbę włączenia autoskalowania predykcyjnego przed włączeniem standardowego autoskalowania i skonfigurowanie go do używania metryki Procentowe użycie procesora CPU z typem agregacji Średnia .

Brak danych predykcyjnych

Dane na wykresach predykcyjnych nie będą widoczne w określonych warunkach. To zachowanie nie jest błędem, jest to zamierzone zachowanie.

Gdy automatyczne skalowanie predykcyjne jest wyłączone, zamiast tego otrzymujesz komunikat rozpoczynający się od "Brak danych do pokazania..." Następnie zobaczysz instrukcje dotyczące tego, co należy włączyć, aby zobaczyć wykres predykcyjny.

Zrzut ekranu przedstawiający komunikat Brak danych do wyświetlenia.

Po pierwszym utworzeniu zestawu skalowania maszyn wirtualnych i włączeniu trybu tylko prognozy zostanie wyświetlony komunikat "Dane predykcyjne są trenowane..." i czas powrotu do wyświetlenia wykresu.

Zrzut ekranu przedstawiający komunikat Dane predykcyjne są trenowane.

Następne kroki

Dowiedz się więcej o autoskalowaniem w następujących artykułach: