Photo par Manuel Geissinger

Automatiser la mise à l'échelle des instances secondaires APIM en mode multi-régions

Arrêtez la mise à l'échelle manuelle

Créé par Damien Aicheh le 16/09/2024 · 6 mins

Dans ce tutoriel, vous découvrirez comment mettre à l’échelle automatiquement une instance APIM dans une région secondaire. Au moment où j’écris cet article, la seule façon de le faire est manuellement.

Contexte

Dans un scénario où une APIM est déployée dans plusieurs régions, vous avez la possibilité d’activer la mise à l’échelle automatique pour la région principale, mais cette fonctionnalité n’est pas encore disponible pour la région secondaire. Vous devez donc le faire manuellement ou trouver un moyen d’automatiser ce processus.

Dans ce tutoriel, vous verrez un scénario où vous avez une instance APIM déployée en France centrale pour la région principale et en Europe de l’Ouest pour la région secondaire. L’idée de ce tutoriel est de découvrir un moyen de mettre à l’échelle automatiquement la région secondaire.

Métriques

La première chose à faire est de trouver les bonnes métriques pour mettre à l’échelle votre région secondaire APIM. Dans APIM, vous avez beaucoup de métriques disponibles, vous pouvez les trouver dans le portail Azure dans la section Metrics de votre instance APIM.

La métrique de capacité est celle que vous devez utiliser pour mettre à l’échelle votre instance APIM. Cette métrique est émise par minute et reflète la capacité de la passerelle. La métrique varie de 0 à 100, calculée en fonction de l’utilisation du CPU et de la mémoire.

Metrics

L’idée sera donc de surveiller cette métrique et, en fonction de celle-ci, de mettre à l’échelle votre instance APIM. Pour ce faire, vous devrez utiliser Azure Monitor et créer une alerte basée sur la métrique de capacité.

Architecture

L’idée est de créer une alerte basée sur la métrique de capacité et, lorsque l’alerte est déclenchée, de mettre à l’échelle votre instance APIM. Vous devrez donc créer une ressource pour déclencher la mise à l’échelle de votre instance APIM. Pour ce tutoriel, j’utiliserai une Azure Function.

Architecture

Ainsi, lorsque la métrique de capacité APIM dépasse un certain seuil, une alerte sera déclenchée et l’Azure Function sera appelée pour mettre à l’échelle l’instance APIM. L’Azure Function utilisera l’Azure CLI pour mettre à l’échelle l’instance APIM. Bien sûr, en fonction du trafic de votre instance APIM dans une région secondaire, vous augmenterez ou diminuerez la capacité de votre instance APIM.

Alerte

Pour créer une alerte, vous devez aller dans la section Alerts de votre instance APIM et sélectionner + Create > Alert rule.

Alert

Comme vous pouvez le voir ci-dessus, dans l’onglet Condition, vous devez sélectionner la métrique de capacité et cibler la région secondaire de votre instance APIM. Vous devrez également spécifier le seuil et la période de temps. Vous pouvez donc imaginer un scénario où si la moyenne du seuil est supérieure à 60 % pendant 30 minutes, vous déclencherez l’alerte pour mettre à l’échelle votre instance APIM.

En fonction de ces métriques, vous déclencherez l’Azure Function, donc dans l’onglet Actions, vous devez sélectionner Azure Function et sélectionner votre Azure Function.

Select Function

Assurez-vous également de créer une autre alerte pour faire l’opération inverse, donc si la métrique de capacité est inférieure à un certain seuil, vous diminuerez la capacité de votre instance APIM pour éviter le surprovisionnement.

Azure Function

Pour simplifier les choses, vous pouvez utiliser les Azure Functions en mode PowerShell afin de pouvoir utiliser directement l’Azure CLI.

Tout d’abord, vous devrez obtenir le nombre actuel d’instances de votre instance APIM dans la région secondaire. Vous pouvez le faire en utilisant l’Azure CLI :

$CURRENT_CAPACITY = az apim show --name  --resource-group  --query "additionalLocations.sku.capacity"

Cette commande renverra la capacité actuelle de votre instance APIM dans la région secondaire. Si vous avez plusieurs instances, vous devrez cibler la bonne avec le paramètre additionalLocations et l’index de l’instance. Plus de détails sur la commande az apim show peuvent être trouvés ici.

Ensuite, vous devrez mettre à l’échelle votre instance APIM en fonction de la capacité actuelle :

az apim update --name  --resource-group  --set additionalLocations.sku.capacity = $CURRENT_CAPACITY++

Cette commande augmentera la capacité de votre instance APIM d’une unité. Bien sûr, si vous voulez diminuer la capacité, vous devrez utiliser la commande --set additionalLocations.sku.capacity = $CURRENT_CAPACITY--.

Plus de détails sur la commande az apim update peuvent être trouvés ici.

Enfin, si vous voulez avoir une mise à jour de l’état de provisionnement de votre instance APIM, vous pouvez utiliser la commande suivante :

az apim wait --name  --resource-group  --updated

Plus de détails sur la commande az apim wait peuvent être trouvés ici.

Touche finale

Vous avez maintenant toutes les pièces pour mettre à l’échelle automatiquement votre instance APIM dans la région secondaire. Vous pouvez maintenant tester votre alerte et voir si l’Azure Function est déclenchée et si la capacité de votre instance d’APIM dans une région secondaire est augmentée ou diminuée.

N'hésitez pas à me suivre sur pour ne pas rater mon prochain tutoriel !