Mettre à jour automatiquement les unités de messagerie d’un espace de noms Azure Service Bus

La mise à l’échelle automatique vous permet de disposer de la bonne quantité de ressources en cours d’exécution pour gérer la charge sur votre application. Elle vous permet d’ajouter des ressources pour gérer les augmentations de charge et d’économiser de l’argent en supprimant les ressources qui sont inactives. Pour en savoir plus sur la fonctionnalité de mise à l’échelle automatique d’Azure Monitor, consultez Vue d’ensemble de la mise à l’échelle automatique dans Microsoft Azure.

La messagerie Service Bus Premium isole les ressources au niveau processeur et mémoire, ce qui permet d’exécuter chaque charge de travail client de manière isolée. Ce conteneur de ressources est appelé unité de messagerie. Pour en savoir plus sur les unités de messagerie, consultez Messagerie Service Bus Premium.

En utilisant la fonctionnalité de mise à l’échelle automatique pour les espaces de noms Service Bus Premium, vous pouvez spécifier un nombre minimal et maximal d’unités de messagerie et ajouter ou supprimer automatiquement des unités de messagerie en fonction d’un ensemble de règles.

Par exemple, vous pouvez implémenter les scénarios de mise à l’échelle suivants pour les espaces de noms Service Bus à l’aide de la fonctionnalité de mise à l’échelle automatique.

  • Augmenter les unités de messagerie pour un espace de noms Service Bus quand l’utilisation du processeur de l’espace de noms est supérieure à 75 %.
  • Diminuer les unités de messagerie pour un espace de noms Service Bus quand l’utilisation du processeur de l’espace de noms est inférieure à 25 %.
  • Utiliser davantage d’unités de messagerie pendant les heures de bureau et moins pendant les heures creuses.

Cet article explique comment mettre automatiquement à l’échelle un espace de noms Service Bus (mettre à jour les unités de messagerie) dans le portail Azure et un modèle Azure Resource Manager.

Important

Cet article s’applique uniquement au niveau de service Premium d’Azure Service Bus.

Configurer à l’aide du portail Azure

Dans cette section, vous découvrez comment utiliser le Portail Azure pour configurer la mise à l’échelle automatique des unités de messagerie pour un espace de noms Service Bus.

Page des paramètres de mise à l’échelle automatique

Tout d’abord, procédez comme suit pour accéder à la page Paramètres de mise à l’échelle automatique pour votre espace de noms Service Bus.

  1. Connectez-vous au portail Azure.

  2. Dans la barre de recherche, tapez Service Bus, sélectionnez Service Bus dans la liste déroulante et appuyez sur Entrée.

  3. Sélectionnez votre espace de noms Premium dans la liste des espaces de noms.

  4. Accédez à la page Mettre à l’échelle.

    Espace de noms Service Bus - Page Mettre à l’échelle

Mise à l’échelle manuelle

Ce paramètre vous permet de définir un nombre fixe d’unités de messagerie pour l’espace de noms.

  1. Dans la page Paramètre de mise à l’échelle automatique, sélectionnez Mise à l’échelle manuelle si cette option ne l’est pas déjà.

  2. Pour le paramètre Unités de messagerie, sélectionnez le nombre d’unités de messagerie dans la liste déroulante.

  3. Sélectionnez Enregistrer dans la barre d’outils pour enregistrer le paramètre.

    Mettre manuellement à l’échelle les unités de messagerie

Mise à l’échelle automatique personnalisée - Condition par défaut

Vous pouvez configurer la mise à l’échelle automatique des unités de messagerie à l’aide de conditions. Cette condition de mise à l’échelle est exécutée quand aucune des autres conditions de mise à l’échelle ne correspond. Vous pouvez définir la condition par défaut de l’une des manières suivantes :

  • Mettre à l’échelle selon une métrique (telle que l’utilisation du processeur ou de la mémoire)
  • Mettre à l’échelle selon un nombre spécifique d’unités de messagerie

Vous ne pouvez pas définir une planification de mise à l’échelle automatique selon des jours ou une plage de dates spécifiques pour une condition par défaut. Cette condition de mise à l’échelle est exécutée quand aucune des autres conditions de mise à l’échelle avec planifications ne correspond.

Notes

Pour améliorer le débit de réception, Azure Service Bus conserve certains messages dans son cache. Azure Service Bus supprime le cache uniquement lorsque l’utilisation de la mémoire dépasse un seuil élevé, 80 % par exemple. Par conséquent, si une entité envoie des messages mais ne les reçoit pas, ceux-ci sont mis en cache, entraînant ainsi une utilisation accrue de la mémoire. Normalement, cela signifie qu’il n’y a rien à craindre, car Service Bus supprime le cache si nécessaire, ce qui entraîne l’arrêt de l’utilisation de la mémoire. Par conséquent, il est recommandé d’effectuer un scale-up uniquement une fois que l’utilisation de la mémoire atteint 90 %. En outre, il est recommandé de ne pas effectuer un scale-down tant que l’utilisation de la mémoire ne dépasse pas 90 %.

Mettre à l’échelle selon une métrique

La procédure suivante vous montre comment ajouter une condition pour augmenter automatiquement les unités de messagerie (scale-out) quand l’utilisation du processeur est supérieure à 75 % et diminuer les unités de messagerie (scale-in) quand elle est inférieure à 25 %. Les incrémentations sont effectuées de 1 à 2, de 2 à 4, de 4 à 8 et de 8 à 16. De même, les décrémentations sont effectuées de 16 à 8, de 8 à 4, de 4 à 2 et de 2 à 1.

  1. Dans la page Paramètre de mise à l’échelle automatique, sélectionnez Mise à l’échelle automatique personnalisée pour l’option Choisir comment mettre à l’échelle vos ressources.

  2. Dans la section Par défaut de la page, spécifiez un nom pour la condition par défaut. Sélectionnez l’icône en forme de crayon pour modifier le texte.

  3. Pour Mode de mise à l’échelle, sélectionnez Mettre à l’échelle selon une métrique.

  4. Sélectionnez + Ajouter une règle.

    Par défaut - Mettre à l’échelle selon une métrique

  5. Dans la page Règle de mise à l’échelle, procédez comme suit :

    1. Sélectionnez une métrique dans la liste déroulante Nom de la métrique. Dans cet exemple, il s’agit de Processeur.

    2. Sélectionnez un opérateur et des valeurs de seuil. Dans cet exemple, il s’agit de Supérieur à et 75 pour Seuil de métrique pour déclencher l’action de mise à l’échelle.

    3. Sélectionnez une opération dans la section Action. Dans cet exemple, la valeur est Augmenter.

    4. Sélectionnez ensuite Ajouter.

      Par défaut - Scale-out si l’utilisation du processeur est supérieure à 75 %

      Notes

      La fonctionnalité de mise à l’échelle automatique augmente les unités de messagerie de l’espace de noms si l’utilisation globale du processeur dépasse 75 % dans cet exemple. Les incrémentations sont effectuées de 1 à 2, de 2 à 4, de 4 à 8 et de 8 à 16.

  6. Sélectionnez une nouvelle fois + Ajouter une règle, puis procédez comme suit dans la page Règle de mise à l’échelle :

    1. Sélectionnez une métrique dans la liste déroulante Nom de la métrique. Dans cet exemple, il s’agit de Processeur.

    2. Sélectionnez un opérateur et des valeurs de seuil. Dans cet exemple, il s’agit des valeurs Inférieur à et 25 pour Seuil de métrique pour déclencher l’action de mise à l’échelle.

    3. Sélectionnez une opération dans la section Action. Dans cet exemple, la valeur est Diminuer.

    4. Sélectionnez ensuite Ajouter.

      Par défaut - Scale-in si l’utilisation du processeur est inférieure à 25%

      Notes

      La fonctionnalité de mise à l’échelle automatique diminue les unités de messagerie de l’espace de noms si l’utilisation globale du processeur est inférieure à 25 % dans cet exemple. Les décrémentations sont effectuées de 16 à 8, de 8 à 4, de 4 à 2 et de 2 à 1.

  7. Définissez le nombre minimal, maximal et par défaut d’unités de messagerie.

    Règle par défaut basée sur une métrique

  8. Sélectionnez Enregistrer dans la barre d’outils pour enregistrer le paramètre de mise à l’échelle automatique.

Mettre à l’échelle selon un nombre spécifique d’unités de messagerie

Procédez comme suit pour configurer la règle afin de mettre à l’échelle l’espace de noms pour utiliser un nombre spécifique d’unités de messagerie. Là encore, la condition par défaut est appliquée quand aucune des autres conditions de mise à l’échelle ne correspond.

  1. Dans la page Paramètre de mise à l’échelle automatique, sélectionnez Mise à l’échelle automatique personnalisée pour l’option Choisir comment mettre à l’échelle vos ressources.

  2. Dans la section Par défaut de la page, spécifiez un nom pour la condition par défaut.

  3. Pour Mode de mise à l’échelle, sélectionnez Mettre à l’échelle sur des unités de messagerie spécifiques.

  4. Pour Unités de messagerie, sélectionnez le nombre d’unités de messagerie par défaut.

    Par défaut - Mettre à l’échelle sur des unités de messagerie spécifiques

Mise à l’échelle automatique personnalisée - Conditions supplémentaires

La section précédente vous montre comment ajouter une condition par défaut pour le paramètre de mise à l’échelle automatique. Cette section vous montre comment ajouter d’autres conditions au paramètre de mise à l’échelle automatique. Pour ces autres conditions non définies par défaut, vous pouvez configurer une planification basée sur des jours spécifiques d’une semaine ou une plage de dates.

Mettre à l’échelle selon une métrique

  1. Dans la page Paramètre de mise à l’échelle automatique, sélectionnez Mise à l’échelle automatique personnalisée pour l’option Choisir comment mettre à l’échelle vos ressources.

  2. Sélectionnez Ajouter une condition de mise à l’échelle sous le bloc Par défaut.

    Mise à l’échelle automatique personnalisée - Lien Ajouter une condition de mise à l’échelle

  3. Spécifiez un nom pour la condition.

  4. Confirmez la sélection de l’option Mettre à l’échelle selon une métrique.

  5. Sélectionnez + Ajouter une règle pour ajouter une règle afin d’augmenter les unités de messagerie quand l’utilisation globale du processeur dépasse 75 %. Suivez les étapes de la section Condition par défaut.

  6. Définissez le nombre minimal, maximal et par défaut d’unités de messagerie.

  7. Vous pouvez également définir une planification sur une condition personnalisée (mais pas sur la condition par défaut). Vous pouvez spécifier des dates de début et de fin pour la condition (ou) sélectionner des jours spécifiques (lundi, mardi, etc.) d’une semaine.

    1. Si vous sélectionnez Spécifier des dates de début/fin, sélectionnez Fuseau horaire, Date et heure de début et Date et heure de fin (comme indiqué dans l’image suivante) pour que la condition soit appliquée.

      Valeurs minimale, maximale et par défaut pour le nombre d’unités de messagerie

    2. Si vous sélectionnez Répéter des jours spécifiques, sélectionnez les jours de la semaine, le fuseau horaire, l’heure de début et l’heure de fin auxquels la condition doit s’appliquer.

      Répéter des jours spécifiques

Mettre à l’échelle selon un nombre spécifique d’unités de messagerie

  1. Dans la page Paramètre de mise à l’échelle automatique, sélectionnez Mise à l’échelle automatique personnalisée pour l’option Choisir comment mettre à l’échelle vos ressources.

  2. Sélectionnez Ajouter une condition de mise à l’échelle sous le bloc Par défaut.

    Mise à l’échelle automatique personnalisée - Lien Ajouter une condition de mise à l’échelle

  3. Spécifiez un nom pour la condition.

  4. Pour Mode de mise à l’échelle, sélectionnez l’option Mettre à l’échelle sur des unités de messagerie spécifiques.

  5. Sélectionnez le nombre d’unités de messagerie dans la liste déroulante.

  6. Pour la planification, spécifiez des dates de début et de fin pour la condition (ou) sélectionnez des jours spécifiques (lundi, mardi, etc.) d’une semaine ainsi que des heures.

    1. Si vous sélectionnez Spécifier des dates de début/fin, sélectionnez Fuseau horaire, Date et heure de début et Date et heure de fin pour que la condition soit appliquée.

    Mettre à l’échelle sur des unités de messagerie spécifiques - Dates de début et de fin

    1. Si vous sélectionnez Répéter des jours spécifiques, sélectionnez les jours de la semaine, le fuseau horaire, l’heure de début et l’heure de fin auxquels la condition doit s’appliquer.

    Mettre à l’échelle sur des unités de messagerie spécifiques - Répéter des jours spécifiques

    Pour en savoir plus sur le fonctionnement des paramètres de mise à l’échelle automatique, en particulier sur le choix d’un profil ou d’une condition et l’évaluation de plusieurs règles, consultez Comprendre les paramètres de mise à l’échelle automatique.

    Notes

    • Les métriques que vous examinez pour prendre des décisions sur la mise à l’échelle automatique peuvent avoir 5 à 10 minutes. Lorsque vous travaillez avec des charges de travail imprévisibles, nous vous recommandons d’utiliser des durées plus courtes pour monter en puissance et des durées plus longues pour descendre en puissance (> 10 minutes). Ainsi, vous vous assurez d’avoir assez d’unités de messagerie pour les charges de travail imprévisibles.

    • Si vous constatez des défaillances en raison d’un manque de capacité (aucune unité de messagerie disponible), envoyez-nous un ticket de support. Le traitement de la capacité est soumis aux contraintes de l’environnement et est effectué dans la mesure du possible.

Historique d’exécution

Basculez vers l’onglet Historique des exécutions dans la page Mise à l’échelle pour voir un graphique traçant le nombre d’unités de messagerie observé par le moteur de mise à l’échelle automatique. Si le graphique est vide, cela signifie soit que la mise à l’échelle automatique n’a pas été configurée ou a été configurée mais désactivée, soit qu’elle est dans une période de refroidissement.

Capture d’écran montrant **Historique d’exécution** dans la page **Échelle**.

Notifications

Basculez vers l’onglet Notifier dans la page Mise à l’échelle pour :

  • Activer l’envoi d’e-mails de notification aux administrateurs, aux coadministrateurs et aux administrateurs supplémentaires.

  • Activer l’envoi d’e-mails de notification à des points de terminaison HTTP ou HTTPS exposés par des webhooks.

    Capture d’écran montrant l’onglet **Notifier** de la page **Échelle**.

Configurer à l’aide d’un modèle Resource Manager

Vous pouvez utiliser l’exemple de modèle Resource Manager suivant pour créer un espace de noms Service Bus avec une file d’attente, et configurer des paramètres de mise à l’échelle automatique pour l’espace de noms. Dans cet exemple, deux conditions de mise à l’échelle sont spécifiées.

  • Condition de mise à l’échelle par défaut : augmenter les unités de messagerie quand l’utilisation moyenne du processeur dépasse 75 %, et réduire les unités de messagerie quand l’utilisation moyenne du processeur chute sous 25 %.
  • Attribuez deux unités de messagerie à l’espace de noms pendant les week-ends.

Modèle

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

Vous pouvez également générer un exemple JSON pour une ressource de paramètre de mise à l’échelle automatique à partir du portail Azure. Après avoir configuré les paramètres de mise à l’échelle automatique dans le portail Azure, sélectionnez JSON dans la barre de commandes de la page Mise à l’échelle.

Image illustrant la sélection du bouton JSON dans la barre de commandes de la page **Échelle** du portail Azure.

Ensuite, incluez le JSON dans la section resources d’un modèle Resource Manager, comme dans l’exemple précédent.

Considérations supplémentaires

Lorsque vous utilisez l’option Mise à l’échelle automatique personnalisée avec la condition ou le profil par défaut, les unités de messagerie sont augmentées (1 -> 2 -> 4 -> 8 -> 16) ou diminuées (16 -> 8 -> 4 -> 2 -> 1) progressivement.

Lorsque vous créez d’autres conditions, les unités de messagerie peuvent ne pas être progressivement augmentées ou réduites. Supposons que vous ayez deux profils définis comme illustré dans l’exemple suivant. À 06:00 UTC, les unités de messagerie sont définies sur 16 et, à 21:00 UTC, elles sont réduites à 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]
				}
			}
		}
	]
}

Nous vous recommandons de créer des règles pour que les unités de messagerie soient augmentées ou diminuées de manière progressive.

Étapes suivantes

Pour en savoir plus sur les unités de messagerie, consultez l’article relatif à la messagerie Premium.