Weiterleiten von Webdatenverkehr basierend auf der URL mit der Azure-Befehlszeilenschnittstelle

Als IT-Administrator*in, der/die Webdatenverkehr verwaltet, möchten Sie Ihrer Kundschaft und Ihren Benutzer*innen dabei helfen, schnellstmöglich die benötigten Informationen zu erhalten. Zur Verbesserung der Benutzerfreundlichkeit können Sie unter anderem verschiedene Arten von Webdatenverkehr an verschiedene Serverressourcen weiterleiten. In diesem Artikel erfahren Sie, wie Sie die Azure-Befehlszeilenschnittstelle verwenden, um Application Gateway-Routing für verschiedene Arten von Datenverkehr aus Ihrer Anwendung einzurichten und zu konfigurieren. Der Datenverkehr wird dann auf der Grundlage der URL an verschiedene Serverpools weitergeleitet.

URL routing example

In diesem Artikel werden folgende Vorgehensweisen behandelt:

  • Erstellen einer Ressourcengruppe für die benötigten Netzwerkressourcen
  • Erstellen der Netzwerkressourcen
  • Erstellen eines Anwendungsgateways für den Datenverkehr aus Ihrer Anwendung
  • Angeben von Serverpools und Routingregeln für die verschiedenen Arten von Datenverkehr
  • Erstellen einer Skalierungsgruppe für jeden Pool, damit der Pool automatisch skaliert werden kann
  • Testen, ob die verschiedenen Arten von Datenverkehr an den richtigen Pool weitergeleitet werden

Dieses Verfahren kann auch mit Azure PowerShell oder mit dem Azure-Portal durchgearbeitet werden.

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 mithilfe von 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 mithilfe von az network vnet create ein virtuelles Netzwerk namens myVNet und ein Subnetz namens myAGSubnet. Fügen Sie dann mithilfe von az network vnet subnet create ein Subnetz mit dem Namen myBackendSubnet hinzu, das von den Back-End-Servern benötigt wird. Erstellen Sie mithilfe von az network public-ip create die öffentliche IP-Adresse 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 App-Gateways mit einer URL-Zuordnung

Verwenden Sie az network application-gateway create, um ein Anwendungsgateway namens myAppGateway 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 myAGSubnet und myAGPublicIPAddress zugewiesen.

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

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

Funktion Beschreibung
appGatewayBackendPool Ein Anwendungsgateway muss über mindestens einen Back-End-Adresspool verfügen.
appGatewayBackendHttpSettings Hiermit wird angegeben, dass für die Kommunikation Port 80 und ein HTTP-Protokoll verwendet werden.
appGatewayHttpListener Der Standardlistener, der „appGatewayBackendPool“ zugeordnet ist.
appGatewayFrontendIP Weist „myAGPublicIPAddress“ zu „appGatewayHttpListener“ zu.
rule1 Die Standardroutingregel, die „appGatewayHttpListener“ zugeordnet ist.

Hinzufügen von Back-End-Pools für Bilder und Videos sowie eines Ports

Fügen Sie Ihrem Anwendungsgateway mithilfe von az network application-gateway address-pool create Back-End-Pools namens imagesBackendPool und videoBackendPool hinzu. Verwenden Sie az network application-gateway frontend-port create, um den Front-End-Port für die Pools hinzuzufügen.

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

Hinzufügen eines Back-End-Listeners

Fügen Sie mithilfe von az network application-gateway http-listener create den Back-End-Listener namens backendListener hinzu. Dieser ist zum Weiterleiten von Datenverkehr erforderlich.

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

Hinzufügen einer URL-Pfadzuordnung

URL-Pfadzuordnungen stellen sicher, dass bestimmte URLs an bestimmte Back-End-Pools weitergeleitet werden. Erstellen Sie mithilfe von az network application-gateway url-path-map create und az network application-gateway url-path-map rule create URL-Pfadzuordnungen namens imagePathRule und 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

Hinzufügen einer Routingregel

Die Routingregel ordnet die URL-Zuordnungen dem von Ihnen erstellten Listener zu. Fügen Sie mithilfe von az network application-gateway rule create eine Regel namens rule2 hinzu.

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

Erstellen von VM-Skalierungsgruppen

In diesem Artikel erstellen Sie drei VM-Skalierungsgruppen, die die drei erstellten Back-End-Pools unterstützen. Sie erstellen Skalierungsgruppen namens myvmss1, myvmss2 und myvmss3. Jede Skalierungsgruppe enthält zwei VM-Instanzen, auf denen Sie NGINX installieren.

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

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

Testen des Anwendungsgateways

Um die öffentliche IP-Adresse des Anwendungsgateways abzurufen, verwenden Sie az network public-ip show. Kopieren Sie die öffentliche IP-Adresse, und fügen Sie sie in die Adressleiste des Browsers ein. Beispiel: http://40.121.222.19, http://40.121.222.19:8080/images/test.htm oder 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

Ändern Sie die URL in http://<IP-Adresse>:8080/images/test.html, und ersetzen Sie dabei <IP-Adresse> durch Ihre IP-Adresse. Die anschließende Anzeige sollte in etwa wie im folgenden Beispiel aussehen:

Test images URL in application gateway

Ändern Sie die URL in http://<ip-address>:8080/video/test.html, und ersetzen Sie dabei <IP-Adresse> durch Ihre IP-Adresse. Die anschließende Anzeige sollte in etwa wie im folgenden Beispiel aussehen.

Test video URL 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 Umleitung auf URL-Pfadbasis