Směrování webového provozu na základě adresy URL pomocí Azure CLI

Jako správce IT, který spravuje webový provoz, chcete zákazníkům a uživatelům pomoct co nejrychleji získat potřebné informace. Jedním ze způsobů, jak můžete jejich prostředí optimalizovat, je směrovat různé druhy webového provozu do různých prostředků serveru. V tomto článku se dozvíte, jak pomocí Azure CLI nastavit a nakonfigurovat směrování služby Application Gateway pro různé typy provozu z vaší aplikace. Toto směrování pak bude na základě adresy URL směrovat provoz do různých fondů serverů.

URL routing example

V tomto článku získáte informace o těchto tématech:

  • Vytvoření skupiny prostředků pro síťové prostředky, které potřebujete
  • Vytvoření síťových prostředků
  • Vytvoření aplikační brány pro provoz přicházející z vaší aplikace
  • Určení fondů serverů a pravidel směrování pro různé typy provozu
  • Vytvoření škálovacích sad pro jednotlivé fondy, aby se mohly automaticky škálovat
  • Spuštění testu, abyste mohli ověřit směrování různých typů provozu do správných fondů

Pokud chcete, můžete tento postup provést pomocí Azure PowerShellu nebo webu Azure Portal.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Předpoklady

  • Tento kurz vyžaduje verzi 2.0.4 nebo novější azure CLI. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.

Vytvoření skupiny zdrojů

Skupina prostředků je logický kontejner, který se používá k nasazení a správě prostředků Azure. Skupinu prostředků vytvoříte pomocí příkazu az group create.

V následujícím příkladu vytvoříte skupinu prostředků s názvem myResourceGroupAG v umístění eastus.

az group create --name myResourceGroupAG --location eastus

Vytvoření síťových prostředků

Pomocí příkazu az network vnet create vytvořte virtuální síť myVNet a podsíť myAGSubnet. Potom přidejte podsíť s názvem myBackendSubnet , kterou potřebují back-endové servery pomocí az network vnet subnet create. Pomocí příkazu az network public-ip create vytvořte veřejnou IP adresu myAGPublicIPAddress.

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

Vytvoření aplikační brány s mapou adres URL

Pomocí příkazu az network application-gateway create vytvořte aplikační bránu myAppGateway. Při vytváření aplikační brány pomocí Azure CLI zadáte konfigurační údaje, jako je kapacita, skladová položka nebo nastavení HTTP. Aplikační brána je přiřazená k podsítě myAGSubnet a 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

Vytvoření aplikační brány může trvat několik minut. Po vytvoření aplikační brány se zobrazí tyto nové funkce:

Funkce Popis
appGatewayBackendPool Aplikační brána musí mít alespoň jeden back-endový fond adres.
appGatewayBackendHttpSettings Určuje, že ke komunikaci se používá port 80 a protokol HTTP.
appGatewayHttpListener Výchozí naslouchací proces přidružený k fondu appGatewayBackendPool.
appGatewayFrontendIP Přiřadí adresu myAGPublicIPAddress k naslouchacímu procesu appGatewayHttpListener.
rule1 Výchozí pravidlo směrování přidružené k naslouchacímu procesu appGatewayHttpListener.

Přidání back-endových fondů a portu pro obrázky a videa

Pomocí příkazu az network application-gateway address-pool create přidejte do aplikační brány back-endové fondy imagesBackendPool a videoBackendPool. Pomocí příkazu az network application-gateway frontend-port create přidejte pro fondy front-endový port.

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

Přidání back-endového naslouchacího procesu

Pomocí příkazu az network application-gateway http-listener create přidejte back-endový naslouchací proces backendListener, který je potřeba ke směrování provozu.

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

Přidání mapy cest adres URL

Mapy cest adres URL zajišťují přesměrování konkrétních adres URL na konkrétní back-endové fondy. Pomocí příkazů az network application-gateway url-path-map create a az network application-gateway url-path-map rule create vytvořte mapy cest adres URL imagePathRule a videoPathRule.

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

Přidání pravidla směrování

Pravidlo směrování přidruží mapy adres URL k dříve vytvořenému naslouchacímu procesu. Pomocí příkazu az network application-gateway rule create přidejte pravidlo rule2.

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

Vytvoření škálovacích sad virtuálních počítačů

V tomto článku vytvoříte tři škálovací sady virtuálních počítačů, které podporují tři back-endové fondy, které jste vytvořili. Vytvořené škálovací sady se jmenují myvmss1, myvmss2 a myvmss3. Každá škálovací sada obsahuje dvě instance virtuálních počítačů, na které nainstalujete server NGINX.

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

Instalace serveru 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

Otestování aplikační brány

K získání veřejné IP adresy aplikační brány použijte příkaz az network public-ip show. Zkopírujte veřejnou IP adresu a pak ji vložte do adresního řádku svého prohlížeče. Příklad: http://40.121.222.19, http://40.121.222.19:8080/images/test.htm nebo 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

Změňte adresu URL na http://< ip-address>:8080/images/test.html, nahraďte IP adresu IP> adresou <a měli byste vidět něco jako v následujícím příkladu:

Test images URL in application gateway

Změňte adresu URL na http://< ip-address>:8080/video/test.html, nahraďte IP adresu IP> adresou <a měli byste vidět něco jako v následujícím příkladu.

Test video URL in application gateway

Vyčištění prostředků

Pokud už je nepotřebujete, odeberte skupinu prostředků, aplikační bránu a všechny související prostředky.

az group delete --name myResourceGroupAG

Další kroky

Vytvoření aplikační brány se směrováním založeným na cestě URL