Share via


Självstudie: Skapa en programgateway med webbadressbaserad omdirigering i Azure CLI

Du kan använda Azure CLI till att konfigurera webbadressbaserade routningsregler när du skapar en programgateway. I den här självstudien skapar du serverdelspooler med VM-skalningsuppsättningar. Sedan skapar du routningsregler som ser till att webbtrafiken dirigeras till rätt serverdelspool.

I den här självstudien lär du dig att:

  • Konfigurera nätverket
  • Skapa en programgateway
  • Lägga till lyssnare och routningsregler
  • Skapa VM-skalningsuppsättningar för serverdelspooler

I följande exempel visas hur trafiken kommer från portarna 8080 och 8081 och dirigeras till samma serverdelspooler:

URL routing example

Om du vill kan du utföra den här självstudien med Azure PowerShell.

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Förutsättningar

  • Den här självstudien kräver version 2.0.4 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.

Skapa en resursgrupp

En resursgrupp är en logisk container där Azure-resurser distribueras och hanteras. Skapa en resursgrupp med az group create.

I följande exempel skapas en resursgrupp med namnet myResourceGroupAG på platsen eastus.

az group create --name myResourceGroupAG --location eastus

Skapa nätverksresurser

Skapa ett virtuellt nätverk med namnet myVNet och ett undernät med namnet myAGSubnet med az network vnet create. Du kan sedan lägga till undernätet med namnet myBackendSubnet som servrarna i serverdelen behöver med az network vnet subnet create. Skapa den offentliga IP-adressen med namnet myAGPublicIPAddress med 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

Skapa en programgateway

Använd az network application-gateway create till att skapa en programgateway med namnet myAppGateway. När du skapar en programgateway med hjälp av Azure CLI anger du konfigurationsinformation, till exempel kapacitet, sku och HTTP-inställningar. Programgatewayen tilldelas till myAGSubnet och myPublicIPAddress som du skapade tidigare.

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

Det kan ta flera minuter att skapa programgatewayen. När programgatewayen har skapats ser du de här nya funktionerna:

  • appGatewayBackendPool – en programgateway måste ha minst en serverdelsadresspool.
  • appGatewayBackendHttpSettings – anger att port 80 och ett HTTP-protokoll används för kommunikation.
  • appGatewayHttpListener – standardlyssnaren som är associerad med appGatewayBackendPool.
  • appGatewayFrontendIP – tilldelar myAGPublicIPAddress till appGatewayHttpListener.
  • regel 1 – standardroutningsregel som är associerad med appGatewayHttpListener.

Lägg till serverdelspooler och tillhörande portar

Du kan lägga till adresspoolerna imagesBackendPool och videoBackendPool för programgatewayens serverdel med az network application-gateway address-pool create. Du lägger till klientdelsportar för poolerna med 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

Lägga till lyssnare och regler

Lägga till lyssnare

Lägg till serverdelslyssnarna backendListener och redirectedListener som ska dirigera trafiken med 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

Lägga till standardmappning för webbadressen

Url-sökvägskartor kontrollerar att specifika URL:er dirigeras till specifika serverdelspooler. Du kan skapa webbadressmappningarna imagePathRule och videoPathRule med az network application-gateway url-path-map create och 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

Konfigurera omdirigering

Du kan konfigurera omdirigering för lyssnaren med 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

Lägga till omdirigeringsmappning för adresser

az network application-gateway url-path-map create \
  --gateway-name myAppGateway \
  --name redirectpathmap \
  --paths /images/* \
  --resource-group myResourceGroupAG \
  --redirect-config redirectConfig \
  --rule-name redirectPathRule

Lägga till routningsregler

Routningsreglerna associerar adressmappningarna med de lyssnare du har skapat. Du kan lägga till regler med namnen defaultRule och redirectedRule med 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

Skapa VM-skalningsuppsättningar

I det här exemplet skapar du tre VM-skalningsuppsättningar för de tre serverdelspooler du har skapat. Skalningsuppsättningarna du skapar har namnen myvmss1, myvmss2 och myvmss3. Varje skalningsuppsättning innehåller två virtuella datorinstanser där du installerar NGINX.

Ersätt <azure-användare> och <lösenord> med valfritt användarnamn och lösenord.

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

Installera 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

Testa programgatewayen

Hämta den offentliga IP-adressen för programgatewayen med az network public-ip show. Kopiera den offentliga IP-adressen och klistra in den i webbläsarens adressfält. Till exempel http://40.121.222.19, http://40.121.222.19:8080/images/test.htm, http://40.121.222.19:8080/video/test.htm eller http://40.121.222.19:8081/images/test.htm.

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

Test base URL in application gateway

Ändra URL:en till http://< ip-address>:8080/images/test.html, ersätt din IP-adress för <ip-adress> och du bör se något som liknar följande exempel:

Test images URL in application gateway

Ändra URL:en till http://< ip-address>:8080/video/test.html, ersätt IP-adressen för <ip-adress> och du bör se något som liknar följande exempel:

Test video URL in application gateway

Ändra nu URL:en till http://< ip-address>:8081/images/test.htm, ersätta ip-adressen för <ip-adress>, och du bör se trafik omdirigerad tillbaka till serverdelspoolen för bilder på http://< ip-address>:8080/images.

Rensa resurser

När du inte behöver dem längre tar du bort resursgruppen, programgatewayen och alla relaterade resurser.

az group delete --name myResourceGroupAG

Nästa steg