Udostępnij za pośrednictwem


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

Automatyczne skalowanie umożliwia uzyskanie odpowiedniej ilości zasobów uruchomionych 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 są w stanie bezczynności. 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 warstwie Premium w usłudze Service Bus).

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 oraz automatycznie dodawać lub usuwać 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 poza godzinami pracy.

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

Ważne

Ten artykuł dotyczy tylko warstwy Premium usługi Azure Service Bus.

Konfigurowanie przy użyciu witryny Azure Portal

W tej sekcji dowiesz się, jak za pomocą witryny Azure Portal skonfigurować skalowanie automatyczne 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ń skalowania automatycznego 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 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

Niestandardowe skalowanie automatyczne — 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 (takiej jak użycie procesora CPU lub pamięci)
  • Skalowanie do określonej liczby jednostek obsługi komunikatów

Nie można ustawić harmonogramu automatycznego skalowania dla określonego dnia lub zakresu 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 próg wysoki, taki jak 80%. Dlatego jeśli jednostka wysyła komunikaty, ale ich nie odbiera, te komunikaty są buforowane i odzwierciedlają zwiększone użycie pamięci. Zwykle oznacza to, że w razie potrzeby nie ma wątpliwości, ponieważ usługa Service Bus przycina pamięć podręczną, co ostatecznie powoduje spadek użycia pamięci. W związku z tym zaleca się skalowanie w górę tylko wtedy, gdy użycie pamięci osiągnie 90%. Ponadto zaleca się, aby nie skalować w dół, o ile użycie pamięci nie spadnie poniżej 90%.

Skalowanie na podstawie metryki

Poniższa procedura przedstawia sposób dodawania warunku 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ślna strony określ nazwę warunku domyślnego. Wybierz ikonę ołówka, aby edytować tekst.

  3. Wybierz pozycję Skaluj na podstawie metryki dla pozycji Tryb skalowania.

  4. Wybierz pozycję + Dodaj regułę.

    Ustawienie 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 , aby próg metryki wyzwalał akcję skalowania.

    3. Wybierz operację w sekcji Akcja. W tym przykładzie jest ustawiona 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ły 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 , aby próg metryki wyzwalał 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 poziomie, jeśli 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 przekroczy 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ślna 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.

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

Automatyczne skalowanie 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. W przypadku wybrania opcji Określ daty rozpoczęcia/zakończenia wybierz strefę czasową, datę rozpoczęcia i godzinę oraz datę i godzinę zakończenia (jak pokazano na poniższej ilustracji), aby warunek był w mocy.

      Wartości minimalne, maksymalne i domyślne 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.

      Powtarzaj w określone dni

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

  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. 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. 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, 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 — powtórz określone dni

    Aby dowiedzieć się więcej o sposobie działania ustawień autoskalowania, szczególnie w jaki sposób wybiera profil lub warunek i ocenia wiele 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. Jeśli masz do czynienia z ostrymi obciążeniami, 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 spiky 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 z nami. Realizacja pojemności podlega ograniczeniom środowiska i jest przeprowadzana zgodnie z naszymi najlepszymi wysiłkami.

Hist. przeb.

Przejdź do karty Historia uruchamiania na stronie Skalowanie , aby wyświetlić wykres, który kresuje liczbę jednostek obsługi komunikatów obserwowanych przez aparat autoskalowania. 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**.

Notifications

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 usługi Resource Manager

Poniższy przykładowy szablon usługi Resource Manager umożliwia utworzenie przestrzeni nazw usługi Service Bus z kolejką oraz skonfigurowanie ustawień autoskalowania 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ład JSON dla zasobu ustawienia automatycznego z witryny Azure Portal. Po skonfigurowaniu ustawień autoskalowania w witrynie Azure Portal wybierz pozycję JSON na pasku poleceń strony Skalowanie.

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

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

Uwagi dodatkowe

Jeśli używasz opcji Niestandardowe autoskalowanie z domyślnym warunkiem lub profilem, jednostki obsługi komunikatów są zwiększane (1 -> 2 - 4 ->> 8 -> 16) lub zmniejszane (16 -> 8 - 4 ->> 2 -> 1) stopniowo.

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 21:00 CZASU UTC są one ograniczone 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 zostały stopniowo zwiększane lub zmniejszane.

Następne kroki

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