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.
Zaloguj się w witrynie Azure Portal.
Na pasku wyszukiwania wpisz Service Bus, wybierz pozycję Service Bus z listy rozwijanej i naciśnij klawisz 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.
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.
Na stronie ustawienia Autoskalowanie wybierz opcję Autoskalowanie niestandardowe dla opcji Wybierz sposób skalowania zasobu .
W sekcji Domyślne strony określ nazwę warunku domyślnego. Wybierz ikonę ołówka , aby edytować tekst.
Wybierz pozycję Skaluj na podstawie metryki dla trybu 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 dla progu metryki, aby wyzwolić akcję skalowania.
Wybierz operację w sekcji Akcja . W tym przykładzie ustawiono 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ła 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 dla progu metryki, aby wyzwolić 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 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.
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ślne 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.
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
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.
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ć.
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ę Niestandardowe automatyczne skalowanie 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.
- 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ć.
- 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 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.
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.
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.
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