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.
Zaloguj się w witrynie Azure Portal.
Na pasku wyszukiwania wpisz Service Bus, wybierz pozycję Service Bus z listy rozwijanej i naciśnij ENTER.
Wybierz przestrzeń nazw Premium z listy przestrzeni nazw.
Przejdź do strony Skalowanie.
Skalowanie ręczne
To ustawienie umożliwia ustawienie stałej liczby jednostek obsługi komunikatów dla przestrzeni nazw.
Na stronie ustawienia Autoskalowanie wybierz pozycję Skalowanie ręczne, jeśli nie została jeszcze wybrana.
W polu Ustawienie Jednostki obsługi komunikatów wybierz liczbę jednostek obsługi komunikatów z listy rozwijanej.
Wybierz pozycję Zapisz na pasku narzędzi, aby zapisać ustawienie.
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.
Na stronie ustawienia Autoskalowanie wybierz opcję Autoskalowanie niestandardowe dla opcji Wybierz sposób skalowania zasobu.
W sekcji Domyślna strony określ nazwę warunku domyślnego. Wybierz ikonę ołówka, aby edytować tekst.
Wybierz pozycję Skaluj na podstawie metryki dla pozycji Tryb skalowania.
Wybierz pozycję + Dodaj regułę.
Na stronie Reguła skalowania wykonaj następujące kroki:
Wybierz metrykę z listy rozwijanej Nazwa metryki. W tym przykładzie jest to procesor CPU.
Wybierz operator i wartości progowe. W tym przykładzie są one większe niż i 75 , aby próg metryki wyzwalał akcję skalowania.
Wybierz operację w sekcji Akcja. W tym przykładzie jest ustawiona wartość Zwiększ.
Następnie wybierz pozycję Dodaj
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.
Wybierz ponownie pozycję + Dodaj regułę i wykonaj następujące kroki na stronie Reguły skalowania:
Wybierz metrykę z listy rozwijanej Nazwa metryki. W tym przykładzie jest to procesor CPU.
Wybierz operator i wartości progowe. W tym przykładzie są one mniejsze niż i 25 , aby próg metryki wyzwalał akcję skalowania.
Wybierz operację w sekcji Akcja. W tym przykładzie ustawiono wartość Zmniejsz.
Następnie wybierz pozycję Dodaj
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.
Ustaw minimalną i maksymalną i domyślną liczbę jednostek obsługi komunikatów.
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.
Na stronie ustawienia Autoskalowanie wybierz opcję Autoskalowanie niestandardowe dla opcji Wybierz sposób skalowania zasobu.
W sekcji Domyślna strony określ nazwę warunku domyślnego.
Wybierz pozycję Skaluj do określonych jednostek obsługi komunikatów dla trybu skalowania.
W obszarze Jednostki obsługi komunikatów wybierz liczbę domyślnych 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
Na stronie ustawienia Autoskalowanie wybierz opcję Autoskalowanie niestandardowe dla opcji Wybierz sposób skalowania zasobu.
Wybierz pozycję Dodaj warunek skalowania w bloku Domyślny .
Określ nazwę warunku.
Upewnij się, że wybrano opcję Skaluj na podstawie metryki .
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.
Ustaw minimalną i maksymalną i domyślną liczbę jednostek obsługi komunikatów.
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.
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.
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ślonej liczby jednostek obsługi komunikatów
Na stronie ustawienia Autoskalowanie wybierz opcję Autoskalowanie niestandardowe dla opcji Wybierz sposób skalowania zasobu.
Wybierz pozycję Dodaj warunek skalowania w bloku Domyślny .
Określ nazwę warunku.
Wybierz opcję Skaluj do określonych jednostek obsługi komunikatów dla trybu skalowania.
Wybierz liczbę jednostek obsługi komunikatów z listy rozwijanej.
Dla harmonogramu określ daty rozpoczęcia i zakończenia dla warunku (lub) wybierz określone dni (poniedziałek, wtorek itd.) tygodnia i godzin.
- 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ć.
- 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.
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.
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.
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.
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