Redirección del tráfico web en función de la dirección URL mediante la CLI de Azure
Como administrador de IT que administra el tráfico web, desea ayudar a los clientes y usuarios a obtener la información que necesitan lo más rápidamente posible. Una manera en la que puede optimizar su experiencia es mediante el enrutamiento de diferentes clases de tráfico web a diferentes recursos de servidor. Este artículo le muestra cómo usar la CLI de Azure para instalar y configurar el enrutamiento de Application Gateway para distintos tipos de tráfico de la aplicación. Posteriormente, el enrutamiento dirige el tráfico a diferentes granjas de servidores según la dirección URL.
En este artículo aprenderá a:
- Creación de un grupo de recursos para los recursos de red que necesita
- Crear los recursos de red
- Crear una puerta de enlace de aplicaciones para el tráfico que procede de la aplicación
- Especificar granjas de servidores y reglas de enrutamiento para los distintos tipos de tráfico
- Crear un conjunto de escalado para cada granja para que esta se pueda escalar de forma automática
- Ejecutar una prueba para comprobar que los distintos tipos de tráfico van a la granja correcta
Si lo prefiere, puede completar este procedimiento con Azure PowerShell o Azure Portal.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
- 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. Cree un grupo de recursos mediante 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
. A continuación, agregue la subred llamada myBackendSubnet que necesitan los servidores de 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 la puerta de enlace de aplicaciones con una asignación de direcciones URL
Use az network application-gateway create
para crear una puerta de enlace de aplicaciones denominada 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 myAGSubnet y 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
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:
Característica | Descripción |
---|---|
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. |
Adición de un puerto de back-end y grupos de back-end de imágenes y vídeo
Agregue los grupos de back-end denominados imagesBackendPool y videoBackendPool a la puerta de enlace de aplicaciones mediante az network application-gateway address-pool create
. Agregue el puerto de front-end para los grupos 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 port8080
Adición de un agente de escucha de back-end
Agregue el agente de escucha de back-end llamado backendListener que es necesario para enrutar el tráfico mediante 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
Adición de una asignación de ruta de URL
Las asignaciones correspondientes a la ruta de dirección URL garantizan que direcciones URL específicas se enruten hacia grupos de back-end específicos. Cree una asignación de rutas de URL llamada 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 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
Agregar una regla de enrutamiento
La regla de enrutamiento asocia las asignaciones de URL con el agente de escucha que ha creado. Agregue una regla denominada rule2 mediante 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
Creación de implementaciones de Virtual Machine Scale Sets
En este artículo, creará tres instancias de Virtual Machine Scale Sets que admitan los tres grupos de back-end que ha creado. Cree los conjuntos de escalado denominados myvmss1, myvmss2 y myvmss3. Cada conjunto de escalado contiene dos instancias de máquina virtual en las que se instalará 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
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
o http://40.121.222.19:8080/video/test.htm
.
az network public-ip show \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--query [ipAddress] \
--output tsv
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:
Cambie la dirección URL por http://<dirección-ip>:8080/video/test.html, sustituyendo <dirección-ip> por su dirección IP y verá algo similar al ejemplo siguiente.
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
Crear una puerta de enlace de aplicaciones con redireccionamiento basado en rutas de dirección URL