Freigeben über


Erstellen eines Anwendungsgateways als Host für mehrere Websites mit der Azure-Befehlszeilenschnittstelle

Sie können mit der Azure-Befehlszeilenschnittstelle ein Hosting mehrerer Websites konfigurieren, wenn Sie ein Anwendungsgateway erstellen. In diesem Artikel definieren Sie Back-End-Adresspools mithilfe von VM-Skalierungsgruppen. Anschließend konfigurieren Sie Listener und Regeln basierend auf Domänen in Ihrem Besitz, um sicherzustellen, dass Webdatenverkehr von geeigneten Servern in den Pools empfangen wird. In diesem Artikel wird vorausgesetzt, dass Sie mehrere Domänen besitzen und die Beispiele zu www.contoso.com und www.fabrikam.com verwenden.

In diesem Artikel werden folgende Vorgehensweisen behandelt:

  • Einrichten des Netzwerks
  • Erstellen eines Anwendungsgateways
  • Erstellen von Back-End-Listenern
  • Erstellen von Verteilerregeln
  • Erstellen von VM-Skalierungsgruppen mit den Back-End-Pools
  • Erstellen eines CNAME-Eintrags in Ihrer Domäne

Multi-site Application Gateway

Sie können für dieses Verfahren auch Azure PowerShell verwenden.

Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.

Voraussetzungen

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

  • Für dieses Tutorial ist mindestens Version 2.0.4 der Azure CLI erforderlich. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.

Erstellen einer Ressourcengruppe

Eine Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden. Erstellen Sie mit az group create eine Ressourcengruppe.

Im folgenden Beispiel wird eine Ressourcengruppe mit dem Namen myResourceGroupAG am Standort eastus erstellt.

az group create --name myResourceGroupAG --location eastus

Erstellen von Netzwerkressourcen

Erstellen Sie mit az network vnet create ein virtuelles Netzwerk und ein Subnetz namens myAGSubnet. Dann können Sie mit az network vnet subnet create das Subnetz hinzufügen, das von den Back-End-Servern benötigt wird. Erstellen Sie mit az network public-ip create eine öffentliche IP-Adresse namens 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

Erstellen des Anwendungsgateways

Sie können az network application-gateway create verwenden, um das Anwendungsgateway zu erstellen. Wenn Sie über die Azure-Befehlszeilenschnittstelle ein Anwendungsgateway erstellen, geben Sie Konfigurationsinformationen wie Kapazität, SKU und HTTP-Einstellungen an. Das Anwendungsgateway wird dem Subnetz myAGSubnet und der IP-Adresse myAGPublicIPAddress zugewiesen, das bzw. die Sie zuvor erstellt haben.

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

Es kann einige Minuten dauern, bis das Anwendungsgateway erstellt wird. Nachdem das Anwendungsgateway erstellt wurde, sehen Sie diese neuen Features:

  • appGatewayBackendPool: Ein Anwendungsgateway muss über mindestens einen Back-End-Adresspool verfügen.
  • appGatewayBackendHttpSettings: Gibt an, dass zur Kommunikation Port 80 und ein HTTP-Protokoll verwendet werden.
  • appGatewayHttpListener: Der Standardlistener, der appGatewayBackendPool zugeordnet ist.
  • appGatewayFrontendIP: Hiermit wird myAGPublicIPAddress zu appGatewayHttpListener zugewiesen.
  • rule1:Die Standardroutingregel, die appGatewayHttpListener zugeordnet ist.

Hinzufügen der Back-End-Pools

Fügen Sie mit az network application-gateway address-pool create die Back-End-Pools hinzu, die für die Back-End-Server benötigt werden.

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

Hinzufügen der Listener

Fügen Sie mit az network application-gateway http-listener create die Listener hinzu, die zum Weiterleiten von Datenverkehr erforderlich sind.

Hinweis

Mit der SKU für Application Gateway oder WAF v2 können Sie auch bis zu fünf Hostnamen pro Listener konfigurieren und Platzhalterzeichen im Hostnamen verwenden. Weitere Informationen finden Sie unter Hostnamen mit Platzhalterzeichen im Listener. Um in der Azure CLI mehrere Hostnamen und Platzhalterzeichen in einem Listener zu verwenden, müssen Sie --host-names statt --host-name verwenden. Sie können bis zu fünf Hostnamen als durch Leerzeichen getrennte Werte angeben. Beispiel: --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

Hinzufügen von Routingregeln

Regeln werden in der aufgelisteten Reihenfolge verarbeitet, wenn das Feld für die Regelpriorität nicht verwendet wird. Der Datenverkehr wird unter Verwendung der ersten übereinstimmenden Regel weitergeleitet, unabhängig von spezifischen Eigenschaften. Wenn Sie beispielsweise eine Regel mit einem einfachen Listener und eine Regel mit einem Listener für mehrere Standorte auf demselben Port aktiviert haben, muss die Regel mit dem Listener für mehrere Standorte vor der Regel mit dem einfachen Listener aufgeführt sein, damit die Regel für mehrere Standorte wie erwartet funktioniert.

In diesem Beispiel erstellen Sie zwei neue Regeln und löschen die Standardregel, die beim Bereitstellen des Anwendungsgateways erstellt wurde. Sie können die Regel mit az network application-gateway rule create hinzufügen.

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

Hinzufügen von Priorität zu Routingregeln

Um sicherzustellen, dass spezifischere Regeln zuerst verarbeitet werden, verwenden Sie das Regelprioritätsfeld, um sicherzustellen, dass sie eine höhere Priorität haben. Das Regelprioritätsfeld muss für alle vorhandenen Anforderungsroutingregeln festgelegt werden. Jede neue Regel, die später erstellt wird, muss auch einen Regelprioritätswert haben.

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

Erstellen von VM-Skalierungsgruppen

In diesem Beispiel erstellen Sie drei VM-Skalierungsgruppen, die die drei Back-End-Pools im Anwendungsgateway unterstützen. Die erstellten Skalierungsgruppen werden myvmss1, myvmss2 und myvmss3 genannt. Jede Skalierungsgruppe enthält zwei VM-Instanzen, auf denen Sie IIS installieren.

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

Installieren von 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

Erstellen eines CNAME-Eintrags in Ihrer Domäne

Nachdem das Anwendungsgateway mit der zugehörigen öffentlichen IP-Adresse erstellt wurde, können Sie die DNS-Adresse abrufen und zum Erstellen eines CNAME-Eintrags in Ihrer Domäne verwenden. Sie können az network public-ip show verwenden, um die DNS-Adresse des Anwendungsgateways abzurufen. Kopieren Sie den fqdn-Wert der DNSSettings, und verwenden Sie ihn als Wert für den erstellten CNAME-Eintrag.

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

Die Verwendung von A-Einträgen wird nicht empfohlen, weil sich die VIP beim Neustart des Anwendungsgateways möglicherweise ändert.

Testen der Application Gateway-Instanz

Geben Sie Ihren Domänennamen in die Adressleiste Ihres Browsers ein. Beispiel: http://www.contoso.com.

Test contoso site in application gateway

Ändern Sie die Adresse in Ihre andere Domäne. Die Ausgabe sollte in etwa wie folgt aussehen:

Test fabrikam site in application gateway

Bereinigen von Ressourcen

Entfernen Sie die Ressourcengruppe, das Anwendungsgateway und alle dazugehörigen Ressourcen, wenn Sie sie nicht mehr benötigen.

az group delete --name myResourceGroupAG

Nächste Schritte

Erstellen eines Anwendungsgateways mit Routingregeln auf URL-Pfadbasis