Aggiornare automaticamente le unità di messaggistica di uno spazio dei nomi del bus di servizio di Azure

Il ridimensionamento automatico offre la possibilità di avere la quantità corretta di risorse in esecuzione per gestire il carico dell'applicazione. Consente di aggiungere risorse per gestire gli incrementi di carico nonché di risparmiare denaro rimuovendo le risorse inattive. Per altre informazioni sulla funzionalità di scalabilità automatica di Monitoraggio di Azure, vedere Panoramica della scalabilità automatica in Microsoft Azure .

La messaggistica di livello Premium del bus di servizio garantisce l'isolamento delle risorse a livello di CPU e di memoria in modo che ogni carico di lavoro del cliente venga eseguito in isolamento. Questo contenitore di risorse viene chiamato unità di messaggistica. Per altre informazioni sulle unità di messaggistica, vedere Messaggistica Premium del bus di servizio.

Usando la funzionalità di scalabilità automatica per gli spazi dei nomi Premium del bus di servizio, è possibile specificare un numero minimo e massimo di unità di messaggistica e aggiungere o rimuovere automaticamente unità di messaggistica in base a un set di regole.

Ad esempio, è possibile implementare gli scenari di ridimensionamento seguenti per gli spazi dei nomi del bus di servizio usando la funzionalità di scalabilità automatica.

  • Aumentare le unità di messaggistica per uno spazio dei nomi del bus di servizio quando l'utilizzo della CPU dello spazio dei nomi supera il 75%.
  • Ridurre le unità di messaggistica per uno spazio dei nomi del bus di servizio quando l'utilizzo della CPU dello spazio dei nomi è inferiore al 25%.
  • Usare più unità di messaggistica durante le ore lavorative e meno durante le ore di off.

Questo articolo illustra come ridimensionare automaticamente uno spazio dei nomi del bus di servizio (aggiornare le unità di messaggistica) usando il portale di Azure e un modello di Resource Manager di Azure.

Importante

Questo articolo si applica solo al livello Premium del bus di servizio di Azure.

Configurare con il Portale di Azure

In questa sezione viene illustrato come usare l'portale di Azure per configurare la scalabilità automatica delle unità di messaggistica per uno spazio dei nomi del bus di servizio.

Pagina impostazioni di scalabilità automatica

Per prima cosa, seguire questa procedura per passare alla pagina Impostazioni di scalabilità automatica per lo spazio dei nomi del bus di servizio.

  1. Accedere al portale di Azure.

  2. Nella barra di ricerca digitare Bus di servizio, selezionare Bus di servizio nell'elenco a discesa e premere INVIO.

  3. Selezionare lo spazio dei nomi Premium dall'elenco degli spazi dei nomi.

  4. Passare alla pagina Ridimensiona .

    Spazio dei nomi del bus di servizio - Pagina Ridimensionamento

Scalabilità manuale

Questa impostazione consente di impostare un numero fisso di unità di messaggistica per lo spazio dei nomi.

  1. Nella pagina Impostazioni di scalabilità automatica selezionare Scalabilità manuale se non è già selezionata.

  2. Per l'impostazione delle unità di messaggistica , selezionare il numero di unità di messaggistica dall'elenco a discesa.

  3. Selezionare Salva sulla barra degli strumenti per salvare l'impostazione.

    Ridimensionare manualmente le unità di messaggistica

Scalabilità automatica personalizzata - Condizione predefinita

È possibile configurare la scalabilità automatica delle unità di messaggistica usando le condizioni. Questa condizione di scalabilità viene eseguita quando nessuna delle altre condizioni di scala corrisponde. È possibile impostare la condizione predefinita in uno dei modi seguenti:

  • Ridimensionare in base a una metrica (ad esempio l'utilizzo della CPU o della memoria)
  • Ridimensionare il numero specifico di unità di messaggistica

Non è possibile impostare una pianificazione per la scalabilità automatica in un intervallo di giorni o di date specifico per una condizione predefinita. Questa condizione di scalabilità viene eseguita quando nessuna delle altre condizioni di scalabilità con le pianificazioni corrisponde.

Nota

Per migliorare la velocità effettiva di ricezione, il bus di servizio mantiene alcuni messaggi nella cache. Il bus di servizio taglia la cache solo quando l'utilizzo della memoria supera una determinata soglia elevata come il 90%. Quindi, se un'entità invia messaggi ma non li riceve, tali messaggi vengono memorizzati nella cache e riflette in un aumento dell'utilizzo della memoria. Non c'è nulla da preoccuparsi, perché il bus di servizio taglia la cache se necessario, che alla fine causa il calo dell'utilizzo della memoria. La memoria non causerà alcun problema a meno che non siano presenti prestazioni o altri problemi con lo spazio dei nomi. È consigliabile usare la metrica di utilizzo della CPU per la scalabilità automatica con il bus di servizio.

Ridimensiona in base a una metrica

La procedura seguente illustra come aggiungere una condizione per aumentare automaticamente le unità di messaggistica (scalabilità orizzontale) quando l'utilizzo della CPU è maggiore del 75% e ridurre le unità di messaggistica (ridimensionamento) quando l'utilizzo della CPU è inferiore al 25%. Gli incrementi vengono eseguiti da 1 a 2, da 2 a 4, da 4 a 8 e da 8 a 16. Analogamente, i decrementi vengono eseguiti da 16 a 8, da 8 a 4, da 4 a 2 e da 2 a 1.

  1. Nella pagina Impostazioni di scalabilità automatica selezionare Scalabilità automatica personalizzata per l'opzione Scegli come ridimensionare la risorsa .

  2. Nella sezione Impostazione predefinita della pagina specificare un nome per la condizione predefinita. Selezionare l'icona a forma di matita per modificare il testo.

  3. Selezionare Ridimensiona in base a una metrica per la modalità scalabilità.

  4. Selezionare + Aggiungi una regola.

    Impostazione predefinita: ridimensionare in base a una metrica

  5. Nella pagina Scala regola seguire questa procedura:

    1. Selezionare una metrica dall'elenco a discesa Nome metrica . In questo esempio si tratta della CPU.

    2. Selezionare un operatore e i valori soglia. In questo esempio sono maggiori di e 75 per la soglia metrica per attivare l'azione di scalabilità.

    3. Selezionare un'operazione nella sezione Azione . In questo esempio è impostato su Aumenta.

    4. Selezionare quindi Aggiungi

      Impostazione predefinita: ridimensionare se l'utilizzo della CPU è maggiore del 75%

      Nota

      La funzionalità di scalabilità automatica aumenta le unità di messaggistica per lo spazio dei nomi se l'utilizzo complessivo della CPU supera il 75% in questo esempio. Gli incrementi vengono eseguiti da 1 a 2, da 2 a 4, da 4 a 8 e da 8 a 16.

  6. Selezionare + Aggiungi di nuovo una regola e seguire questa procedura nella pagina Regole di scalabilità :

    1. Selezionare una metrica dall'elenco a discesa Nome metrica . In questo esempio si tratta della CPU.

    2. Selezionare un operatore e i valori soglia. In questo esempio sono meno di e 25 per la soglia metrica per attivare l'azione di scalabilità.

    3. Selezionare un'operazione nella sezione Azione . In questo esempio è impostata su Ridurre.

    4. Selezionare quindi Aggiungi

      Impostazione predefinita: ridimensionare se l'utilizzo della CPU è minore del 25%

      Nota

      La funzionalità di scalabilità automatica riduce le unità di messaggistica per lo spazio dei nomi se l'utilizzo complessivo della CPU è inferiore al 25% in questo esempio. I decrementi vengono eseguiti da 16 a 8, da 8 a 4, da 4 a 2 e da 2 a 1.

  7. Impostare il numero minimo e massimo e predefinito di unità di messaggistica.

    Regola predefinita basata su una metrica

  8. Selezionare Salva sulla barra degli strumenti per salvare l'impostazione di scalabilità automatica.

Ridimensionare il numero specifico di unità di messaggistica

Seguire questa procedura per configurare la regola per ridimensionare lo spazio dei nomi per usare un numero specifico di unità di messaggistica. Di nuovo, la condizione predefinita viene applicata quando nessuna delle altre condizioni di scalabilità corrisponde.

  1. Nella pagina Impostazioni di scalabilità automatica selezionare Scalabilità automatica personalizzata per l'opzione Scegli come ridimensionare la risorsa .

  2. Nella sezione Impostazione predefinita della pagina specificare un nome per la condizione predefinita.

  3. Selezionare Ridimensiona per unità di messaggistica specifiche per la modalità scalabilità.

  4. Per le unità di messaggistica selezionare il numero di unità di messaggistica predefinite.

    Impostazione predefinita: ridimensionare le unità di messaggistica specifiche

Scalabilità automatica personalizzata - Condizioni aggiuntive

La sezione precedente illustra come aggiungere una condizione predefinita per l'impostazione di scalabilità automatica. Questa sezione illustra come aggiungere altre condizioni all'impostazione di scalabilità automatica. Per queste condizioni aggiuntive non predefinite, è possibile impostare una pianificazione in base a giorni specifici di una settimana o a un intervallo di date.

Ridimensiona in base a una metrica

  1. Nella pagina Impostazioni di scalabilità automatica selezionare Scalabilità automatica personalizzata per l'opzione Scegli come ridimensionare la risorsa .

  2. Selezionare Aggiungi una condizione di scala nel blocco predefinito .

    Personalizzato : aggiungere un collegamento a una condizione di scalabilità

  3. Specificare un nome per la condizione.

  4. Verificare che sia selezionata l'opzione Ridimensiona in base a una metrica .

  5. Selezionare + Aggiungi una regola per aggiungere una regola per aumentare le unità di messaggistica quando l'utilizzo complessivo della CPU supera il 75%. Seguire i passaggi della sezione della condizione predefinita .

  6. Impostare il numero minimo e massimo e predefinito di unità di messaggistica.

  7. È anche possibile impostare una pianificazione in una condizione personalizzata ,ma non nella condizione predefinita. È possibile specificare le date di inizio e fine per la condizione (o) selezionare giorni specifici (lunedì, martedì e così via) di una settimana.

    1. Se si seleziona Specifica date di inizio/fine, selezionare il fuso orario, data e ora di inizio e ora e data e ora di fine (come illustrato nell'immagine seguente) per rendere effettiva la condizione.

      Valori minimi, massimi e predefiniti per il numero di unità di messaggistica

    2. Se si seleziona Ripeti giorni specifici, selezionare i giorni della settimana, il fuso orario, l'ora di inizio e l'ora di fine in cui deve essere applicata la condizione.

      Ripetere giorni specifici

Scalare a un numero specifico di unità di messaggistica

  1. Nella pagina Impostazione scalabilità automatica selezionare Scalabilità automatica personalizzata per l'opzione Scegliere come ridimensionare la risorsa .

  2. Selezionare Aggiungi una condizione di scalabilità nel blocco Predefinito .

    Personalizzata: aggiungere un collegamento a una condizione di scalabilità

  3. Specificare un nome per la condizione.

  4. Selezionare l'opzione Ridimensiona per unità di messaggistica specifiche per la modalità di scalabilità.

  5. Selezionare il numero di unità di messaggistica nell'elenco a discesa.

  6. Per la pianificazione, specificare le date di inizio e fine per la condizione (o) selezionare giorni specifici (lunedì, martedì e così via) di una settimana e di un'ora.

    1. Se si seleziona Specifica le date di inizio/fine, selezionare fuso orario, data e ora di inizio eora di fine per rendere effettiva la condizione.

    scalare a unità di messaggistica specifiche - date di inizio e fine

    1. Se si seleziona Ripeti giorni specifici, selezionare i giorni della settimana, il fuso orario, l'ora di inizio e l'ora di fine in cui deve essere applicata la condizione.

    ridimensionamento a unità di messaggistica specifiche: ripetere giorni specifici

    Per altre informazioni sul funzionamento delle impostazioni di scalabilità automatica, in particolare sul modo in cui seleziona un profilo o una condizione e valuta più regole, vedere Informazioni sulle impostazioni di scalabilità automatica.

    Nota

    • Le metriche che si esaminano per prendere decisioni sulla scalabilità automatica possono essere di 5-10 minuti. Quando si gestiscono carichi di lavoro spiky, è consigliabile avere durate più brevi per aumentare le prestazioni e durate più lunghe per ridurre le prestazioni (> 10 minuti) per assicurarsi che siano presenti unità di messaggistica sufficienti per elaborare carichi di lavoro spiky.

    • Se si verificano errori dovuti alla mancanza di capacità (nessuna unità di messaggistica disponibile), generare un ticket di supporto con Microsoft.

Cronologia di esecuzione

Passare alla scheda Cronologia di esecuzione nella pagina Scala per visualizzare un grafico che traccia il numero di unità di messaggistica come osservato dal motore di scalabilità automatica. Se il grafico è vuoto, significa che la scalabilità automatica non è stata configurata o configurata ma disabilitata o è in un periodo di raffreddamento.

Screenshot che mostra **Cronologia di esecuzione** nella pagina **Scalabilità**.

Notifiche

Passare alla scheda Notifica nella pagina Ridimensiona per:

  • Abilitare l'invio di messaggi di posta elettronica di notifica agli amministratori, ai coamministratori e agli eventuali amministratori aggiuntivi.

  • Abilitare l'invio di messaggi di posta elettronica di notifica a un endpoint HTTP o HTTPS esposto da webhook.

    Screenshot che mostra la scheda **Notifica** della pagina **Scalabilità**.

Configurare usando un modello di Resource Manager

È possibile usare il modello di esempio seguente Resource Manager per creare uno spazio dei nomi del bus di servizio con una coda e configurare le impostazioni di scalabilità automatica per lo spazio dei nomi. In questo esempio vengono specificate due condizioni di scala.

  • Condizione di scalabilità predefinita: aumentare le unità di messaggistica quando l'utilizzo medio della CPU supera il 75% e diminuire le unità di messaggistica quando l'utilizzo medio della CPU supera il 25%.
  • Assegnare due unità di messaggistica allo spazio dei nomi nei fine settimana.

Modello

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

È anche possibile generare un esempio JSON per una risorsa di impostazione di scalabilità automatica dal portale di Azure. Dopo aver configurato le impostazioni di scalabilità automatica nel portale di Azure, selezionare JSON sulla barra dei comandi della pagina Scalabilità.

Immagine che mostra la selezione del pulsante JSON sulla barra dei comandi della pagina **Ridimensiona** nel portale di Azure.

Includere quindi il codice JSON nella resources sezione di un modello di Resource Manager, come illustrato nell'esempio precedente.

Altre considerazioni

Quando si usa l'opzione Scalabilità automatica personalizzata con la condizione o il profilo predefinito, le unità di messaggistica vengono aumentate (1 -> 2 - 4 -> 8 ->> 16) o diminuite (16 -> 8 - 4 ->> 2 -> 1) gradualmente.

Quando si creano condizioni aggiuntive, le unità di messaggistica potrebbero non essere aumentate o ridotte gradualmente. Si supponga di avere due profili definiti come illustrato nell'esempio seguente. Alle 06:00 UTC, le unità di messaggistica sono impostate su 16 e alle 21:00 UTC vengono ridotte a 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]
				}
			}
		}
	]
}

È consigliabile creare regole in modo che le unità di messaggistica vengano aumentate o diminuite gradualmente.

Passaggi successivi

Per informazioni sulle unità di messaggistica, vedere Messaggistica Premium