Vytvoření aplikační brány, která hostuje více webů pomocí Azure CLI

Při vytvoření aplikační brány můžete Azure CLI použít ke konfiguraci hostování více webů. V tomto článku definujete fondy back-endových adres pomocí škálovacích sad virtuálních počítačů. Pak na základě domén, které vám patří, nakonfigurujete naslouchací procesy a pravidla, aby se webový provoz přesměroval na příslušné servery ve fondech. Tento článek předpokládá, že vlastníte více domén a používáte příklady www.contoso.com a www.fabrikam.com.

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

  • Nastavit síť
  • Vytvoření brány Application Gateway
  • Vytvořit back-endové naslouchací procesy
  • Vytvoření pravidel směrování
  • Vytvoření škálovacích sad virtuálních počítačů s back-endovými fondy
  • Vytvořit v doméně záznam CNAME

Multi-site Application Gateway

Pokud chcete, můžete tento postup dokončit pomocí Azure PowerShellu.

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, ve kterém se nasazují a spravují prostředky Azure. Vytvořte skupinu prostředků 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íť a podsíť s názvem myAGSubnet. Potom můžete přidat podsíť, kterou potřebují back-endové servery. Použijte k tomu příkaz az network vnet subnet create. Pomocí příkazu az network public-ip create vytvořte veřejnou IP adresu s názvem 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í služby Application Gateway

K vytvoření aplikační brány můžete použít příkaz az network application-gateway create. 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řazena k již vytvořené podsíti myAGSubnet a adrese 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 10

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

  • appGatewayBackendPool – aplikační brána musí mít aspoň jeden back-endový fond adres.
  • appGatewayBackendHttpSettings – určuje, že se ke komunikaci používá port 80 a protokol HTTP.
  • appGatewayHttpListener – výchozí naslouchací proces přidružený k appGatewayBackendPool.
  • appGatewayFrontendIP – přiřadí adresu myAGPublicIPAddress 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ů

Přidejte back-endové fondy potřebné k zahrnutí back-endových serverů pomocí příkazu az network application-gateway address-pool create

az network application-gateway address-pool create \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name contosoPool

az network application-gateway address-pool create \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name fabrikamPool

Přidání naslouchacích procesů

Přidejte naslouchací procesy potřebné ke směrování provozu pomocí příkazu az network application-gateway http-listener create.

Poznámka:

S skladovou kartou Application Gateway nebo WAF v2 můžete také nakonfigurovat až 5 názvů hostitelů na naslouchací proces a v názvu hostitele můžete použít zástupné znaky. Další informace najdete v názvech hostitelů se zástupnými cardy v naslouchacím procesu . Pokud chcete použít více názvů hostitelů a zástupných znaků v naslouchacím procesu pomocí Azure CLI, musíte místo toho --host-namepoužít --host-names . Pomocí názvů hostitelů můžete jako hodnoty oddělené mezerami zmínit až pět názvů hostitelů. Například --host-names "*.contoso.com *.fabrikam.com"

az network application-gateway http-listener create \
  --name contosoListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port appGatewayFrontendPort \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway \
  --host-name www.contoso.com

az network application-gateway http-listener create \
  --name fabrikamListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port appGatewayFrontendPort \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway \
  --host-name www.fabrikam.com

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

Pravidla se zpracovávají v pořadí, v jakém jsou uvedená, pokud se nepoužívá pole priority pravidla. Provoz se směruje pomocí prvního pravidla, které odpovídá bez ohledu na specificitu. Pokud máte například na stejném portu pravidlo založené na základním naslouchacím procesu a pravidlo založené na naslouchacím procesu pro více webů, musí být pravidlo s naslouchacím procesem pro více webů uvedeno před pravidlem se základním naslouchacím procesem, aby fungovalo podle očekávání.

V tomto příkladu vytvoříte dvě nová pravidla a odstraníte výchozí pravidlo vytvořené při nasazení aplikační brány. Pravidlo přidáte příkazem az network application-gateway rule create.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name contosoRule \
  --resource-group myResourceGroupAG \
  --http-listener contosoListener \
  --rule-type Basic \
  --address-pool contosoPool \
  --priority 200

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name fabrikamRule \
  --resource-group myResourceGroupAG \
  --http-listener fabrikamListener \
  --rule-type Basic \
  --address-pool fabrikamPool \
  --priority 100

az network application-gateway rule delete \
  --gateway-name myAppGateway \
  --name rule1 \
  --resource-group myResourceGroupAG

Přidání priority do pravidel směrování

Pokud chcete zajistit, aby byla nejprve zpracována konkrétnější pravidla, použijte pole priority pravidla, abyste zajistili, že mají vyšší prioritu. Pole priority pravidla musí být nastaveno pro všechna existující pravidla směrování požadavků a všechna nová pravidla vytvořená později musí mít také hodnotu priority pravidla.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name contosoRule \
  --resource-group myResourceGroupAG \
  --http-listener contosoListener \
  --rule-type Basic \
  --priority 200 \
  --address-pool contosoPool

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name fabrikamRule \
  --resource-group myResourceGroupAG \
  --http-listener fabrikamListener \
  --rule-type Basic \
  --priority 100 \
  --address-pool fabrikamPool

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

V tomto příkladu vytvoříte tři škálovací sady virtuálních počítačů, které podporují tři back-endové fondy ve službě Application Gateway. Škálovací sady, které vytvoříte, se jmenují myvmss1, myvmss2 a myvmss3. Každá škálovací sada obsahuje dvě instance virtuálních počítačů, na které nainstalujete službu IIS.

for i in `seq 1 2`; do

  if [ $i -eq 1 ]
  then
    poolName="contosoPool"
  fi

  if [ $i -eq 2 ]
  then
    poolName="fabrikamPool"
  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_D1_v2 \
    --upgrade-policy-mode Automatic \
    --app-gateway myAppGateway \
    --backend-pool-name $poolName
done

Instalace serveru NGINX

for i in `seq 1 2`; 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

Vytvořit v doméně záznam CNAME

Jakmile vytvoříte aplikační bránu s veřejnou IP adresou, získáte adresu DNS, kterou můžete použít k vytvoření záznamu CNAME ve své doméně. K získání adresy DNS aplikační brány použijte příkaz az network public-ip show. Zkopírujte hodnotu fqdn z objektu DNESettings a použijte ji jako hodnotu vytvořeného záznamu CNAME.

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

Použití záznamů A se nedoporučuje, protože virtuální IP adresa se může při restartování služby Application Gateway změnit.

Otestování aplikační brány

Do adresního řádku prohlížeče zadejte název domény. Například http://www.contoso.com.

Test contoso site in application gateway

Změňte adresu na jinou ze svých domén. Měli byste vidět něco podobného jako v následujícím příkladu:

Test fabrikam site in application gateway

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

Až nebudete skupinu prostředků, aplikační bránu a další související prostředky potřebovat, odeberte je.

az group delete --name myResourceGroupAG

Další kroky

Vytvoření aplikační brány s pravidly směrování založenými na cestě URL