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
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
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- 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.
Wijzig het adres in uw andere domein. U krijgt iets te zien zoals in het volgende voorbeeld:
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