Tutoriel : Créer une passerelle d’application avec une redirection basée sur un chemin d’accès d’URL à l’aide d’Azure CLI
Vous pouvez utiliser Azure CLI pour configurer des règles d’acheminement par chemin d’accès URL lors de la création d’une passerelle d’application. Ce didacticiel montre comment créer des pools principaux à l’aide de groupes de machines virtuelles identiques. Vous créez ensuite des règles de routage d’URL garantissant que le trafic web est redirigé vers le pool principal approprié.
Dans ce tutoriel, vous allez apprendre à :
- Configurer le réseau
- Créer une passerelle Application Gateway
- Créer des écouteurs et des règles de routage
- Créer des groupes de machines virtuelles identiques pour les pools principaux
L’exemple suivant montre le trafic du site en provenance des ports 8080 et 8081, et sa redirection vers les même pools principaux :
Si vous préférez, vous pouvez effectuer ce didacticiel en utilisant Azure PowerShell.
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Prérequis
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Cet tutoriel nécessite la version 2.0.4 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.
Créer un groupe de ressources
Un groupe de ressources est un conteneur logique dans lequel les ressources Azure sont déployées et gérées. Créez un groupe de ressources à l’aide de la commande az group create.
L’exemple suivant crée un groupe de ressources nommé myResourceGroupAG à l’emplacement eastus.
az group create --name myResourceGroupAG --location eastus
Créer des ressources réseau
Créez le réseau virtuel nommé myVNet et le sous-réseau nommé myAGSubnet à l’aide de la commande az network vnet create. Vous pouvez ensuite ajouter le sous-réseau nommé myBackendSubnet nécessaire aux serveurs backend à l’aide de la commande az network vnet subnet create. Créez l’adresse IP publique nommée myAGPublicIPAddress à l’aide de la commande az network public-ip create.
az network vnet create \
--name myVNet \
--resource-group myResourceGroupAG \
--location eastus \
--address-prefix 10.0.0.0/16 \
--subnet-name myAGSubnet \
--subnet-prefix 10.0.1.0/24
az network vnet subnet create \
--name myBackendSubnet \
--resource-group myResourceGroupAG \
--vnet-name myVNet \
--address-prefix 10.0.2.0/24
az network public-ip create \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--allocation-method Static \
--sku Standard
Créer une passerelle Application Gateway
Utilisez la commande az network application-gateway create pour créer la passerelle d’application nommée myAppGateway. Quand vous créez une passerelle d’application avec Azure CLI, vous spécifiez des informations de configuration, telles que la capacité, la référence SKU et les paramètres HTTP. La passerelle d’application est assignée aux myAGSubnet et myPublicIPAddress que vous avez créés.
az network application-gateway create \
--name myAppGateway \
--location eastus \
--resource-group myResourceGroupAG \
--vnet-name myVNet \
--subnet myAGsubnet \
--capacity 2 \
--sku Standard_v2 \
--http-settings-cookie-based-affinity Disabled \
--frontend-port 80 \
--http-settings-port 80 \
--http-settings-protocol Http \
--public-ip-address myAGPublicIPAddress \
--priority 100
La création de la passerelle d’application peut prendre plusieurs minutes. Une fois la passerelle d’application créée, vous pouvez voir ces nouvelles fonctionnalités :
- appGatewayBackendPool : une passerelle d’application doit avoir au moins un pool d’adresses backend.
- appGatewayBackendHttpSettings : spécifie que le port 80 et le protocole HTTP sont utilisés pour la communication.
- appGatewayHttpListener : écouteur par défaut associé à appGatewayBackendPool.
- appGatewayFrontendIP - assigne myAGPublicIPAddress à appGatewayHttpListener.
- rule1 : règle de routage par défaut associée à appGatewayHttpListener.
Ajouter des ports et des pools principaux
Vous pouvez ajouter des pools d’adresses principaux nommés imagesBackendPool et videoBackendPool à votre passerelle d’application en utilisant l’applet de commande az network application-gateway address-pool create. Pour ajouter les ports frontaux des pools, utilisez la commande az network application-gateway frontend-port create.
az network application-gateway address-pool create \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--name imagesBackendPool
az network application-gateway address-pool create \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--name videoBackendPool
az network application-gateway frontend-port create \
--port 8080 \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--name bport
az network application-gateway frontend-port create \
--port 8081 \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--name rport
Ajouter des écouteurs et des règles
Ajouter des écouteurs
Ajoutez les écouteurs principaux nommés backendListener et redirectedListener, nécessaires pour router le trafic en utilisant l’applet de commande az network application-gateway http-listener create.
az network application-gateway http-listener create \
--name backendListener \
--frontend-ip appGatewayFrontendIP \
--frontend-port bport \
--resource-group myResourceGroupAG \
--gateway-name myAppGateway
az network application-gateway http-listener create \
--name redirectedListener \
--frontend-ip appGatewayFrontendIP \
--frontend-port rport \
--resource-group myResourceGroupAG \
--gateway-name myAppGateway
Ajouter le mappage de chemin d’accès d’URL par défaut
Les cartes de chemin d’accès URL spécifient que certaines URL sont acheminées vers des pools backend spécifiques. Vous pouvez créer des cartes de chemins d’accès URL nommées imagePathRule et videoPathRule à l’aide des commandes az network application-gateway url-path-map create et az network application-gateway url-path-map rule create.
az network application-gateway url-path-map create \
--gateway-name myAppGateway \
--name urlpathmap \
--paths /images/* \
--resource-group myResourceGroupAG \
--address-pool imagesBackendPool \
--default-address-pool appGatewayBackendPool \
--default-http-settings appGatewayBackendHttpSettings \
--http-settings appGatewayBackendHttpSettings \
--rule-name imagePathRule
az network application-gateway url-path-map rule create \
--gateway-name myAppGateway \
--name videoPathRule \
--resource-group myResourceGroupAG \
--path-map-name urlpathmap \
--paths /video/* \
--address-pool videoBackendPool
Ajouter une configuration de redirection
Vous pouvez configurer la redirection de l’écouteur en utilisant l’applet de commande az network application-gateway redirect-config create.
az network application-gateway redirect-config create \
--gateway-name myAppGateway \
--name redirectConfig \
--resource-group myResourceGroupAG \
--type Found \
--include-path true \
--include-query-string true \
--target-listener backendListener
Ajouter le mappage de chemin d’accès d’URL de redirection
az network application-gateway url-path-map create \
--gateway-name myAppGateway \
--name redirectpathmap \
--paths /images/* \
--resource-group myResourceGroupAG \
--redirect-config redirectConfig \
--rule-name redirectPathRule
Ajouter des règles de routage
Les règles de routage associent les mappages de chemin d’accès d’URL aux écouteurs que vous avez créés. Vous pouvez ajouter les règles nommées defaultRule et redirectedRule en utilisant l’applet de commande az network application-gateway rule create.
az network application-gateway rule create \
--gateway-name myAppGateway \
--name defaultRule \
--resource-group myResourceGroupAG \
--http-listener backendListener \
--rule-type PathBasedRouting \
--url-path-map urlpathmap \
--address-pool appGatewayBackendPool \
--priority 100
az network application-gateway rule create \
--gateway-name myAppGateway \
--name redirectedRule \
--resource-group myResourceGroupAG \
--http-listener redirectedListener \
--rule-type PathBasedRouting \
--url-path-map redirectpathmap \
--address-pool appGatewayBackendPool \
--priority 100
Créer des groupes de machines virtuelles identiques
Cet exemple crée trois groupes de machines virtuelles identiques prenant en charge les trois pools principaux qui ont été créés. Ils sont nommés myvmss1, myvmss2 et myvmss3. Chacun contient deux instances de machines virtuelles sur lesquelles NGINX sera installé.
Remplacez <azure-user> et <password> par le nom d’utilisateur et le mot de passe de votre choix.
for i in `seq 1 3`; do
if [ $i -eq 1 ]
then
poolName="appGatewayBackendPool"
fi
if [ $i -eq 2 ]
then
poolName="imagesBackendPool"
fi
if [ $i -eq 3 ]
then
poolName="videoBackendPool"
fi
az vmss create \
--name myvmss$i \
--resource-group myResourceGroupAG \
--image Ubuntu2204 \
--admin-username <azure-user> \
--admin-password <password> \
--instance-count 2 \
--vnet-name myVNet \
--subnet myBackendSubnet \
--vm-sku Standard_DS2 \
--upgrade-policy-mode Automatic \
--app-gateway myAppGateway \
--backend-pool-name $poolName
done
Installer NGINX
for i in `seq 1 3`; do
az vmss extension set \
--publisher Microsoft.Azure.Extensions \
--version 2.0 \
--name CustomScript \
--resource-group myResourceGroupAG \
--vmss-name myvmss$i \
--settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'
done
Tester la passerelle d’application
Pour obtenir l’adresse IP publique de la passerelle d’application, utilisez la commande az network public-ip show. Copiez l’adresse IP publique, puis collez-la dans la barre d’adresses de votre navigateur. Par exemple, http://40.121.222.19
, http://40.121.222.19:8080/images/test.htm
, http://40.121.222.19:8080/video/test.htm
ou http://40.121.222.19:8081/images/test.htm
.
az network public-ip show \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--query [ipAddress] \
--output tsv
Modifiez l’URL http://<ip-address>:8080/images/test.htm, en remplaçant votre adresse IP par <ip-address>. Vous devez ensuite voir quelque chose ressemblant à ceci :
Modifiez l’URL http://<ip-address>:8080/video/test.htm, en remplaçant votre adresse IP par <ip-address>. Vous devez ensuite voir quelque chose ressemblant à ceci :
À présent, changez l’URL en http://<ip-address>:8081/images/test.htm, en remplaçant <ip-address> par votre adresse IP, de façon à voir le trafic redirigé vers le pool backend d’images à l’adresse http://<ip-address>:8080/images.
Nettoyer les ressources
Lorsque vous n’en avez plus besoin, supprimez le groupe de ressources, la passerelle d’application et toutes les ressources associées.
az group delete --name myResourceGroupAG