Webverkeer routeren op basis van de URL met behulp van de Azure CLI

Als IT-beheerder die webverkeer beheert, wilt u uw klanten en gebruikers helpen de benodigde informatie zo snel mogelijk te krijgen. Een manier waarop u hun ervaring kunt optimaliseren is door verschillende soorten webverkeer naar verschillende serverbronnen te routeren. In dit artikel leest u hoe u de Azure CLI gebruikt om Application Gateway-routering in te stellen en te configureren voor verschillende soorten verkeer vanuit uw toepassing. De routering stuurt het verkeer vervolgens door naar verschillende servergroepen op basis van de URL.

URL routing example

In dit artikel leert u het volgende:

  • Een resourcegroep maken voor de netwerkresources die u nodig hebt
  • De netwerkresources maken
  • Een toepassingsgateway maken voor het verkeer dat afkomstig is van uw toepassing
  • Servergroepen en regels voor doorsturen voor de verschillende soorten verkeer opgeven
  • Een schaalset maken voor elke groep, zodat de toepassingen automatisch kunnen worden geschaald
  • Een test uitvoeren zodat u kunt controleren of de verschillende soorten verkeer naar de juiste groep gaan

Als u wilt, kunt u deze procedure voltooien met behulp van Azure PowerShell of Azure Portal.

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

  • Voor deze zelfstudie is versie 2.0.4 of hoger van de Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.

Een brongroep maken

Een resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd. Maak een resourcegroep met behulp van az group create.

In het volgende voorbeeld wordt de resourcegroep myResourceGroupAG gemaakt op de locatie eastus.

az group create --name myResourceGroupAG --location eastus

Netwerkbronnen maken

Maak het virtuele netwerk myVNet en het subnet myAGSubnet met az network vnet create. Voeg vervolgens een subnet met de naam myBackendSubnet toe dat nodig is voor de back-endservers met behulp van az network vnet subnet create. Maak het openbare IP-adres myAGPublicIPAddress met 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

De app-gateway maken met een URL-toewijzing

Gebruik az network application-gateway create om een toepassingsgateway met de naam myAppGateway te maken. Als u met de Azure CLI een toepassingsgateway maakt, geeft u configuratiegegevens op, zoals capaciteit, SKU en HTTP-instellingen. De toepassingsgateway wordt toegewezen aan myAGSubnet en 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

Het kan enkele minuten duren om de toepassingsgateway te maken. Nadat de toepassingsgateway is gemaakt, ziet u de volgende nieuwe functies:

Functie Omschrijving
appGatewayBackendPool Een toepassingsgateway moet ten minste één back-endadresgroep hebben.
appGatewayBackendHttpSettings Hiermee geeft u op dat poort 80 en een HTTP-protocol worden gebruikt voor communicatie.
appGatewayHttpListener De standaard-listener die aan appGatewayBackendPool is gekoppeld
appGatewayFrontendIP Hiermee wordt myAGPublicIPAddress aan appGatewayHttpListener toegewezen.
rule1 De standaardregel voor doorsturen die aan appGatewayHttpListener is gekoppeld.

Back-endpools en een poort voor afbeeldingen en video toevoegen

Voeg de back-endpools imagesBackendPool en videoBackendPool toe aan de toepassingsgateway met az network application-gateway address-pool create. U voegt de front-endpoort toe met 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

Een back-endlistener toevoegen

Voeg de back-endlistener met de naam backendListener die nodig is om verkeer te routeren toe met behulp van az 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

Toewijzing van een URL-pad toevoegen

URL-padtoewijzingen zorgen ervoor dat specifieke URL's naar specifieke back-endpools worden omgeleid. Maak URL-padtoewijzingen met de naam imagePathRule en videoPathRule met behulp van az network application-gateway url-path-map create en 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

Een routeringsregel toevoegen

De routeringsregel koppelt de URL-toewijzingen aan de listener die u hebt gemaakt. Voeg een regel met de naam rule2 toe met behulp van 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

Virtuele-machineschaalsets maken

In dit artikel maakt u drie virtuele-machineschaalsets die ondersteuning bieden voor de drie back-endpools die u hebt gemaakt. U maakt schaalsets met de namen myvmss1, myvmss2 en myvmss3. Elke schaalset bevat twee exemplaren van virtuele machines waarop u NGINX installeert.

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

NGINX installeren

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

De toepassingsgateway testen

Gebruik az network public-ip show om het openbare IP-adres van de toepassingsgateway op te halen. Kopieer het openbare IP-adres en plak het in de adresbalk van de browser. Bijvoorbeeld http://40.121.222.19, http://40.121.222.19:8080/images/test.htm of 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

Wijzig de URL in http://<IP-adres>:8080/images/test.html, waarbij u <ip-adres> vervangt door uw eigen IP-adres. U krijgt nu iets te zien zoals in het volgende voorbeeld:

Test images URL in application gateway

Wijzig de URL in http://< ip-address>:8080/video/test.html, vervang uw IP-adres voor <ip-adres> en u ziet iets zoals in het volgende voorbeeld.

Test video URL in application gateway

Resources opschonen

U kunt de resourcegroep, de toepassingsgateway en alle gerelateerde resources verwijderen als u deze niet meer nodig hebt.

az group delete --name myResourceGroupAG

Volgende stappen

Een toepassingsgateway maken met een omleiding op basis van een URL-pad