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

Automatické škálování umožňuje mít spuštěné správné množství prostředků, které zvládnou zatížení vaší aplikace. Umožňuje přidat prostředky, které zvládnou nárůst zatížení, a také ušetřit peníze odebráním nečinných prostředků. Další informace o funkci automatického škálování služby Azure Monitor najdete v tématu Přehled automatického škálování v Microsoft Azure .

Zasílání zpráv Service Bus Premium zajišťuje izolaci prostředků na úrovni CPU a paměti, takže každá úloha zákazníka běží 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 Zasílání zpráv Service Bus Premium.

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 zasílání zpráv 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 obory názvů služby Service Bus.

  • Zvýšení počtu jednotek zasílání zpráv pro obor názvů služby Service Bus v případě, že využití procesoru v oboru názvů překročí 75 %.
  • Snížení počtu jednotek zasílání zpráv pro obor názvů služby Service Bus v případě, že využití procesoru v oboru názvů klesne pod 25 %.
  • Během pracovní doby používejte více jednotek zasílání zpráv a méně mimo špičku.

V tomto článku se dozvíte, jak můžete automaticky škálovat obor názvů služby Service Bus (jednotky pro aktualizaci zasílání zpráv) pomocí Azure Portal a šablony Azure Resource Manager.

Důležité

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

Konfigurace prostřednictvím portálu Azure Portal

V této části se dozvíte, jak pomocí Azure Portal nakonfigurovat automatické škálování jednotek zasílání zpráv pro obor názvů služby Service Bus.

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

Nejprve postupujte podle těchto kroků a přejděte na stránku nastavení automatického škálování pro váš obor názvů služby Service Bus.

  1. Přihlaste se k webu Azure Portal.

  2. Na panelu hledání zadejte Service Bus, v rozevíracím seznamu vyberte Service Bus a stiskněte ENTER.

  3. V seznamu oborů názvů vyberte obor názvů Premium .

  4. Přepněte na stránku Škálování .

    Obor názvů služby Service Bus – stránka Škálování

Ruční škálování

Toto nastavení umožňuje nastavit pevný počet 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í zaškrtnuté.

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

  3. Na panelu nástrojů vyberte Uložit a uložte nastavení.

    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ž neodpovídá žádná z ostatních podmínek škálování. Výchozí podmínku můžete nastavit jedním z následujících způsobů:

  • Škálování na základě metriky (například 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 rozsah dat. Tato podmínka škálování se spustí, když neodpovídá žádná z ostatních podmínek škálování s plány.

Poznámka

Aby se zlepšila propustnost příjmu, service bus uchovává některé zprávy ve své mezipaměti. Service Bus mezipaměť oříznou jenom v případech, kdy využití paměti překročí určitou vysokou prahovou hodnotu, například 90 %. Pokud tedy entita odesílá zprávy, ale nepřijímá je, tyto zprávy se uloží do mezipaměti a projeví se to ve zvýšeném využití paměti. Není potřeba se zabývat, protože Service Bus v případě potřeby mezipaměť oříznou, což nakonec způsobí snížení využití paměti. Paměť nezpůsobí žádné problémy, pokud nedojde k problémům s výkonem nebo jinými problémy s oborem názvů. Pro automatické škálování se službou Service Bus doporučujeme použít metriku využití procesoru.

Škálování na základě 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 vyšší než 75 %, a snížení počtu jednotek zasílání zpráv (horizontální snížení kapacity), pokud je využití procesoru menší než 25 %. Přírůstky se provádějí od 1 do 2, 2 do 4, od 4 do 8 a od 8 do 16. Podobně se dekrementy provádějí od 16 do 8, 8 do 4, 4 na 2 a 2 na 1.

  1. Na stránce Nastavení automatického škálování vyberte Vlastní automatické škálování u možnosti Zvolit způsob škálování prostředku .

  2. V části Výchozí na stránce zadejte název výchozí podmínky. Vyberte ikonu tužky a upravte text.

  3. Jako Režim škálování vyberte Škálovat na základě metriky.

  4. Vyberte + Přidat pravidlo.

    Výchozí – škálování na základě metriky

  5. Na stránce Pravidlo škálování postupujte takto:

    1. Vyberte metriku z rozevíracího seznamu Název metriky . V tomto příkladu je to procesor.

    2. Vyberte operátor a prahové hodnoty. V tomto příkladu jsou větší než a 75 pro prahovou hodnotu metriky pro aktivaci 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í – horizontální navýšení kapacity, pokud je využití procesoru vyšší než 75 %

      Poznámka

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

  6. Znovu vyberte + Přidat pravidlo a na stránce Pravidlo škálování postupujte takto:

    1. Vyberte metriku z rozevíracího seznamu Název metriky . V tomto příkladu je to procesor.

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

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

    4. Pak vyberte Přidat.

      Výchozí – horizontální snížení kapacity, pokud je využití procesoru nižší než 25 %

      Poznámka

      Pokud v tomto příkladu celkové využití procesoru klesne celkové využití procesoru pod 25 %, funkce automatického škálování sníží počet jednotek zasílání zpráv pro obor názvů. Dekrementy se provádějí od 16 do 8, od 8 do 4, od 4 do 2 a od 2 do 1.

  7. Nastavte minimální a 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

Postupujte podle těchto kroků a nakonfigurujte pravidlo pro škálování oboru názvů tak, aby používal určitý počet jednotek zasílání zpráv. Opět platí, že výchozí podmínka se použije, když se neshoduje žádná z ostatních podmínek škálování.

  1. Na stránce Nastavení automatického škálování vyberte Vlastní automatické škálování u možnosti Zvolit způsob škálování prostředku .

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

  3. V části Režim škálování vyberte Škálovat na konkrétní jednotky zasílání zpráv.

  4. V části Jednotky 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

V předchozí části se dozvíte, jak přidat výchozí podmínku pro nastavení automatického škálování. V této části se dozvíte, jak do nastavení automatického škálování přidat další podmínky. Pro tyto další nevýchozí podmínky můžete nastavit plán na základě konkrétních dnů v týdnu nebo rozsahu dat.

Škálování na základě metriky

  1. Na stránce Nastavení automatického škálování vyberte Vlastní automatické škálování u možnosti Zvolit způsob škálování prostředku .

  2. V bloku Výchozí vyberte Přidat podmínku škálování.

    Vlastní – přidání podmínky škálování – odkaz

  3. Zadejte název podmínky.

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

  5. Pokud chcete přidat pravidlo, které zvýší počet jednotek zasílání zpráv, když celkové využití procesoru překročí 75 %, vyberte + Přidat pravidlo . Postupujte podle pokynů v části Výchozí podmínka .

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

  7. Můžete také nastavit 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.) v týdnu.

    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 podmínka byla v platnosti.

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

    2. Pokud vyberete Opakovat konkrétní dny, vyberte dny v týdnu, časové pásmo, počáteční čas a koncový čas, kdy má podmínka platit.

      Opakovat konkrétní dny

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

  1. Na stránce Nastavení automatického škálování vyberte Vlastní automatické škálování u možnosti Zvolit způsob škálování prostředku .

  2. V bloku Výchozí vyberte Přidat podmínku škálování.

    Vlastní – přidání podmínky škálování – odkaz

  3. Zadejte název podmínky.

  4. V části Režim škálování vyberte možnost Škálovat 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. Jako plán zadejte 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 podmínka byla v platnosti.

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

    1. Pokud vyberete Opakovat konkrétní dny, vyberte dny v týdnu, časové pásmo, počáteční čas a koncový čas, kdy má podmínka platit.

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

    Další informace o tom, jak nastavení automatického škálování fungují, 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é kontrolujete při rozhodování o automatickém škálování, můžou být staré 5 až 10 minut. Pokud pracujete s rychlými úlohami, doporučujeme, abyste měli kratší dobu vertikálního navýšení kapacity a delší dobu trvání vertikálního snížení kapacity (> 10 minut), abyste měli jistotu, že je k dispozici dostatek jednotek zasílání zpráv pro zpracování rychlých úloh.

    • Pokud dojde k selhání kvůli nedostatku kapacity (nejsou k dispozici žádné jednotky pro zasílání zpráv), vytvořte u nás lístek podpory.

Historie spuštění

Přepněte na kartu Historie spuštění na stránce Měřítko a zobrazte graf, který vykresluje počet jednotek zasílání zpráv podle pozorování modulem automatického škálování. Pokud je graf prázdný, znamená to, že automatické škálování nebylo nakonfigurováno nebo nakonfigurováno, ale bylo zakázáno, nebo je v období přestávky.

Snímek obrazovky s **historií spuštění** na stránce **Měřítko**

Oznámení

Přepněte na kartu Notify (Oznámení ) na stránce Scale (Škálovat ) na:

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

  • Povolte odesílání e-mailů s oznámeními do koncových bodů HTTP nebo HTTPS vystavených webhooky.

    Snímek obrazovky zobrazující kartu **Oznámit** na stránce **Měřítko**.

Konfigurace pomocí šablony Resource Manager

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

  • Výchozí podmínka škálování: Zvyšte jednotky zasílání zpráv, když průměrné využití procesoru překročí 75 %, a snižte jednotky zasílání zpráv, pokud průměrné využití procesoru klesne pod 25 %.
  • Přiřaďte k oboru názvů dvě jednotky zasílání zpráv o víkendech.

Template (Š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 Azure Portal. Po konfiguraci nastavení automatického škálování v Azure Portal vyberte json na panelu příkazů na stránce Škálování.

Obrázek znázorňující výběr tlačítka JSON na panelu příkazů stránky **Měřítko** v Azure Portal

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

Další aspekty

Při použití možnosti Vlastní automatické škálování s výchozí podmínkou nebo profilem se jednotky zasílání zpráv zvyšují (1 –> 2 –> 4 –> 8 –> 16) nebo se postupně snižují (16 –> 8 –> 4 –> 2 –> 1).

Když vytvoříte další podmínky, jednotky zasílání zpráv se nemusí postupně navyšovat nebo snižovat. Předpokládejme, že máte definované dva profily, jak je znázorněno v následujícím příkladu. V 6:00 UTC jsou jednotky pro zasílání zpráv nastaveny na hodnotu 16 a ve 21:00 UTC se 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]
				}
			}
		}
	]
}

Doporučujeme vytvořit pravidla tak, aby jednotky zasílání zpráv postupně narůstaly nebo snižovaly.

Další kroky

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