Tutorial: Creación de una puerta de enlace de aplicaciones con redirección basada en rutas de dirección URL con la CLI de Azure

Puede usar la CLI de Azure para configurar reglas de enrutamiento basadas en rutas de dirección URL cuando se crea una puerta de enlace de aplicaciones. En este tutorial, creará grupos de back-end mediante conjuntos de escalado de máquinas virtuales. A continuación, creará reglas de enrutamiento de direcciones URL que garanticen que el tráfico web se redirija a los grupos de back-end adecuados.

En este tutorial, aprenderá a:

  • Configuración de la red
  • Creación de una puerta de enlace de aplicaciones
  • Incorporación de agentes de escucha y reglas de enrutamiento
  • Creación de conjuntos de escalado de máquinas virtuales para grupos de back-end

En el ejemplo siguiente se muestra el tráfico del sitio procedente de los puertos 8080 y 8081, y que se dirige a los mismos grupos de back-end:

URL routing example

Si lo prefiere, puede seguir los pasos de este tutorial mediante Azure PowerShell.

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Requisitos previos

  • Este tutorial requiere la versión 2.0.4 o posterior de la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.

Crear un grupo de recursos

Un grupo de recursos es un contenedor lógico en el que se implementan y se administran los recursos de Azure. Para crear un grupo de recursos, use az group create.

En el ejemplo siguiente, se crea un grupo de recursos llamado myResourceGroupAG en la ubicación eastus.

az group create --name myResourceGroupAG --location eastus

Crear recursos de red

Cree la red virtual llamada myVNet y la subred llamada myAGSubnet mediante az network vnet create. Luego, puede agregar la subred llamada myBackendSubnet que necesitan los servidores back-end mediante az network vnet subnet create. Cree la dirección IP pública llamada myAGPublicIPAddress mediante 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

Creación de una instancia de Application Gateway

Use az network application-gateway create para crear la puerta de enlace de aplicaciones llamada myAppGateway. Cuando se crea una puerta de enlace de aplicaciones mediante la CLI de Azure, se especifica información de configuración, como capacidad, SKU y HTTP. La puerta de enlace de aplicaciones se asigna a los elementos myAGSubnet y myPublicIPAddress que se crearon anteriormente.

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

La puerta de enlace de aplicaciones puede tardar varios minutos en crearse. Después de crear la puerta de enlace de aplicaciones, podrá ver estas nuevas características:

  • appGatewayBackendPool: una puerta de enlace de aplicaciones debe tener al menos un grupo de direcciones de servidores back-end.
  • appGatewayBackendHttpSettings: especifica que se use el puerto 80 y un protocolo HTTP para la comunicación.
  • appGatewayHttpListener: agente de escucha predeterminado asociado con appGatewayBackendPool.
  • appGatewayFrontendIP: asigna myAGPublicIPAddress a appGatewayHttpListener.
  • rule1: la regla de enrutamiento predeterminada asociada a appGatewayHttpListener.

Incorporación de grupos de back-end y puertos

Puede agregar los grupos de direcciones de back-end llamados imagesBackendPool y videoBackendPool a la puerta de enlace de aplicaciones mediante az network application-gateway address-pool create. Los puertos de front-end de los grupos se agregan mediante 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 bport

az network application-gateway frontend-port create \
  --port 8081 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name rport

Incorporación de reglas y agentes de escucha

Incorporación de agentes de escucha

Agregue los agentes de escucha de backend llamados backendListener y redirectedListener que son necesarios para enrutar el tráfico con az network application-gateway http-listener create.

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

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

Incorporación de la asignación de ruta de URL predeterminada

Las asignaciones de ruta de URL se aseguran de que las direcciones URL específicas se enrutan a grupos de back-end específicos. Puede crear las asignaciones de ruta de URL llamadas imagePathRule y videoPathRule mediante az network application-gateway url-path-map create y az network application-gateway url-path-map rule create

az network application-gateway url-path-map create \
  --gateway-name myAppGateway \
  --name urlpathmap \
  --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 urlpathmap \
  --paths /video/* \
  --address-pool videoBackendPool

Incorporación de la configuración de redireccionamiento

Puede configurar la redirección del agente de escucha mediante az network application-gateway redirect-config create.

az network application-gateway redirect-config create \
  --gateway-name myAppGateway \
  --name redirectConfig \
  --resource-group myResourceGroupAG \
  --type Found \
  --include-path true \
  --include-query-string true \
  --target-listener backendListener

Incorporación de la asignación de ruta de URL de redireccionamiento

az network application-gateway url-path-map create \
  --gateway-name myAppGateway \
  --name redirectpathmap \
  --paths /images/* \
  --resource-group myResourceGroupAG \
  --redirect-config redirectConfig \
  --rule-name redirectPathRule

Incorporación de reglas de enrutamiento

Las reglas de enrutamiento asocian las asignaciones de ruta de URL con los agentes de escucha que ha creado. Puede agregar las reglas llamadas defaultRule y redirectedRule mediante az network application-gateway rule create.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name defaultRule \
  --resource-group myResourceGroupAG \
  --http-listener backendListener \
  --rule-type PathBasedRouting \
  --url-path-map urlpathmap \
  --address-pool appGatewayBackendPool \
  --priority 100

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name redirectedRule \
  --resource-group myResourceGroupAG \
  --http-listener redirectedListener \
  --rule-type PathBasedRouting \
  --url-path-map redirectpathmap \
  --address-pool appGatewayBackendPool \
  --priority 100

Creación de conjuntos de escalado de máquinas virtuales

En este ejemplo, creará tres conjuntos de escalado de máquinas virtuales que admiten los tres grupos de back-end que ha creado. Los conjuntos de escalado que crea se llaman myvmss1, myvmss2 y myvmss3. Cada conjunto de escalado contiene dos instancias de máquina virtual en las que se instalará NGINX.

Reemplace <azure-user> y <password> por el nombre de usuario y la contraseña que prefiera.

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 <azure-user> \
    --admin-password <password> \
    --instance-count 2 \
    --vnet-name myVNet \
    --subnet myBackendSubnet \
    --vm-sku Standard_DS2 \
    --upgrade-policy-mode Automatic \
    --app-gateway myAppGateway \
    --backend-pool-name $poolName
done

Instalación de 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

Prueba de la puerta de enlace de aplicaciones

Para obtener la dirección IP pública de la puerta de enlace de aplicaciones, use az network public-ip show. Copie la dirección IP pública y péguela en la barra de direcciones del explorador. Como, por ejemplo, http://40.121.222.19, http://40.121.222.19:8080/images/test.htm, http://40.121.222.19:8080/video/test.htm o http://40.121.222.19:8081/images/test.htm.

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

Test base URL in application gateway

Cambie la dirección URL por http://<dirección-ip>:8080/images/test.html, sustituyendo <dirección-ip> por su dirección IP y verá algo similar al ejemplo siguiente:

Test images URL in application gateway

Cambie la dirección URL por http://<ip-address>:8080/video/test.html, sustituyendo <ip-address> por su dirección IP y verá algo similar al ejemplo siguiente:

Test video URL in application gateway

Ahora, cambie la dirección URL por http://<ip-address>:8081/images/test.htm, sustituyendo <ip-address> por su dirección IP, y debería ver el tráfico redirigido al grupo de back-end de imágenes en http://<ip-address>:8080/images.

Limpieza de recursos

Cuando ya no los necesite, quite el grupo de recursos, la puerta de enlace de aplicaciones y todos los recursos relacionados.

az group delete --name myResourceGroupAG

Pasos siguientes