Een toepassingsgateway maken waarop meerdere websites worden gehost met Azure CLI

U kunt Azure CLI gebruiken om het hosten van meerdere websites te configureren als u een toepassingsgateway maakt. In dit artikel definieert u back-endadresgroepen met behulp van schaalsets voor virtuele machines. Vervolgens configureert u listeners en regels op basis van domeinen waarvan u eigenaar bent om er zeker van te zijn dat webverkeer bij de juiste servers in de pools binnenkomen. In dit artikel wordt ervan uitgegaan dat u eigenaar bent van meerdere domeinen en voorbeelden van www.contoso.com en www.fabrikam.com gebruikt.

In dit artikel leert u het volgende:

  • Het netwerk instellen
  • Een toepassingsgateway maken
  • Back-endlisteners maken
  • Regels voor doorsturen maken
  • Virtuele-machineschaalsets maken met de back-endpools
  • Een CNAME-record in uw domein maken

Multi-site Application Gateway

U kunt deze procedure desgewenst voltooien met behulp van Azure PowerShell.

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 de opdracht 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 en de subset myAGSubnet met az network vnet create. Vervolgens kunt u het subnet dat voor de back-endservers vereist is, toevoegen met az network vnet subnet create. Maak het openbare IP-adresmyAGPublicIPAddress 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 toepassingsgateway maken

U kunt az network application-gateway create gebruiken om de toepassingsgateway 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, die u zojuist hebt gemaakt.

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

Het kan enkele minuten duren voordat de toepassingsgateway is gemaakt. Nadat de toepassingsgateway is gemaakt, kunt u de volgende nieuwe functies ervan zien:

  • appGatewayBackendPool - Een toepassingsgateway moet minimaal één back-endadresgroep hebben.
  • appGatewayBackendHttpSettings: hiermee wordt aangegeven dat voor de communicatie poort 80 en een HTTP-protocol worden gebruikt.
  • appGatewayHttpListener: de standaard-listener die aan appGatewayBackendPool is gekoppeld.
  • appGatewayFrontendIP: hiermee wordt myAGPublicIPAddress aan appGatewayHttpListener toegewezen.
  • rule1 - De standaardrouteringsregel die aan appGatewayHttpListener is gekoppeld.

Back-endpools toevoegen

Voeg de back-endpools toe die de back-endservers moeten bevatten met 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

Listeners toevoegen

Voeg listeners toe die nodig zijn om verkeer te routeren met behulp van az network application-gateway http-listener create.

Notitie

Met Application Gateway of WAF v2-SKU kunt u ook maximaal 5 hostnamen per listener configureren en u kunt jokertekens in de hostnaam gebruiken. Zie hostnamen met jokertekens in de listener voor meer informatie. Als u meerdere hostnamen en jokertekens in een listener wilt gebruiken met behulp van Azure CLI, moet --host-names u in plaats van --host-name. Met hostnamen kunt u maximaal vijf hostnamen vermelden als door spaties gescheiden waarden. Bijvoorbeeld: --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

Routeringsregels toevoegen

Regels worden verwerkt in de volgorde waarin ze worden vermeld als het veld regelprioriteit niet wordt gebruikt. Verkeer wordt omgeleid met behulp van de eerste regel die overeenkomt, ongeacht de specificiteit. Als u bijvoorbeeld een regel hebt die van een basislistener gebruikmaakt en een regel die via dezelfde poort van een listener voor meerdere sites gebruikmaakt, moet de regel voor de listener voor meerdere sites vermeld worden vóór de regel met de basislistener, opdat de regel voor meerdere sites kan functioneren zoals het hoort.

In dit voorbeeld maakt u twee nieuwe regels en verwijdert u de standaardregel die is gemaakt toen u de toepassingsgateway hebt geïmplementeerd. U kunt de regel toevoegen met 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

Prioriteit toevoegen aan routeringsregels

Als u ervoor wilt zorgen dat specifiekere regels eerst worden verwerkt, gebruikt u het veld regelprioriteit om ervoor te zorgen dat ze een hogere prioriteit hebben. Het veld Regelprioriteit moet worden ingesteld voor alle bestaande regels voor aanvraagroutering en elke nieuwe regel die later wordt gemaakt, moet ook een regelprioriteitswaarde hebben.

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

Virtuele-machineschaalsets maken

In dit voorbeeld maakt u drie virtuele-machineschaalsets die ondersteuning bieden voor de drie back-endpools in de toepassingsgateway. De schaalsets die u maakt, hebben de namen myvmss1, myvmss2 en myvmss3. Elke schaalset bevat twee exemplaren van virtuele machines waarop u IIS installeert.

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

NGINX installeren

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

Een CNAME-record in uw domein maken

Als de toepassingsgateway met het bijbehorende IP-adres is gemaakt, kunt u het DNS-adres ophalen en dit gebruiken om een CNAME-record in uw domein te maken. Gebruik az network public-ip show om het DNS-adres van de toepassingsgateway op te halen. Kopieer de waarde fqdn van DNSSettings en gebruik deze als de waarde van de CNAME-record die u maakt.

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

Het gebruik van A-records wordt niet aanbevolen omdat het VIP kan veranderen wanneer de toepassingsgateway opnieuw wordt opgestart.

De toepassingsgateway testen

Voer uw domeinnaam in de adresbalk van de browser in. Zoals http://www.contoso.com.

Test contoso site in application gateway

Wijzig het adres in uw andere domein. U krijgt iets te zien zoals in het volgende voorbeeld:

Test fabrikam site 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 omleidingsregels op basis van een URL-pad