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 l'orario di ufficio e meno durante gli orari di minore attività.

Questo articolo spiega 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 Azure Resource Manager.

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 spiegato come usare il portale di Azure per configurare la scalabilità automatica delle unità di messaggistica per uno spazio dei nomi del bus di servizio.

Pagina Impostazione di scalabilità automatica

Prima di tutto, seguire questa procedura per passare alla pagina Impostazione di scalabilità automatica relativa allo 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 desiderato dall'elenco degli spazi dei nomi.

  4. Passare alla pagina Scalabilità.

    Pagina Spazio dei nomi del bus di servizio - Scalabilità

Scalabilità manuale

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

  1. Nella pagina Impostazione di scalabilità automatica, selezionare Ridimensionamento manuale se non è già selezionata.

  2. In Unità di messaggistica, selezionare il numero di unità di messaggistica dall'elenco a discesa.

  3. Selezionare Salva sulla barra degli strumenti per salvare le impostazioni.

    Ridimensionare manualmente le unità di messaggistica

Scalabilità automatica personalizzata - Condizione predefinita

È possibile configurare il ridimensionamento automatico delle unità di messaggistica usando le condizioni. Questa condizione di ridimensionamento viene eseguita quando nessuna delle altre condizioni di ridimensionamento 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 in base a un numero specifico di unità di messaggistica

Non è possibile impostare una pianificazione per la scalabilità automatica su 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 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, ad esempio l'80%. Pertanto, se un'entità invia messaggi ma non li riceve, tali messaggi vengono memorizzati nella cache e ciò determina un maggiore utilizzo della memoria. Non c'è nulla da preoccuparsi, perché il bus di servizio taglia la cache, se necessario, e ciò alla fine causa la riduzione dell'utilizzo della memoria. Di conseguenza, è consigliabile aumentare le prestazioni solo una volta che l'utilizzo della memoria raggiunge il 90%. Inoltre, è consigliabile non ridurre fino a quando l'utilizzo della memoria non scende al di sotto del 90%.

Ridimensiona in base a una metrica

La procedura seguente illustra come aggiungere una condizione per aumentare automaticamente le unità di messaggistica (aumento del numero di istanze) quando l'utilizzo della CPU è maggiore del 75% e ridurre le unità di messaggistica (scalare) 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 Impostazione di scalabilità automatica, selezionare Scalabilità automatica personalizzata per l'opzione Scegli come ridimensionare la risorsa.

  2. Nella sezione Predefinito 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 in Modalità di ridimensionamento.

  4. Selezionare + Aggiungi una regola.

    Impostazione predefinita: Ridimensiona in base a una metrica

  5. Nella pagina Regola di scalabilità, seguire questa procedura:

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

    2. Selezionare un operatore e i valori di soglia. In questo esempio sono maggiore di e 75 per Soglia della metrica per l'attivazione dell'azione di aumento/riduzione.

    3. Selezionare una operazione nella sezione Azione. In questo esempio viene impostato su Incrementa.

    4. Quindi, selezionare Aggiungi.

      Impostazione predefinita: incrementare 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 di nuovo + Aggiungi una regola e seguire questa procedura nella pagina Regola di scalabilità:

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

    2. Selezionare un operatore e i valori di soglia. In questo esempio sono Inferiore a e 25 per Soglia della metrica per l'attivazione dell'azione di aumento/riduzione.

    3. Selezionare una operazione nella sezione Azione. In questo esempio viene impostato su Riduci.

    4. Quindi, selezionare Aggiungi.

      Impostazione predefinita: ridimensionare se l'utilizzo della CPU è inferiore al 25%

      Nota

      La funzionalità di scalabilità automatica riduce le unità di messaggistica per lo spazio dei nomi se l'utilizzo complessivo della CPU scende sotto il 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 minimo e massimo e il numero predefinito di unità di messaggistica.

    Regola predefinita basata su una metrica

  8. Selezionare Salva sulla barra degli strumenti per salvare le impostazioni di scalabilità automatica.

Ridimensionare in base a un numero specifico di unità di messaggistica

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

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

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

  3. Selezionare Ridimensiona in unità di messaggistica specifiche in Modalità di ridimensionamento.

  4. In Unità di messaggistica, selezionare il numero di unità di messaggistica predefinite.

    Impostazione predefinita: ridimensionare in 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 Impostazione di scalabilità automatica, selezionare Scalabilità automatica personalizzata per l'opzione Scegli come ridimensionare la risorsa.

  2. Selezionare Aggiungi una condizione di scalabilità 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 Condizione predefinita.

  6. Impostare minimo e massimo e il numero 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 di fine per la condizione (o) selezionare giorni specifici (lunedì, martedì e così via) di una settimana.

    1. Se si seleziona Specificare le date di inizio/fine, selezionare un valore in Fuso orario, Data e ora di inizio e Data e ora di fine (come illustrato nell'immagine seguente) affinché la condizione sia attiva.

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

    2. Se si seleziona Ripeti in 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.

      Ripeti in giorni specifici

Ridimensionare in base a un numero specifico di unità di messaggistica

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

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

    Personalizzato: aggiungere un collegamento a una condizione di scalabilità

  3. Specificare un nome per la condizione.

  4. Selezionare l'opzione Ridimensiona in unità di messaggistica specifiche in Modalità di ridimensionamento.

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

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

    1. Se si seleziona Specificare le date di inizio/fine, selezionare un valore in Fuso orario, Data e ora di inizio e Data e ora di fine affinché la condizione sia attiva.

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

    1. Se si seleziona Ripeti in 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.

    ridimensionare a unità di messaggistica specifiche - opzione Ripeti in 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 avere 5-10 minuti. Quando si gestiscono carichi di lavoro con picchi di traffico, è consigliabile avere durate più brevi per aumentare e durate più lunghe per ridurre le prestazioni (> 10 minuti) al fine di garantire che siano presenti unità di messaggistica sufficienti per elaborare carichi di lavoro con picchi di traffico.

    • Se si verificano errori a causa della mancanza di capacità (nessuna unità di messaggistica disponibile), generare un ticket di supporto da inviare a Microsoft. L'adempimento della capacità è soggetto ai vincoli dell'ambiente e viene eseguito nel migliore dei modi possibili.

Cronologia

Passare alla scheda Cronologia esecuzioni nella pagina Ridimensionamento 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 è temporaneamente disattivata.

Screenshot che mostra **Cronologia esecuzioni** nella pagina **Ridimensionamento**.

Notifications

Passare alla scheda Notifica della pagina Ridimensionamento per:

  • Abilitare l'invio di messaggi di posta elettronica di notifica agli amministratori, ai co-amministratori 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 **Ridimensionamento**.

Configurare usando un modello di Resource Manager

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

  • 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 scende al di sotto del 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 **Ridimensionamento** nel portale di Azure.

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

Considerazioni aggiuntive

Quando si usa l'opzione Scalabilità automatica personalizzata con la condizione o il profilo impostato su 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 gradualmente aumentate o ridotte. 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