Kierowanie ruchu internetowego na podstawie adresu URL przy użyciu interfejsu wiersza polecenia platformy Azure

Jako administrator IT zarządzający ruchem internetowym chcesz pomóc klientom i użytkownikom jak najszybciej uzyskać potrzebne informacje. Jednym ze sposobów zoptymalizowania ich środowiska jest skierowanie różnych rodzajów ruchu internetowego do różnych zasobów serwera. W tym artykule pokazano, jak za pomocą interfejsu wiersza polecenia platformy Azure skonfigurować i skonfigurować routing usługi Application Gateway dla różnych typów ruchu z aplikacji. Następnie, na podstawie adresu URL, routing kieruje ruch do różnych pul serwerów.

URL routing example

W tym artykule omówiono sposób wykonywania następujących zadań:

  • Tworzenie grupy zasobów dla potrzebnych zasobów sieciowych
  • Tworzenie zasobów sieciowych
  • Tworzenie bramy aplikacji na potrzeby ruchu pochodzącego z aplikacji
  • Określanie pul serwerów i reguł rozsyłania dla różnych typów ruchu
  • Tworzenie zestawów skalowania dla poszczególnych pul umożliwiających ich automatycznie skalowanie
  • Uruchamianie testu sprawdzającego, czy różne typy ruchu trafiają do poprawnych pul

Jeśli wolisz, możesz wykonać tę procedurę przy użyciu programu Azure PowerShell lub witryny Azure Portal.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Wymagania wstępne

  • Ten samouczek wymaga wersji 2.0.4 lub nowszej interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z usługi Azure Cloud Shell najnowsza wersja jest już zainstalowana.

Tworzenie grupy zasobów

Grupa zasobów to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi. Za pomocą polecenia az group create utwórz grupę zasobów.

W poniższym przykładzie pokazano sposób tworzenia grupy zasobów o nazwie myResourceGroupAG w lokalizacji eastus.

az group create --name myResourceGroupAG --location eastus

Tworzenie zasobów sieciowych

Utwórz sieć wirtualną o nazwie myVNet i podsieć o nazwie myAGSubnet przy użyciu polecenia az network vnet create. Następnie dodaj podsieć o nazwie myBackendSubnet wymaganą przez serwery zaplecza przy użyciu polecenia az network vnet subnet create. Za pomocą polecenia az network public-ip create utwórz publiczny adres IP o nazwie 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

Tworzenie bramy aplikacji z mapą adresów URL

Użyj polecenia az network application-gateway create, aby utworzyć bramę aplikacji o nazwie myAppGateway. Podczas tworzenia bramy aplikacji przy użyciu interfejsu wiersza polecenia platformy Azure należy podać informacje o konfiguracji, takie jak pojemność, jednostka SKU i ustawienia protokołu HTTP. Brama aplikacji jest przypisywana do podsieci myAGSubnet i 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 100

Tworzenie bramy aplikacji może potrwać kilka minut. Po utworzeniu bramy aplikacji możesz zauważyć następujące nowe funkcje:

Funkcja opis
appGatewayBackendPool Brama aplikacji musi mieć co najmniej jedną pulę adresów zaplecza.
appGatewayBackendHttpSettings Określa, że port 80 i protokół HTTP są używane do komunikacji.
appGatewayHttpListener Domyślny odbiornik skojarzony z pulą appGatewayBackendPool.
appGatewayFrontendIP Przypisuje adres myAGPublicIPAddress do odbiornika appGatewayHttpListener.
rule1 Domyślna reguła rozsyłania skojarzona z odbiornikiem appGatewayHttpListener.

Dodawanie pul zaplecza i portu na potrzeby obsługi obrazów i wideo

Dodaj pule zaplecza o nazwach imagesBackendPool i videoBackendPool do bramy aplikacji, używając polecenia az network application-gateway address-pool create. Port frontonu jest dodawany do pul za pomocą polecenia az network application-gateway frontend-port create.

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

Dodawanie odbiornika zaplecza

Dodaj odbiornik zaplecza o nazwie backendListener, wymagany do kierowania ruchu, używając polecenia az network application-gateway http-listener create.

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

Dodawanie mapy ścieżek URL

Mapy ścieżek URL zapewniają kierowanie określonych adresów URL do określonych pul zaplecza. Utwórz mapy ścieżek URL o nazwach imagePathRule i videoPathRule za pomocą poleceń az network application-gateway url-path-map create i az network application-gateway url-path-map rule create.

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

Dodawanie reguły rozsyłania

Reguła routingu kojarzy mapę adresów URL z utworzonym odbiornikiem. Dodaj regułę o nazwie rule2 przy użyciu polecenia az network application-gateway rule create.

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

Tworzenie zestawów skalowania maszyn wirtualnych

W tym artykule utworzysz trzy zestawy skalowania maszyn wirtualnych, które obsługują utworzone trzy pule zaplecza. Utworzysz zestawy skalowania o nazwach myvmss1, myvmss2 i myvmss3. Każdy zestaw skalowania zawiera dwa wystąpienia maszyny wirtualnej, na których instaluje się serwer NGINX.

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

Instalowanie serwera 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

Testowanie bramy aplikacji

Aby uzyskać publiczny adres IP bramy aplikacji, użyj polecenia az network public-ip show. Skopiuj publiczny adres IP, a następnie wklej go na pasku adresu przeglądarki. Na przykład http://40.121.222.19, http://40.121.222.19:8080/images/test.htm lub 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

Zmień adres URL na http://< ip-address>:8080/images/test.html, zastępując adres IP dla adresu <>IP i powinien zostać wyświetlony kod podobny do następującego przykładu:

Test images URL in application gateway

Zmień adres URL na http://< ip-address>:8080/video/test.html, zastępując adres IP adresem IP adresu <IP> i powinien zostać wyświetlony kod podobny do poniższego przykładu.

Test video URL in application gateway

Czyszczenie zasobów

Gdy grupa zasobów, brama aplikacji i wszystkie pokrewne zasoby nie będą już potrzebne, można je usunąć.

az group delete --name myResourceGroupAG

Następne kroki

Tworzenie bramy aplikacji z przekierowywaniem na podstawie ścieżki URL