Guía de inicio rápido: Creación de un equilibrador de carga para equilibrar la carga de las máquinas virtuales con la CLI de AzureQuickstart: Create a load balancer to load balance VMs using Azure CLI

En esta guía de inicio rápido se explica cómo crear una instancia de Azure Load Balancer para equilibrar la carga del tráfico de Internet entre las máquinas virtuales de Azure.This quickstart shows you how to create an Azure Load Balancer to load balance internet traffic between virtual machines in Azure. Para probar el equilibrador de carga, implemente dos máquinas virtuales (VM) que ejecutan un servidor Ubuntu y se equilibra la carga de una aplicación web entre ellas.To test the load balancer, you deploy two virtual machines (VMs) running Ubuntu server and load balance a web app between.

Uso de Azure Cloud ShellUse Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell le permite usar bash o PowerShell para trabajar con servicios de Azure.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Para iniciar Azure Cloud Shell:To launch Azure Cloud Shell:

OpciónOption Ejemplo o vínculoExample/Link
Seleccione Probarlo en la esquina superior derecha de un bloque de código.Select Try It in the upper-right corner of a code block. Solo con seleccionar Probar no se copia automáticamente el código en Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Ejemplo de Probarlo para Azure Cloud Shell
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador.Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell en una nueva ventanaLaunch Cloud Shell in a new window
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Botón Cloud Shell en Azure Portal

Para ejecutar el código de este artículo en Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Inicie Cloud Shell.Launch Cloud Shell.

  2. Seleccione el botón Copiar de un bloque de código para copiar el código.Select the Copy button on a code block to copy the code.

  3. Pegue el código en la sesión de Cloud Shell con Ctrl+Mayús+V en Windows y Linux, o Cmd+Mayús+V en macOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.

  4. Presione ENTRAR para ejecutar el código.Press Enter to run the code.

Si decide instalar y usar la CLI localmente, para este tutorial es preciso que ejecute la CLI de Azure versión 2.0.28 o versiones posteriores.If you choose to install and use the CLI locally, this tutorial requires that you are running a version of the Azure CLI version 2.0.28 or later. Para encontrar la versión, ejecute az --version.To find the version, run az --version. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.If you need to install or upgrade, see Install Azure CLI.

Crear un grupo de recursosCreate a resource group

Cree un grupo de recursos con az group create.Create a resource group with az group create. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure.An Azure resource group is a logical container into which Azure resources are deployed and managed.

En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroupLB en la ubicación eastus:The following example creates a resource group named myResourceGroupLB in the eastus location:

  az group create \
    --name myResourceGroupLB \
    --location eastus

Crear una dirección IP públicaCreate a public IP address

Para obtener acceso a la aplicación web en Internet, necesita una dirección IP pública para el equilibrador de carga.To access your web app on the Internet, you need a public IP address for the load balancer. Utilice az network public-ip create para crear una dirección IP pública llamada myPublicIP en myResourceGroupLB.Use az network public-ip create to create a public IP address named myPublicIP in myResourceGroupLB.

  az network public-ip create --resource-group myResourceGroupLB --name myPublicIP

Creación del equilibrador de carga de AzureCreate Azure load balancer

En esta sección se detalla cómo se pueden crear y configurar los componentes siguientes del equilibrador de carga:This section details how you can create and configure the following components of the load balancer:

  • Un grupo de direcciones IP de front-end que recibe el tráfico de red entrante en el equilibrador de carga.a frontend IP pool that receives the incoming network traffic on the load balancer.
  • Un grupo de direcciones IP de back-end al que el grupo de servidores front-end envía el tráfico de red de carga equilibrada.a backend IP pool where the frontend pool sends the load balanced network traffic.
  • Un sondeo de estado que determina el estado de las instancias de máquina virtual de back-end.a health probe that determines health of the backend VM instances.
  • Una regla de equilibrador de carga que define cómo se distribuye el tráfico a las máquinas virtuales.a load balancer rule that defines how traffic is distributed to the VMs.

Creación del equilibrador de cargaCreate the load balancer

Cree con az network lb create una instancia de Azure Load Balancer pública llamada myLoadBalancer que incluya un grupo de servidores front-end llamado myFrontEndPool y un grupo de servidores back-end llamado myBackEndPool que esté asociado a la dirección IP pública myPublicIP que creó en el paso anterior.Create a public Azure Load Balancer with az network lb create named myLoadBalancer that includes a frontend pool named myFrontEndPool, a backend pool named myBackEndPool that is associated with the public IP address myPublicIP that you created in the preceding step.

  az network lb create \
    --resource-group myResourceGroupLB \
    --name myLoadBalancer \
    --public-ip-address myPublicIP \
    --frontend-ip-name myFrontEndPool \
    --backend-pool-name myBackEndPool       

Creación del sondeo de estadoCreate the health probe

Los sondeos de estado comprueban todas las instancias de máquina virtual para asegurarse de que pueden enviar tráfico de red.A health probe checks all virtual machine instances to make sure they can send network traffic. La instancia de máquina virtual con comprobaciones de sondeo incorrectas se elimina del equilibrador de carga hasta que vuelve a estar en línea y una comprobación de sondeo determina que es correcta.The virtual machine instance with failed probe checks is removed from the load balancer until it goes back online and a probe check determines that it's healthy. Cree un sondeo de estado con az network lb probe create para supervisar el estado de las máquinas virtuales.Create a health probe with az network lb probe create to monitor the health of the virtual machines.

  az network lb probe create \
    --resource-group myResourceGroupLB \
    --lb-name myLoadBalancer \
    --name myHealthProbe \
    --protocol tcp \
    --port 80   

Creación de la regla de equilibrador de cargaCreate the load balancer rule

Una regla de equilibrador de carga define la configuración de la dirección IP de front-end para el tráfico entrante y el grupo de direcciones IP de back-end para recibir el tráfico, junto con el puerto de origen y destino requeridos.A load balancer rule defines the frontend IP configuration for the incoming traffic and the backend IP pool to receive the traffic, along with the required source and destination port. Cree una regla de equilibrador de carga myLoadBalancerRuleWeb con az network lb rule create para escuchar el puerto 80 en el grupo de servidores front-end myFrontEndPool y enviar tráfico de red con equilibrio de carga al grupo de direcciones de back-end myBackEndPool, que también usan el puerto 80.Create a load balancer rule myLoadBalancerRuleWeb with az network lb rule create for listening to port 80 in the frontend pool myFrontEndPool and sending load-balanced network traffic to the backend address pool myBackEndPool also using port 80.

  az network lb rule create \
    --resource-group myResourceGroupLB \
    --lb-name myLoadBalancer \
    --name myHTTPRule \
    --protocol tcp \
    --frontend-port 80 \
    --backend-port 80 \
    --frontend-ip-name myFrontEndPool \
    --backend-pool-name myBackEndPool \
    --probe-name myHealthProbe  

Configurar la red virtualConfigure virtual network

Antes de implementar algunas máquinas virtuales y poder probar el equilibrador de carga, cree los recursos de red virtual auxiliares.Before you deploy some VMs and can test your load balancer, create the supporting virtual network resources.

Creación de una red virtualCreate a virtual network

Cree una red virtual llamada myVnet con una subred llamada mySubnet en myResourceGroup con el comando az network vnet create.Create a virtual network named myVnet with a subnet named mySubnet in the myResourceGroup using az network vnet create.

  az network vnet create \
    --resource-group myResourceGroupLB \
    --location eastus \
    --name myVnet \
    --subnet-name mySubnet

Crear un grupo de seguridad de redCreate a network security group

Cree un grupo de seguridad de red para definir las conexiones entrantes a la red virtual.Create network security group to define inbound connections to your virtual network.

  az network nsg create \
    --resource-group myResourceGroupLB \
    --name myNetworkSecurityGroup

Creación de una regla de grupo de seguridad de redCreate a network security group rule

Cree una regla de grupo de seguridad de red para permitir las conexiones entrantes a través del puerto 80.Create a network security group rule to allow inbound connections through port 80.

  az network nsg rule create \
    --resource-group myResourceGroupLB \
    --nsg-name myNetworkSecurityGroup \
    --name myNetworkSecurityGroupRuleHTTP \
    --protocol tcp \
    --direction inbound \
    --source-address-prefix '*' \
    --source-port-range '*' \
    --destination-address-prefix '*' \
    --destination-port-range 80 \
    --access allow \
    --priority 200

Creación de tarjetas NICCreate NICs

Cree dos interfaces de red con el comando az network nic create y asócielas con la dirección IP pública y el grupo de seguridad de red.Create two network interfaces with az network nic create and associate them with the Public IP address and the network security group.

for i in `seq 1 2`; do
  az network nic create \
    --resource-group myResourceGroupLB \
    --name myNic$i \
    --vnet-name myVnet \
    --subnet mySubnet \
    --network-security-group myNetworkSecurityGroup \
    --lb-name myLoadBalancer \
    --lb-address-pools myBackEndPool
done

Creación de servidores back-endCreate backend servers

En este ejemplo, se crean dos máquinas virtuales que se usarán como servidores back-end para el equilibrador de carga.In this example, you create two virtual machines to be used as backend servers for the load balancer. Para comprobar que el equilibrador de carga se ha creado correctamente, también se debe instalar NGINX en las máquinas virtuales.To verify that the load balancer was successfully created, you also install NGINX on the virtual machines .

Creación de un conjunto de disponibilidadCreate an Availability set

Cree un conjunto de disponibilidad con az vm availabilityset createCreate an availability set with az vm availabilityset create

 az vm availability-set create \
   --resource-group myResourceGroupLB \
   --name myAvailabilitySet

Creación de dos máquinas virtualesCreate two virtual machines

Puede usar un archivo de configuración cloud-init para instalar NGINX y ejecutar una aplicación Node.js "Hola mundo" en una máquina virtual Linux.You can use a cloud-init configuration file to install NGINX and run a 'Hello World' Node.js app on a Linux virtual machine. En el shell actual, cree un archivo denominado cloud-init.txt, y copie y pegue la siguiente configuración en el shell.In your current shell, create a file named cloud-init.txt and copy and paste the following configuration into the shell. Asegúrese de copiar correctamente todo el archivo cloud-init, especialmente la primera línea:Make sure that you copy the whole cloud-init file correctly, especially the first line:

#cloud-config
package_upgrade: true
packages:
  - nginx
  - nodejs
  - npm
write_files:
  - owner: www-data:www-data
  - path: /etc/nginx/sites-available/default
    content: |
      server {
        listen 80;
        location / {
          proxy_pass http://localhost:3000;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection keep-alive;
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
        }
      }
  - owner: azureuser:azureuser
  - path: /home/azureuser/myapp/index.js
    content: |
      var express = require('express')
      var app = express()
      var os = require('os');
      app.get('/', function (req, res) {
        res.send('Hello World from host ' + os.hostname() + '!')
      })
      app.listen(3000, function () {
        console.log('Hello world app listening on port 3000!')
      })
runcmd:
  - service nginx restart
  - cd "/home/azureuser/myapp"
  - npm init
  - npm install express -y
  - nodejs index.js

Cree las máquinas virtuales con az vm create.Create the virtual machines with az vm create.

for i in `seq 1 2`; do
 az vm create \
   --resource-group myResourceGroupLB \
   --name myVM$i \
   --availability-set myAvailabilitySet \
   --nics myNic$i \
   --image UbuntuLTS \
   --generate-ssh-keys \
   --custom-data cloud-init.txt
   --no-wait
   done

Es posible que la implementación de las máquinas virtuales tarde unos minutos.It may take a few minutes for the VMs to get deployed.

Prueba del equilibrador de cargaTest the load balancer

Para obtener la dirección IP pública del equilibrador de carga, use az network public-ip show.To get the public IP address of the load balancer, use az network public-ip show. Copie la dirección IP pública y péguela en la barra de direcciones del explorador.Copy the public IP address, and then paste it into the address bar of your browser.

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

Prueba del equilibrador de carga

Limpieza de recursosClean up resources

Cuando ya no se necesiten, puede usar el comando az group delete para quitar el grupo de recursos, el equilibrador de carga y todos los recursos relacionados.When no longer needed, you can use the az group delete command to remove the resource group, load balancer, and all related resources.

  az group delete --name myResourceGroupLB

Pasos siguientesNext steps

En esta guía de inicio rápido, ha creado un equilibrador de carga básico, le ha asociado máquinas virtuales, ha configurado la regla de tráfico del equilibrador de carga, ha sondeado el estado y, después, ha probado el equilibrador de carga.In this quickstart, you created a Basic Load Balancer, attached VMs to it, configured the load balancer traffic rule, health probe, and then tested the load balancer. Para más información acerca de Azure Load Balancer, diríjase a los tutoriales correspondientes.To learn more about Azure Load Balancer, continue to the tutorials for Azure Load Balancer.