Ejercicio: Configuración de un equilibrador de carga público
Puede configurar Azure Load Balancer mediante Azure Portal, PowerShell o la CLI de Azure.
En la organización de atención sanitaria, quiere equilibrar la carga del tráfico de cliente para proporcionar una respuesta coherente en función del estado de los servidores web del portal de pacientes. Dispone de dos máquinas virtuales en un conjunto de disponibilidad configuradas para que actúen como aplicación web del portal de atención sanitaria.
Aquí, crea un recurso de equilibrador de carga y lo usa para distribuir una carga entre las máquinas virtuales.
Implementación de la aplicación web del portal de pacientes
En primer lugar, implemente la aplicación del portal de pacientes en dos máquinas virtuales en un solo conjunto de disponibilidad. Para ahorrar tiempo, primero se ejecutará un script para crear esta aplicación. El script:
- Crea una red virtual y una infraestructura de red para las máquinas virtuales.
- Crea dos máquinas virtuales en esta red virtual.
Para implementar la aplicación web del portal de pacientes:
Ejecute el comando
git clone
siguiente en Azure Cloud Shell. El comando clona el repositorio que contiene el origen de la aplicación y ejecuta el script de instalación desde GitHub. Después, cambia al directorio del repositorio clonado.git clone https://github.com/MicrosoftDocs/mslearn-improve-app-scalability-resiliency-with-load-balancer.git cd mslearn-improve-app-scalability-resiliency-with-load-balancer
Como su nombre indica, el script genera dos máquinas virtuales en un solo conjunto de disponibilidad. Se tarda unos dos minutos en ejecutarse.
bash create-high-availability-vm-with-sets.sh <rgn>[sandbox resource group name]</rgn>
Cuando finalice el script, en el menú de Azure Portal o la página Inicio, seleccione Grupos de recursos y luego el grupo de recursos
[nombre del grupo de recursos del espacio aislado] . Revise los recursos creados por el script.
Creación de un equilibrador de carga
Ahora vamos a crear el equilibrador de carga.
En el menú de Azure Portal o la página Inicio, en Servicios de Azure, seleccione Crear un recurso. Aparecerá el panel Crear un recurso.
En el cuadro de búsqueda Servicios de búsqueda y Marketplace, escriba Load Balancer y presione Entrar.
En la lista siguiente, seleccione Load Balancer - Microsoft y, después Crear.
En la pestaña Aspectos básicos, escriba los valores siguientes para cada opción:
Configuración Valor Detalles del proyecto Subscription Su suscripción Resource group Seleccione [nombre del grupo de recursos del espacio aislado] Detalles de instancia Nombre Escriba un nombre único. Por ejemplo, Pub-LB-PatientsPortal. Region Seleccione la ubicación donde se han creado las máquinas virtuales. SKU Estándar Tipo Public Nivel Regional
Adición de una configuración de dirección IP de front-end
Seleccione Siguiente: Configuración de IP de front-end.
Seleccione + Agregar una configuración de IP de front-end. Aparece el panel Agregar una configuración de IP de front-end.
Escriba los valores siguientes para cada opción.
Configuración Value Nombre Escriba un nombre único para la configuración de IP de front-end. Por ejemplo, myFrontendIP Versión de la dirección IP Seleccione IPv4. Tipo de IP Seleccione Dirección IP. Dirección IP pública Seleccione Crear nuevo y, después, asigne un nombre a la dirección IP y elija Guardar. Equilibrador de carga de puerta de enlace Selecciona Ninguno. Para cerrar el cuadro de diálogo, seleccione Guardar. Vuelve a aparecer el panel Crear equilibrador de carga.
Adición de un grupo de back-end
Seleccione Siguiente: Grupos de back-end.
Seleccione + Agregar un grupo de back-end. Aparece el panel Agregar grupo de back-end.
Escriba los valores siguientes para cada opción.
Configuración Value Nombre Escriba un nombre único para el grupo de back-end. Por ejemplo, bepool-http. Red virtual Confirme que bePortalVnet esté seleccionado. En Configuraciones IP, seleccione Añadir. Aparece el panel Agregar configuraciones de IP al grupo de back-end.
En Máquina virtual, seleccione las máquinas virtuales webVM1 y webVM2 y seleccione Agregar.
Vuelve a aparecer la pantalla Agregar un grupo de back-end. En Configuraciones de IP, seleccione las máquinas virtuales webVM1 y webVM2 y seleccione Guardar. Vuelve aparecer la pantalla Crear equilibrador de carga.
Adición de una regla de equilibrio de carga
Por último, se creará una regla para el equilibrador de carga.
Seleccione Siguiente: Reglas de entrada.
En la sección Regla de equilibrio de carga, seleccione + Agregar una regla de equilibrio de carga. Aparece el panel Agregar regla de equilibrio de carga.
Escriba los valores siguientes para cada opción.
Configuración Value Nombre Nombre de la regla de equilibrio de carga. Por ejemplo, lbrule-http. Versión de la dirección IP IPv4 Dirección IP del front-end Seleccione la dirección IP de front-end que llamó anteriormente. Grupo back-end Seleccione el grupo de back-end que denominó anteriormente. Por ejemplo, bepool-http. Protocolo TCP Port Escriba 80 (valor predeterminado). Puerto back-end Escriba 80 (valor predeterminado). Sondeo de mantenimiento Seleccione el vínculo Crear nuevo. Aparece el cuadro de diálogo Agregar sondeo de estado. Escriba los valores siguientes para cada opción.
Configuración Value Nombre nombre del sondeo de estado. Por ejemplo, healthprobe-http. Protocolo TCP Port Escriba 80 (valor predeterminado). Intervalo Especifique 5 (valor predeterminado). Este valor es la cantidad de tiempo entre sondeos. Seleccione Guardar para cerrar el cuadro de diálogo. Vuelve a aparecer el panel Agregar regla de equilibrio de carga.
Continúe escribiendo los valores siguientes para cada opción.
Configuración Valor Persistencia de la sesión* Ninguna (valor predeterminado) Tiempo de espera de inactividad (minutos) Seleccione 4 (valor predeterminado). Este valor es el tiempo que se mantiene abierta una conexión de Protocolo de control de transmisión (TCP) o HTTP sin depender de los clientes para el envío de mensajes a fin de mantener activa la conexión. Dirección IP flotante Deshabilitado (predeterminado). Seleccione Guardar para completar la configuración de la regla de equilibrio de carga.
Vuelve aparecer la pantalla Crear equilibrador de carga. Seleccione Revisar + crear.
Cuando se supera la validación, seleccione Crear. Cuando finalice la implementación, seleccione Ir al recurso.
En la página Información general, copie y guarde la Dirección IP pública. Es posible que tenga que seleccionar Ver más... para ver la dirección IP pública.
Creación de direcciones IP
En primer lugar, se necesita una dirección IP pública para el equilibrador de carga.
En Cloud Shell, inicie PowerShell mediante la ejecución de este comando:
pwsh
En PowerShell, cree una nueva dirección IP pública:
$Location = $(Get-AzureRmResourceGroup -ResourceGroupName <rgn>[sandbox resource group name]</rgn>).Location $publicIP = New-AzPublicIpAddress ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Location $Location ` -AllocationMethod "Static" ` -Name "myPublicIP"
Cree una dirección IP de front-end con el cmdlet New-AzLoadBalancerFrontendIpConfig. En el código siguiente, se crea una configuración de IP de front-end llamada myFrontEnd y se asocia a la dirección myPublicIP:
$frontendIP = New-AzLoadBalancerFrontendIpConfig ` -Name "myFrontEnd" ` -PublicIpAddress $publicIP
Creación del equilibrador de carga
Si usa PowerShell para configurar un equilibrador de carga, tendrá que crear el grupo de direcciones de back-end, el sondeo de estado y la regla antes de crear el equilibrador.
Cree un grupo de direcciones de back-end ejecutando el cmdlet New-AzLoadBalancerBackendAddressPoolConfig. En los pasos finales, va a conectar las máquinas virtuales a este grupo de back-end. En el siguiente ejemplo se crea un grupo de direcciones de back-end denominado myBackEndPool:
$backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool"
Cree un sondeo de estado para permitir que el equilibrador de carga supervise el estado del portal de atención sanitaria. El sondeo de estado agrega o quita máquinas virtuales de la rotación del equilibrador de carga dinámicamente en función de su respuesta a las comprobaciones de estado.
$probe = New-AzLoadBalancerProbeConfig ` -Name "myHealthProbe" ` -Protocol http ` -Port 80 ` -IntervalInSeconds 5 ` -ProbeCount 2 ` -RequestPath "/"
Ahora, necesita una regla de equilibrador de carga para definir cómo se distribuye el tráfico en las máquinas virtuales. Se define la configuración de IP front-end para el tráfico entrante y el grupo IP de back-end para recibir el tráfico, junto con el puerto de origen y destino requeridos. Para asegurarse de que solo las máquinas virtuales correctas reciben el tráfico, también se define el sondeo de estado que se va a usar.
$lbrule = New-AzLoadBalancerRuleConfig ` -Name "myLoadBalancerRule" ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Protocol Tcp ` -FrontendPort 80 ` -BackendPort 80 ` -Probe $probe
Ahora puede crear el equilibrador de carga básico ejecutando el cmdlet New-AzLoadBalancer:
$lb = New-AzLoadBalancer ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name 'MyLoadBalancer' ` -Location $Location ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Probe $probe ` -LoadBalancingRule $lbrule
Para conectar las máquinas virtuales al grupo de back-end, actualice las interfaces de red que ha creado el script con la información del grupo de back-end.
$nic1 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic1" $nic2 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic2" $nic1.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool $nic2.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool Set-AzNetworkInterface -NetworkInterface $nic1 -AsJob Set-AzNetworkInterface -NetworkInterface $nic2 -AsJob
Ejecute el siguiente comando para obtener la dirección IP pública del equilibrador de carga y la dirección URL del sitio web:
Write-Host http://$($(Get-AzPublicIPAddress ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name "myPublicIP").IpAddress)
Creación de un equilibrador de carga
Usaremos la CLI de Azure para crear el equilibrador de carga y sus recursos asociados.
Cree una dirección IP pública.
az network public-ip create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --allocation-method Static \ --name myPublicIP
Cree el equilibrador de carga.
az network lb create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myLoadBalancer \ --public-ip-address myPublicIP \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool
Cree un sondeo de estado que permita que el equilibrador de carga supervise el estado del portal de atención sanitaria. El sondeo de estado agrega o quita máquinas virtuales de la rotación del equilibrador de carga dinámicamente en función de su respuesta a las comprobaciones de estado.
az network lb probe create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --lb-name myLoadBalancer \ --name myHealthProbe \ --protocol tcp \ --port 80
Ahora, necesitará una regla de equilibrador de carga para definir cómo se distribuye el tráfico en las máquinas virtuales. Se define la configuración de IP front-end para el tráfico entrante y el grupo IP de back-end para recibir el tráfico, junto con el puerto de origen y destino requeridos. Para asegurarse de que solo las máquinas virtuales correctas reciben el tráfico, también se define el sondeo de estado que se va a usar.
az network lb rule create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --lb-name myLoadBalancer \ --name myHTTPRule \ --protocol tcp \ --frontend-port 80 \ --backend-port 80 \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool \ --probe-name myHealthProbe
Para conectar las máquinas virtuales al grupo de back-end, actualice las interfaces de red que ha creado el script con la información del grupo de back-end.
az network nic ip-config update \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --nic-name webNic1 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool az network nic ip-config update \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --nic-name webNic2 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool
Ejecute el siguiente comando para obtener la dirección IP pública del equilibrador de carga y la dirección URL del sitio web:
echo http://$(az network public-ip show \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myPublicIP \ --query ipAddress \ --output tsv)
Prueba de la configuración del equilibrador de carga
A continuación probará la configuración del equilibrador de carga para mostrar cómo puede controlar los problemas de disponibilidad y estado de forma dinámica.
En una nueva pestaña del explorador, vaya a la dirección IP pública que ha anotado. En el explorador, se muestra una respuesta de una de las máquinas virtuales.
Presione Ctrl + F5 varias veces para intentar "forzar una actualización" y ver que la respuesta se devuelve de forma aleatoria desde ambas máquinas virtuales.
En el menú de Azure Portal o la página Inicio, seleccione Todos los recursos. Posteriormente, seleccione webVM1 y seleccione Detener.
Vuelva a la pestaña en la que se muestra el sitio web y fuerce una actualización de la página web. Todas las solicitudes se devuelven desde webVM2.