Automatická aktualizace jednotek zasílání zpráv v oboru názvů Azure Service Bus

Automatické škálování zajišťuje, že máte spuštěno správné množství prostředků pro zvládnutí zatížení vaší aplikace. Přidává prostředky pro zpracování nárůstu zatížení a také šetří peníze odebráním prostředků, které jsou nečinné. Další informace o funkci automatického škálování Azure Monitor najdete v tématu Přehled automatického škálování v Microsoft Azure.

Premium zasílání zpráv Service Bus poskytuje izolaci zdrojů na úrovni procesoru a paměti, aby úloha každého zákazníka probíhala izolovaně. Kontejner prostředků se nazývá jednotka zasílání zpráv. Další informace o jednotkách zasílání zpráv najdete v tématu Service Bus Premium Messaging.

Pomocí funkce automatického škálování pro obory názvů Service Bus Premium můžete zadat minimální a maximální počet jednotek msaging units a automaticky přidávat nebo odebírat jednotky zasílání zpráv na základě sady pravidel.

Pomocí funkce automatického škálování můžete například implementovat následující scénáře škálování pro Service Bus obory názvů:

  • Zvyšte jednotky zasílání zpráv pro obor názvů Service Bus, pokud využití procesoru oboru názvů přesáhne 75 %.
  • Snižte jednotky zasílání zpráv pro obor názvů Service Bus, pokud využití CPU oboru názvů klesne pod 25 %.
  • Používejte více jednotek zasílání zpráv během pracovní doby a méně mimo pracovní dobu.

V tomto článku se dozvíte, jak automaticky škálovat obor názvů Service Bus (aktualizovat messaging units) pomocí portálu Azure a šablony Azure Resource Manager.

Důležité

Tento článek se týká jenom úrovně premium Azure Service Bus.

Konfigurace pomocí portálu Azure

V této části se naučíte, jak pomocí portálu Azure nakonfigurovat škálování jednotek zasílání zpráv pro obor názvů Service Bus automaticky.

Stránka nastavení automatického škálování

Nejprve pomocí následujícího postupu přejděte na stránku Nastavení Autoscale oboru názvů služby Service Bus.

  1. Přihlaste se k portálu Azure.

  2. Na panelu hledání zadejte Service Bus, v seznamu vyberte Service Bus a stiskněte Enter.

  3. Vyberte svůj prémiový jmenný prostor ze seznamu jmenných prostorů.

  4. Přepněte na stránku Měřítko .

    Service Bus Obor názvů – stránka škálování

Ruční škálování

Použijte toto nastavení k určení pevného počtu jednotek zasílání zpráv pro obor názvů.

  1. Na stránce nastavení automatického škálování vyberte ruční škálování, pokud ještě není vybraná.

  2. Pro nastavení jednotky zasílání zpráv vyberte v seznamu počet jednotek zasílání zpráv.

  3. Nastavení uložíte výběrem možnosti Uložit na panelu nástrojů.

    Ruční škálování jednotek zasílání zpráv

Vlastní automatické škálování – výchozí podmínka

Automatické škálování jednotek zasílání zpráv můžete nakonfigurovat pomocí podmínek. Tato podmínka škálování se spustí, když se neshoduje žádná z ostatních podmínek škálování. Nastavte výchozí podmínku jedním z následujících způsobů:

  • Škálování na základě metriky, jako je využití procesoru nebo paměti
  • Škálování na určitý počet jednotek zasílání zpráv

Pro výchozí podmínku nemůžete nastavit plán automatického škálování na konkrétní dny nebo rozsahy kalendářních dat. Tato podmínka škálování se spustí, když se neshoduje žádná z dalších podmínek škálování s plány.

Důležité

Při nastavování automatického škálování jsou klíčové prostředky paměti i procesoru. Vytvořte pravidla pro škálování nahoru a dolů pro oba procesy.

Poznámka:

Aby se zlepšila propustnost příjmu, Service Bus uchovává některé zprávy v mezipaměti. Service Bus ořízne mezipaměť pouze tehdy, když využití paměti překročí určitou vysokou prahovou hodnotu, například 80 %. Pokud entita odesílá zprávy, ale neobdrží je, budou se zprávy uložené v mezipaměti odrážet při zvýšeném využití paměti. "Za normálních okolností to není problém, protože Service Bus v případě potřeby ořízne mezipaměť, což nakonec způsobí snížení využití paměti." Vzhledem k tomu, že využití paměti se může rychle zvýšit, vertikálně navyšte kapacitu na 60% využití paměti, abyste zabránili přerušení zpracování zpráv.

Škálovat podle metriky

Následující postup ukazuje, jak přidat podmínku pro automatické zvýšení počtu jednotek zasílání zpráv (horizontální navýšení kapacity), pokud je využití procesoru větší než 75 % a snížit počet jednotek zasílání zpráv (škálování), pokud je využití procesoru menší než 25 %. Přírůstky se provádějí od 1 do 2, 2 až 4, 4 až 8 a 8 až 16. Podobně se dekrementy provádějí od 16 do 8, 8 až 4, 4 až 2 a 2 až 1.

  1. V nastavení automatického škálování vyberte možnost Vlastní automatické škálování pro možnost Zvolit, jak škálovat prostředek .

  2. V části Výchozí stránky zadejte název výchozí podmínky. Pokud chcete upravit text, vyberte ikonu tužky.

  3. Vyberte Škálovat na základě metriky pro režim škálování.

  4. Vyberte + Přidat pravidlo.

    Výchozí – škála na základě měření

  5. V pravidle škálování postupujte takto:

    1. Z rozevíracího seznamu Název metriky vyberte metriku. V tomto příkladu se jedná o procesor.

    2. Vyberte operátor a prahové hodnoty. V tomto příkladu jsou větší než a 75 pro prahovou hodnotu metriky, aby se aktivovala akce škálování.

    3. V části Akce vyberte operaci. V tomto příkladu je nastavená na Zvýšit.

    4. Pak vyberte Přidat.

      Výchozí – rozšíření kapacity, pokud je využití CPU větší než 75 %

      Poznámka:

      Funkce automatického škálování zvyšuje jednotky zasílání zpráv pro obor názvů, pokud celkové využití procesoru v tomto příkladu překročí 75 %. Přírůstky se provádějí od 1 do 2, 2 až 4, 4 až 8 a 8 až 16.

  6. Znovu vyberte + Přidat pravidlo a postupujte podle těchto kroků v pravidle škálování:

    1. Z rozevíracího seznamu Název metriky vyberte metriku. V tomto příkladu se jedná o procesor.

    2. Vyberte operátor a prahové hodnoty. V tomto příkladu jsou menší než a 25 pro prahovou hodnotu metriky, aby se aktivovala akce škálování.

    3. V části Akce vyberte operaci. V tomto příkladu je nastavená na Snížit.

    4. Pak vyberte Přidat.

      Výchozí– škálování, pokud je využití procesoru menší než 25 %

      Poznámka:

      Funkce automatického škálování snižuje jednotky zasílání zpráv pro obor názvů, pokud celkové využití procesoru v tomto příkladu klesne pod 25 %. Dekrementy se provádějí od 16 do 8, 8 až 4, 4 až 2 a 2 až 1.

  7. Nastavte minimální, maximální a výchozí počet jednotek zasílání zpráv.

    Výchozí pravidlo založené na metrice

  8. Výběrem možnosti Uložit na panelu nástrojů uložte nastavení automatického škálování.

Škálování na určitý počet jednotek zasílání zpráv

Podle těchto kroků nakonfigurujte pravidlo pro rozšíření oboru názvů pro použití určitého počtu jednotek zasílání zpráv. Výchozí podmínka platí, když se neshoduje žádná z ostatních podmínek škálování.

  1. V nastavení automatického škálování vyberte možnost Vlastní automatické škálování pro možnost Zvolit, jak škálovat prostředek .

  2. V části Výchozí stránky zadejte název výchozí podmínky.

  3. V režimu škálování vyberte Možnost Škálovat na konkrétní jednotkyzasílání zpráv.

  4. U jednotek zasílání zpráv vyberte počet výchozích jednotek zasílání zpráv.

    Výchozí – škálování na konkrétní jednotky zasílání zpráv

Vlastní automatické škálování – další podmínky

Předchozí část ukazuje, jak přidat výchozí podmínku pro nastavení automatického škálování. Tato část ukazuje, jak do nastavení automatického škálování přidat další podmínky. U těchto dalších podmínek, které nejsou výchozí, můžete nastavit plán na základě konkrétních dnů v týdnu nebo rozsahu kalendářních dat.

Škálovat podle metriky

  1. V nastavení automatického škálování vyberte možnost Vlastní automatické škálování pro možnost Zvolit, jak škálovat prostředek .

  2. Vyberte Přidat podmínku škálování v rámci výchozího bloku.

    Vlastní – přidat odkaz na podmínku škálování

  3. Zadejte název podmínky.

  4. Ověřte, že je vybraná možnost Škálování na základě metriky .

  5. Vyberte + Přidat pravidlo pro zvýšení jednotek zasílání zpráv, když celkové využití procesoru překročí 75 %. Postupujte podle kroků z části výchozí podmínka.

  6. Nastavte minimální, maximální a výchozí počet jednotek zasílání zpráv.

  7. Nastavte plán pro vlastní podmínku (ale ne pro výchozí podmínku). Můžete zadat počáteční a koncové datum podmínky nebo vybrat konkrétní dny (pondělí, úterý atd.) týdne.

    1. Pokud vyberete Zadat počáteční a koncové datum, vyberte časové pásmo, počáteční datum a čas a koncové datum a čas (jak je znázorněno na následujícím obrázku), aby se podmínka projevila.

      Minimální, maximální a výchozí hodnoty pro počet jednotek zasílání zpráv

    2. Pokud vyberete Možnost Opakovat konkrétní dny, vyberte dny v týdnu, časové pásmo, čas zahájení a koncový čas, kdy se má podmínka použít.

      Opakovat konkrétní dny

Škálování na určitý počet jednotek zasílání zpráv

  1. V nastavení automatického škálování vyberte možnost Vlastní automatické škálování pro možnost Zvolit, jak škálovat prostředek .

  2. Vyberte Přidat podmínku škálování v rámci výchozího bloku.

    Vlastní – přidat odkaz na podmínku škálování

  3. Zadejte název podmínky.

  4. Vyberte pro režim škálovánímožnost škálování na konkrétní jednotky zasílání zpráv.

  5. V rozevíracím seznamu vyberte počet jednotek zasílání zpráv.

  6. Pro plán zadejte buď počáteční a koncové datum podmínky, nebo vyberte konkrétní dny (pondělí, úterý atd.) týdne a časů.

    1. Pokud vyberete Zadat počáteční a koncové datum, vyberte časové pásmo, počáteční datum a čas a koncové datum a čas , aby byla podmínka platná.

    škálování na konkrétní jednotky zasílání zpráv – počáteční a koncové datum

    1. Pokud vyberete Možnost Opakovat konkrétní dny, vyberte dny v týdnu, časové pásmo, čas zahájení a koncový čas, kdy se má podmínka použít.

    škálování na konkrétní jednotky zasílání zpráv – opakování konkrétních dnů

    Další informace o tom, jak nastavení automatického škálování funguje, zejména jak vybírá profil nebo podmínku a vyhodnocuje více pravidel, najdete v tématu Vysvětlení nastavení automatického škálování.

    Poznámka:

    • Metriky, které zkontrolujete za účelem rozhodování o automatickém škálování, můžou být 5 až 10 minut staré. Když máte co do činění s nepravidelnými pracovními zátěžemi, používejte kratší dobu pro navýšení kapacity a delší dobu pro snížení kapacity. Protože Premium poplatky Service Bus jsou účtovány za hodinu, rychlé škálování dolů nesnižuje náklady za tuto hodinu. Místo toho udržujte období ochlazení pro snížení kapacity na více než 30 minut, aby se zajistilo, že snížené zatížení je stabilní před snížením kapacity. Tato podmínka zajišťuje, že je k dispozici dostatek komunikačních jednotek pro zpracování nevyrovnaných úloh a zabraňuje předčasnému snížení úrovně, které by mohlo způsobit omezení.

    Při vertikálním snížení kapacity nastavte prahovou hodnotu na méně než polovinu prahové hodnoty vertikálního navýšení kapacity. Pokud je například prahová hodnota vertikálního navýšení kapacity 80%, nastavte prahovou hodnotu vertikálního snížení kapacity na 30–35% (něco pod 40%), aby se zabránilo průběžnému vertikálnímu navýšení a snížení kapacity. Toto nastavení zabraňuje neustálému přepínání mezi zvětšováním a zmenšováním automatického škálování.

    • Pokud dojde k selhání kvůli nedostatku kapacity (nejsou k dispozici žádné jednotky zasílání zpráv), vytvořte lístek podpory. Plnění kapacity podléhá omezením prostředí a provádí se s maximálním úsilím.

Historie běhů

Přepněte na kartu Historie spuštění na stránce Měřítko a zobrazí se graf, který zobrazuje počet jednotek zasílání zpráv, jak je zaznamenáváno automatizačním motorem škálování. Pokud je graf prázdný, znamená to, že automatické škálování není nakonfigurované, je nakonfigurované, ale zakázané, nebo je v období ochlazování.

Snímek obrazovky zobrazující historii spuštění na stránce Měřítko

Oznámení

Přepněte na záložku Upozornění na stránce Škálování:

  • Povolte odesílání e-mailů s oznámeními správcům, spolusprávníkům a dalším správcům.

  • Umožněte odesílání e-mailů s oznámeními k HTTP nebo HTTPS koncovým bodům vystaveným webhooky.

    Snímek obrazovky zobrazující záložku Upozornění na stránce Scale.

Konfigurace pomocí šablony Resource Manager

Můžete použít následující ukázkovou šablonu nástroje Resource Manager ke vytvoření oboru názvů Service Bus s frontou a ke konfiguraci nastavení automatického škálování pro tento obor názvů. V tomto příkladu jsou zadány dvě podmínky škálování.

  • Výchozí podmínka škálování: Zvýšení jednotek zasílání zpráv, když průměrné využití procesoru překročí 75 % a sníží jednotky zasílání zpráv, když průměrné využití procesoru klesne pod 25 %.
  • Přiřaďte ke jmennému prostoru o víkendech dvě jednotky zasílání zpráv.

Šablona

{
	"$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"
			}
		}
	]
}

Můžete také vygenerovat příklad JSON pro prostředek nastavení automatického škálování z portálu Azure. Po nakonfigurování nastavení automatického škálování na portálu Azure vyberte JSON na panelu příkazů na stránce Scale.

Image zobrazující výběr tlačítka JSON na panelu příkazů stránky Škálování na portálu Azure portal.

Potom zahrňte JSON do oddílu resources šablony Resource Manager, jak je znázorněno v předchozím příkladu.

Další důležité informace

Pokud použijete možnost Vlastní automatické škálování s výchozí podmínkou nebo profilem, počet jednotek zasílání zpráv se postupně zvýší (1, 2, 4, 8, 16) nebo se sníží (16, 8, 4, 2, 1).

Při vytváření dalších podmínek se počet jednotek zasílání zpráv nemusí postupně zvětšovat ani snižovat. Předpokládejme, že definujete dva profily, jak je znázorněno v následujícím příkladu. V 06:00 UTC je počet jednotek zasílání zpráv nastaven na 16 a v 21:00 UTC se číslo zmenší na 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]
				}
			}
		}
	]
}

Vytvořte pravidla, která postupně zvyšují nebo snižují počet jednotek zasílání zpráv.

Další kroky

Další informace o jednotkách zasílání zpráv najdete v tématu Zasílání zpráv úrovně Premium.