Automatyczne aktualizowanie jednostek obsługi komunikatów w przestrzeni nazw Azure Service Bus

Skalowanie automatyczne umożliwia uzyskanie odpowiedniej ilości uruchomionych zasobów w celu obsługi obciążenia aplikacji. Umożliwia dodawanie zasobów w celu obsługi wzrostu obciążenia, a także oszczędzanie pieniędzy dzięki usunięciu zasobów, które siedzą bezczynnie. Zobacz Omówienie autoskalowania na platformie Microsoft Azure , aby dowiedzieć się więcej na temat funkcji autoskalowania usługi Azure Monitor.

Warstwa Premium komunikatów usługi Service Bus zapewnia izolację zasobów na poziomie procesora CPU i pamięci, dlatego obciążenia poszczególnych klientów są od siebie odizolowane. Ten kontener zasobów jest nazywany jednostką obsługi komunikatów. Aby dowiedzieć się więcej na temat jednostek obsługi komunikatów, zobacz Service Bus Premium Messaging (Obsługa komunikatów w usłudze Service Bus w warstwie Premium).

Korzystając z funkcji autoskalowania dla przestrzeni nazw usługi Service Bus w warstwie Premium, można określić minimalną i maksymalną liczbę jednostek obsługi komunikatów i automatycznie dodać lub usunąć jednostki obsługi komunikatów na podstawie zestawu reguł.

Można na przykład zaimplementować następujące scenariusze skalowania dla przestrzeni nazw usługi Service Bus przy użyciu funkcji autoskalowania.

  • Zwiększ liczbę jednostek obsługi komunikatów dla przestrzeni nazw usługi Service Bus, gdy użycie procesora CPU przestrzeni nazw przekroczy 75%.
  • Zmniejsz liczbę jednostek obsługi komunikatów dla przestrzeni nazw usługi Service Bus, gdy użycie procesora CPU przestrzeni nazw spadnie poniżej 25%.
  • Używaj większej liczby jednostek obsługi komunikatów w godzinach pracy i mniej w godzinach wolnych.

W tym artykule przedstawiono sposób automatycznego skalowania przestrzeni nazw usługi Service Bus (aktualizacji jednostek obsługi komunikatów) przy użyciu Azure Portal i szablonu usługi Azure Resource Manager.

Ważne

Ten artykuł dotyczy tylko warstwy Premium Azure Service Bus.

Konfigurowanie przy użyciu witryny Azure Portal

W tej sekcji dowiesz się, jak używać Azure Portal do konfigurowania automatycznego skalowania jednostek obsługi komunikatów dla przestrzeni nazw usługi Service Bus.

Strona ustawienia automatycznego skalowania

Najpierw wykonaj następujące kroki, aby przejść do strony ustawień autoskalowania dla przestrzeni nazw usługi Service Bus.

  1. Zaloguj się w witrynie Azure Portal.

  2. Na pasku wyszukiwania wpisz Service Bus, wybierz pozycję Service Bus z listy rozwijanej i naciśnij klawisz ENTER.

  3. Wybierz przestrzeń nazw Premium z listy przestrzeni nazw.

  4. Przejdź do strony Skalowanie .

    Przestrzeń nazw usługi Service Bus — strona skalowania

Skalowanie ręczne

To ustawienie umożliwia ustawienie stałej liczby jednostek obsługi komunikatów dla przestrzeni nazw.

  1. Na stronie ustawienia Autoskalowanie wybierz pozycję Skalowanie ręczne , jeśli nie została jeszcze wybrana.

  2. W polu Ustawienie Jednostki obsługi komunikatów wybierz liczbę jednostek obsługi komunikatów z listy rozwijanej.

  3. Wybierz pozycję Zapisz na pasku narzędzi, aby zapisać ustawienie.

    Ręczne skalowanie jednostek obsługi komunikatów

Autoskaluj niestandardowe — warunek domyślny

Automatyczne skalowanie jednostek obsługi komunikatów można skonfigurować przy użyciu warunków. Ten warunek skalowania jest wykonywany, gdy żaden z innych warunków skalowania nie jest zgodny. Warunek domyślny można ustawić na jeden z następujących sposobów:

  • Skalowanie na podstawie metryki (na przykład użycia procesora CPU lub pamięci)
  • Skalowanie do określonej liczby jednostek obsługi komunikatów

Nie można ustawić harmonogramu automatycznego skalowania w określonych dniach lub zakresie dat dla warunku domyślnego. Ten warunek skalowania jest wykonywany, gdy żaden z innych warunków skalowania z harmonogramami nie jest zgodny.

Uwaga

Aby zwiększyć przepływność odbierania, usługa Service Bus przechowuje niektóre komunikaty w pamięci podręcznej. Usługa Service Bus przycina pamięć podręczną tylko wtedy, gdy użycie pamięci przekracza określony wysoki próg, taki jak 90%. Jeśli więc jednostka wysyła komunikaty, ale ich nie odbiera, te komunikaty są buforowane i odzwierciedlają zwiększone użycie pamięci. Nie ma nic do obaw, ponieważ usługa Service Bus przycina pamięć podręczną w razie potrzeby, co ostatecznie powoduje, że użycie pamięci spadnie. Pamięć nie spowoduje żadnego problemu, chyba że występują problemy z wydajnością lub innymi problemami z przestrzenią nazw. Zalecamy użycie metryki użycia procesora CPU do automatycznego skalowania za pomocą usługi Service Bus.

Skalowanie na podstawie metryki

Poniższa procedura pokazuje, jak dodać warunek automatycznego zwiększania liczby jednostek obsługi komunikatów (skalowanie w poziomie), gdy użycie procesora CPU jest większe niż 75% i zmniejsza liczbę jednostek obsługi komunikatów (skalowanie w poziomie), gdy użycie procesora CPU jest mniejsze niż 25%. Przyrosty są wykonywane z zakresu od 1 do 2, od 2 do 4, od 4 do 8 i od 8 do 16. Podobnie dekrementy są wykonywane z zakresu od 16 do 8, od 8 do 4, od 4 do 2 i od 2 do 1.

  1. Na stronie ustawienia Autoskalowanie wybierz opcję Autoskalowanie niestandardowe dla opcji Wybierz sposób skalowania zasobu .

  2. W sekcji Domyślne strony określ nazwę warunku domyślnego. Wybierz ikonę ołówka , aby edytować tekst.

  3. Wybierz pozycję Skaluj na podstawie metryki dla trybu skalowania.

  4. Wybierz pozycję + Dodaj regułę.

    Domyślne — skalowanie na podstawie metryki

  5. Na stronie Reguła skalowania wykonaj następujące kroki:

    1. Wybierz metrykę z listy rozwijanej Nazwa metryki . W tym przykładzie jest to procesor CPU.

    2. Wybierz operator i wartości progowe. W tym przykładzie są one większe niż i 75 dla progu metryki, aby wyzwolić akcję skalowania.

    3. Wybierz operację w sekcji Akcja . W tym przykładzie ustawiono wartość Zwiększ.

    4. Następnie wybierz pozycję Dodaj

      Ustawienie domyślne — skalowanie w poziomie, jeśli użycie procesora CPU jest większe niż 75%

      Uwaga

      Funkcja automatycznego skalowania zwiększa liczbę jednostek obsługi komunikatów dla przestrzeni nazw, jeśli ogólne użycie procesora CPU przekroczy 75% w tym przykładzie. Przyrosty są wykonywane z zakresu od 1 do 2, od 2 do 4, od 4 do 8 i od 8 do 16.

  6. Wybierz ponownie pozycję + Dodaj regułę i wykonaj następujące kroki na stronie Reguła skalowania :

    1. Wybierz metrykę z listy rozwijanej Nazwa metryki . W tym przykładzie jest to procesor CPU.

    2. Wybierz operator i wartości progowe. W tym przykładzie są one mniejsze niż i 25 dla progu metryki, aby wyzwolić akcję skalowania.

    3. Wybierz operację w sekcji Akcja . W tym przykładzie ustawiono wartość Zmniejsz.

    4. Następnie wybierz pozycję Dodaj

      Ustawienie domyślne — skalowanie w przypadku, gdy użycie procesora CPU jest mniejsze niż 25%

      Uwaga

      Funkcja automatycznego skalowania zmniejsza liczbę jednostek obsługi komunikatów dla przestrzeni nazw, jeśli ogólne użycie procesora CPU spadnie poniżej 25% w tym przykładzie. Dekrementy są wykonywane z zakresu od 16 do 8, od 8 do 4, od 4 do 2 i od 2 do 1.

  7. Ustaw minimalną i maksymalną i domyślną liczbę jednostek obsługi komunikatów.

    Reguła domyślna oparta na metryce

  8. Wybierz pozycję Zapisz na pasku narzędzi, aby zapisać ustawienie autoskalowania.

Skalowanie do określonej liczby jednostek obsługi komunikatów

Wykonaj następujące kroki, aby skonfigurować regułę skalowania przestrzeni nazw w celu użycia określonej liczby jednostek obsługi komunikatów. Ponownie warunek domyślny jest stosowany, gdy żaden z innych warunków skalowania nie jest zgodny.

  1. Na stronie ustawienia Autoskalowanie wybierz opcję Autoskalowanie niestandardowe dla opcji Wybierz sposób skalowania zasobu .

  2. W sekcji Domyślne strony określ nazwę warunku domyślnego.

  3. Wybierz pozycję Skaluj do określonych jednostek obsługi komunikatów dla trybu skalowania.

  4. W obszarze Jednostki obsługi komunikatów wybierz liczbę domyślnych jednostek obsługi komunikatów.

    Domyślne — skalowanie do określonych jednostek obsługi komunikatów

Skalowanie automatyczne niestandardowe — dodatkowe warunki

W poprzedniej sekcji pokazano, jak dodać warunek domyślny dla ustawienia autoskalowania. W tej sekcji pokazano, jak dodać więcej warunków do ustawienia autoskalowania. W przypadku tych dodatkowych warunków innych niż domyślne można ustawić harmonogram na podstawie określonych dni tygodnia lub zakresu dat.

Skalowanie na podstawie metryki

  1. Na stronie ustawienia Autoskalowanie wybierz opcję Autoskalowanie niestandardowe dla opcji Wybierz sposób skalowania zasobu .

  2. Wybierz pozycję Dodaj warunek skalowania w bloku Domyślny .

    Niestandardowe — dodawanie linku warunku skalowania

  3. Określ nazwę warunku.

  4. Upewnij się, że wybrano opcję Skaluj na podstawie metryki .

  5. Wybierz pozycję + Dodaj regułę, aby dodać regułę w celu zwiększenia liczby jednostek obsługi komunikatów, gdy ogólne użycie procesora CPU przekroczy 75%. Wykonaj kroki z sekcji warunek domyślny .

  6. Ustaw minimalną i maksymalną i domyślną liczbę jednostek obsługi komunikatów.

  7. Można również ustawić harmonogram dla warunku niestandardowego (ale nie na warunku domyślnym). Możesz określić daty rozpoczęcia i zakończenia dla warunku (lub) wybrać określone dni (poniedziałek, wtorek itd.) tygodnia.

    1. Jeśli wybierzesz pozycję Określ daty rozpoczęcia/zakończenia, wybierz strefę czasową, datę i godzinę rozpoczęcia oraz datę i godzinę zakończenia (jak pokazano na poniższej ilustracji), aby warunek był obowiązywać.

      Minimalne, maksymalne i domyślne wartości dla liczby jednostek obsługi komunikatów

    2. W przypadku wybrania opcji Powtórz określone dni wybierz dni tygodnia, strefę czasową, godzinę rozpoczęcia i godzinę zakończenia, kiedy warunek ma być stosowany.

      Powtórz określone dni

Skalowanie do określonej liczby jednostek obsługi komunikatów

  1. Na stronie ustawienia Autoskalowanie wybierz opcję Niestandardowe automatyczne skalowanie dla opcji Wybierz sposób skalowania zasobu .

  2. Wybierz pozycję Dodaj warunek skalowania w bloku Domyślny .

    Niestandardowy — dodawanie linku warunku skalowania

  3. Określ nazwę warunku.

  4. Wybierz opcję Skaluj do określonych jednostek obsługi komunikatów dla trybu skalowania.

  5. Wybierz liczbę jednostek obsługi komunikatów z listy rozwijanej.

  6. Dla harmonogramu określ daty rozpoczęcia i zakończenia dla warunku (lub) wybierz określone dni (poniedziałek, wtorek itd.) tygodnia i godzin.

    1. W przypadku wybrania opcji Określ daty rozpoczęcia/zakończenia wybierz strefę czasową, datę i godzinę rozpoczęcia oraz datę i godzinę zakończenia , aby warunek był obowiązywać.

    skalowanie do określonych jednostek obsługi komunikatów — daty rozpoczęcia i zakończenia

    1. W przypadku wybrania opcji Powtórz określone dni wybierz dni tygodnia, strefę czasową, godzinę rozpoczęcia i godzinę zakończenia, kiedy warunek ma być stosowany.

    skalowanie do określonych jednostek obsługi komunikatów — powtarzanie określonych dni

    Aby dowiedzieć się więcej na temat sposobu działania ustawień autoskalowania, zwłaszcza sposobu wybierania profilu lub warunku i oceniania wielu reguł, zobacz Omówienie ustawień autoskalowania.

    Uwaga

    • Metryki, które przeglądasz w celu podejmowania decyzji dotyczących skalowania automatycznego, mogą mieć od 5 do 10 minut. W przypadku obciążeń spiky zalecamy skrócenie czasu skalowania w górę i dłuższy czas trwania skalowania w dół (> 10 minut), aby upewnić się, że istnieje wystarczająca liczba jednostek obsługi komunikatów do przetwarzania rozgrzydliwych obciążeń.

    • Jeśli wystąpią błędy z powodu braku pojemności (brak dostępnych jednostek obsługi komunikatów), zgłoś bilet pomocy technicznej.

Historia uruchamiania

Przejdź do karty Historia uruchamiania na stronie Skalowanie , aby wyświetlić wykres, który wykreśli liczbę jednostek obsługi komunikatów obserwowanych przez aparat skalowania automatycznego. Jeśli wykres jest pusty, oznacza to, że automatyczne skalowanie nie zostało skonfigurowane lub skonfigurowane, ale wyłączone lub jest w okresie ochładzania.

Zrzut ekranu przedstawiający **historię uruchamiania** na stronie **Skalowanie**.

Powiadomienia

Przejdź do karty Powiadamianie na stronie Skalowanie , aby:

  • Włącz wysyłanie wiadomości e-mail z powiadomieniami do administratorów, współadministratorów i wszystkich dodatkowych administratorów.

  • Włącz wysyłanie wiadomości e-mail z powiadomieniami do punktów końcowych HTTP lub HTTPS uwidocznionych przez elementy webhook.

    Zrzut ekranu przedstawiający kartę **Powiadom** na stronie **Skalowanie**.

Konfigurowanie przy użyciu szablonu Resource Manager

Poniższy przykładowy szablon Resource Manager umożliwia utworzenie przestrzeni nazw usługi Service Bus z kolejką oraz skonfigurowanie ustawień automatycznego skalowania dla przestrzeni nazw. W tym przykładzie określono dwa warunki skalowania.

  • Domyślny warunek skalowania: zwiększ liczbę jednostek obsługi komunikatów, gdy średnie użycie procesora CPU przekroczy 75% i zmniejsz liczbę jednostek obsługi komunikatów, gdy średnie użycie procesora CPU spadnie poniżej 25%.
  • Przypisz dwie jednostki obsługi komunikatów do przestrzeni nazw w weekendy.

Template

{
	"$schema": "https: //schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
	"contentVersion": "1.0.0.0",
	"parameters": {
		"serviceBusNamespaceName": {
			"type": "String",
			"metadata": {
				"description": "Name of the Service Bus namespace"
			}
		},
		"serviceBusQueueName": {
			"type": "String",
			"metadata": {
				"description": "Name of the Queue"
			}
		},
		"autoScaleSettingName": {
			"type": "String",
			"metadata": {
				"description": "Name of the auto scale setting."
			}
		},
		"location": {
			"defaultValue": "[resourceGroup().location]",
			"type": "String",
			"metadata": {
				"description": "Location for all resources."
			}
		}
	},
	"resources": [{
			"type": "Microsoft.ServiceBus/namespaces",
			"apiVersion": "2021-11-01",
			"name": "[parameters('serviceBusNamespaceName')]",
			"location": "[parameters('location')]",
			"sku": {
				"name": "Premium"
			},
			"properties": {}
		},
		{
			"type": "Microsoft.ServiceBus/namespaces/queues",
			"apiVersion": "2021-11-01",
			"name": "[format('{0}/{1}', parameters('serviceBusNamespaceName'), parameters('serviceBusQueueName'))]",
			"dependsOn": [
				"[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]"
			],
			"properties": {
				"lockDuration": "PT5M",
				"maxSizeInMegabytes": 1024,
				"requiresDuplicateDetection": false,
				"requiresSession": false,
				"defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S",
				"deadLetteringOnMessageExpiration": false,
				"duplicateDetectionHistoryTimeWindow": "PT10M",
				"maxDeliveryCount": 10,
				"autoDeleteOnIdle": "P10675199DT2H48M5.4775807S",
				"enablePartitioning": false,
				"enableExpress": false
			}
		},
		{
			"type": "Microsoft.Insights/autoscaleSettings",
			"apiVersion": "2021-05-01-preview",
			"name": "[parameters('autoScaleSettingName')]",
			"location": "East US",
			"dependsOn": [
				"[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]"
			],
			"tags": {},
			"properties": {
				"name": "[parameters('autoScaleSettingName')]",
				"enabled": true,
				"predictiveAutoscalePolicy": {
					"scaleMode": "Disabled",
					"scaleLookAheadTime": null
				},
				"targetResourceUri": "[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]",
				"profiles": [{
						"name": "Increase messaging units to 2 on weekends",
						"capacity": {
							"minimum": "2",
							"maximum": "2",
							"default": "2"
						},
						"rules": [],
						"recurrence": {
							"frequency": "Week",
							"schedule": {
								"timeZone": "Eastern Standard Time",
								"days": [
									"Saturday",
									"Sunday"
								],
								"hours": [
									6
								],
								"minutes": [
									0
								]
							}
						}
					},
					{
						"name": "{\"name\":\"Scale Out at 75% CPU and Scale In at 25% CPU\",\"for\":\"Increase messaging units to 4 on weekends\"}",
						"capacity": {
							"minimum": "1",
							"maximum": "8",
							"default": "2"
						},
						"rules": [{
								"scaleAction": {
									"direction": "Increase",
									"type": "ServiceAllowedNextValue",
									"value": "1",
									"cooldown": "PT5M"
								},
								"metricTrigger": {
									"metricName": "NamespaceCpuUsage",
									"metricNamespace": "microsoft.servicebus/namespaces",
									"metricResourceUri": "[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]",
									"operator": "GreaterThan",
									"statistic": "Average",
									"threshold": 75,
									"timeAggregation": "Average",
									"timeGrain": "PT1M",
									"timeWindow": "PT10M",
									"Dimensions": [],
									"dividePerInstance": false
								}
							},
							{
								"scaleAction": {
									"direction": "Decrease",
									"type": "ServiceAllowedNextValue",
									"value": "1",
									"cooldown": "PT5M"
								},
								"metricTrigger": {
									"metricName": "NamespaceCpuUsage",
									"metricNamespace": "microsoft.servicebus/namespaces",
									"metricResourceUri": "[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]",
									"operator": "LessThan",
									"statistic": "Average",
									"threshold": 25,
									"timeAggregation": "Average",
									"timeGrain": "PT1M",
									"timeWindow": "PT10M",
									"Dimensions": [],
									"dividePerInstance": false
								}
							}
						],
						"recurrence": {
							"frequency": "Week",
							"schedule": {
								"timeZone": "Eastern Standard Time",
								"days": [
									"Saturday",
									"Sunday"
								],
								"hours": [
									18
								],
								"minutes": [
									0
								]
							}
						}
					}
				],
				"notifications": [],
				"targetResourceLocation": "East US"
			}
		}
	]
}

Możesz również wygenerować przykładowy kod JSON dla zasobu ustawienia automatycznego skalowania z Azure Portal. Po skonfigurowaniu ustawień autoskalowania w Azure Portal wybierz pozycję JSON na pasku poleceń na stronie Skalowanie.

Obraz przedstawiający wybór przycisku JSON na pasku poleceń strony **Skaluj** w Azure Portal.

Następnie dołącz kod JSON w resources sekcji szablonu Resource Manager, jak pokazano w poprzednim przykładzie.

Dodatkowe zagadnienia

W przypadku korzystania z opcji Autoskalowanie niestandardowez domyślnym warunkiem lub profilem jednostki obsługi komunikatów są stopniowo zwiększane (1 -> 2 - 4 ->> 8 -> 16) lub zmniejszone (16 -> 8 -> 4 -> 2 -> 1).

Podczas tworzenia dodatkowych warunków jednostki obsługi komunikatów mogą nie być stopniowo zwiększane ani zmniejszane. Załóżmy, że masz dwa profile zdefiniowane, jak pokazano w poniższym przykładzie. O godzinie 06:00 czasu UTC jednostki obsługi komunikatów są ustawione na 16, a o godzinie 21:00 CZASU UTC zostaną zredukowane do 1.

{

	"Profiles": [
		{
			"Name": "standardProfile",
			"Capacity": {
				"Minimum": "16",
				"Maximum": "16",
				"Default": "16"
			},
			"Rules": [],
			"Recurrence": {
				"Frequency": "Week",
				"Schedule": {
					"TimeZone": "UTC",
					"Days": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"
					],
					"Hours": [6],
					"Minutes": [0]
				}
			}
		},
		{
			"Name": "outOfHoursProfile",
			"Capacity": {
				"Minimum": "1",
				"Maximum": "1",
				"Default": "1"
			},
			"Rules": [],
			"Recurrence": {
				"Frequency": "Week",
				"Schedule": {
					"TimeZone": "UTC",
					"Days": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
					"Hours": [21],
					"Minutes": [0]
				}
			}
		}
	]
}

Zalecamy tworzenie reguł, tak aby jednostki obsługi komunikatów stopniowo zwiększały się lub zmniejszały.

Następne kroki

Aby dowiedzieć się więcej o jednostkach obsługi komunikatów, zobacz Komunikaty w warstwie Premium