Acheminer le trafic web selon l’URL à l’aide d’Azure CLI

En tant qu’administrateur informatique gérant le trafic web, vous souhaitez aider vos clients et utilisateurs à obtenir les informations dont ils ont besoin le plus rapidement possible. Pour optimiser leur expérience, vous pouvez acheminer différents types de trafic web vers différentes ressources de serveur. Cet article vous montre comment utiliser Azure CLI pour installer et configurer l’acheminement Application Gateway pour différents types de trafic depuis votre application. L’acheminement dirige le trafic vers différents pools de serveurs basé sur l’URL.

URL routing example

Dans cet article, vous apprendrez comment :

  • Créer un groupe de ressources pour les ressources réseau dont vous avez besoin
  • Créer les ressources réseau
  • Créer une passerelle d’application pour le trafic provenant de votre application
  • Spécifier des pools de serveurs et des règles d’acheminement pour les différents types de trafic
  • Créer un groupe identique pour chaque pool afin que ce dernier puisse effectuer une mise à l'échelle
  • Exécuter un test pour vérifier que les différents types de trafic sont dirigés vers le bon pool

Si vous préférez, vous pouvez suivre cette procédure en utilisant Azure PowerShell ou le portail Azure.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Prérequis

  • 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 avec 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. Ajoutez ensuite un sous-réseau nommé myBackendSubnet nécessaire par les serveurs principaux à l’aide de 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 la passerelle d’application avec une carte URL

Utilisez az network application-gateway create pour créer une 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 affectée à myAGSubnet et à myAGPublicIPAddress.

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 :

Fonctionnalité Description
appGatewayBackendPool Une passerelle d’application doit avoir au moins un pool d’adresses backend.
appGatewayBackendHttpSettings Spécifie que le port 80 et un 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 un port et les pools principaux image et vidéo

Ajoutez des pools principaux nommés imagesBackendPool et videoBackendPool à votre passerelle d’application à l’aide de la commande az network application-gateway address-pool create. Ajoutez le port frontal pour les pools à l’aide de 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 port8080

Ajouter un écouteur principal

Ajoutez l’écouteur principal nommé backendListener, nécessaire pour acheminer le trafic, à l’aide de la commandeaz network application-gateway http-listener create.

az network application-gateway http-listener create \
  --name backendListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port port8080 \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

Ajouter une carte de chemin d’accès URL

Les cartes de chemin d’accès URL assurent que certaines URL sont acheminées vers des pools principaux spécifiques. Créer des cartes de chemin d’accès nommés 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 myPathMap \
  --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 myPathMap \
  --paths /video/* \
  --address-pool videoBackendPool \
  --http-settings appGatewayBackendHttpSettings

Ajouter une règle de routage

La règle d’acheminement associe les cartes d’URL à l’écouteur créé. Ajoutez une règle nommée rule2 à l’aide de la commande az network application-gateway rule create.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name rule2 \
  --resource-group myResourceGroupAG \
  --http-listener backendListener \
  --rule-type PathBasedRouting \
  --url-path-map myPathMap \
  --address-pool appGatewayBackendPool \
  --priority 200

Créer des groupes de machines virtuelles identiques

Dans cet article, vous allez créer trois groupes de machines virtuelles identiques qui prennent en charge les trois pools principaux que vous avez créés. Ils sont nommés myvmss1, myvmss2 et myvmss3. Chacun contient deux instances de machines virtuelles sur lesquelles NGINX sera installé.

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 azureuser \
    --admin-password Azure123456! \
    --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 ou http://40.121.222.19:8080/video/test.htm.

az network public-ip show \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --query [ipAddress] \
  --output tsv

Test base URL in application gateway

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 :

Test images URL in application gateway

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.

Test video URL in application gateway

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

Étapes suivantes

Créer une passerelle d’application avec réacheminement par chemin d’URL