Configurar un balanceador de carga de red de paso a través externo para varios protocolos de IP

En esta guía se explica cómo crear balanceadores de carga de red externos de tipo pases a través basados en servicios de backend que balancean la carga del tráfico TCP, UDP, ESP, GRE, ICMP e ICMPv6. Puedes usar esta configuración para balancear la carga del tráfico que usa protocolos de IP distintos de TCP o UDP. Los balanceadores de carga de red de paso a través externos basados en grupos de destino no admiten esta función.

Para configurar un balanceador de carga de red de transferencia externo para protocolos de IP distintos de TCP o UDP, crea una regla de reenvío con el protocolo definido como L3_DEFAULT. Esta regla de reenvío apunta a un servicio de backend con el protocolo UNSPECIFIED.

En este ejemplo, usamos dos balanceadores de carga de red con paso a través externos para distribuir el tráfico entre las VMs de backend de dos grupos de instancias gestionados zonales de la región us-central1. Ambos balanceadores de carga reciben tráfico en la misma dirección IP externa.

Un balanceador de carga tiene una regla de reenvío con el protocolo TCP y el puerto 80, y el otro balanceador de carga tiene una regla de reenvío con el protocolo L3_DEFAULT. El tráfico TCP que llega a la dirección IP en el puerto 80 se gestiona mediante la regla de reenvío TCP. El resto del tráfico que no coincida con la regla de reenvío específica de TCP se gestionará mediante la regla de reenvío L3_DEFAULT.

Balanceador de carga de red de paso a través externo con grupos de instancias gestionadas zonales.
Balanceador de carga de red de paso a través externo con grupos de instancias gestionados zonales (haz clic para ampliar).

En este caso, el tráfico se distribuye entre las instancias en buen estado. Para ello, crea comprobaciones de estado TCP que te ayuden a asegurarte de que el tráfico se envía solo a las instancias en buen estado.

El balanceador de carga de red de paso a través externo es un balanceador de carga regional. Todos los componentes del balanceador de carga deben estar en la misma región.

Antes de empezar

Instala Google Cloud CLI. Para obtener una descripción general completa de la herramienta, consulta la información general de la CLI de gcloud. Puedes encontrar comandos relacionados con el balanceo de carga en la referencia de la API y de gcloud.

Si no has ejecutado la CLI de gcloud anteriormente, ejecuta primero el comando gcloud init para autenticarte.

En esta guía se da por hecho que estás familiarizado con bash.

Configurar la red y las subredes

En el ejemplo de esta página se usa una red de VPC en modo personalizado llamada lb-network. Si solo quieres gestionar el tráfico IPv4, puedes usar una red de VPC en modo automático. Sin embargo, el tráfico IPv6 requiere una subred de modo personalizado.

El tráfico IPv6 también requiere una subred de doble pila (stack-type definida como IPV4_IPV6). Cuando creas una subred de doble pila en una red de VPC en modo personalizado, eliges un tipo de acceso IPv6 para la subred. En este ejemplo, asignamos el valor ipv6-access-type al parámetro EXTERNAL de la subred. Esto significa que a las nuevas VMs de esta subred se les pueden asignar tanto direcciones IPv4 externas como direcciones IPv6 externas. Las reglas de reenvío también pueden tener asignadas direcciones IPv4 externas y direcciones IPv6 externas.

Los backends y los componentes del balanceador de carga que se usan en este ejemplo se encuentran en esta región y subred:

  • Región: us-central1
  • Subred: lb-subnet, con el intervalo de direcciones IPv4 principal 10.1.2.0/24. Aunque elijas el intervalo de direcciones IPv4 que se configura en la subred, el intervalo de direcciones IPv6 se asigna automáticamente. Google proporciona un bloque CIDR IPv6 de tamaño fijo (/64).

Para crear la red y la subred de ejemplo, sigue estos pasos.

Consola

Para admitir el tráfico IPv4 e IPv6, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Redes de VPC.

    Ir a redes de VPC

  2. Haz clic en Crear red VPC.

  3. Asigne un Nombre de lb-network.

  4. En la sección Subredes:

    • Elige Personalizado en Modo de creación de subred.
    • En la sección Nueva subred, configura los siguientes campos y haz clic en Hecho:
      • Nombre: lb-subnet
      • Región: us-central1
      • Tipo de pila de IP: IPv4 e IPv6 (pila dual)
      • Intervalo de IPv4: 10.1.2.0/24
        Aunque puedes configurar un intervalo de direcciones IPv4 para la subred, no puedes elegir el intervalo de direcciones IPv6 para la subred. Google proporciona un bloque CIDR IPv6 de tamaño fijo (/64).
      • Tipo de acceso IPv6: Externo
  5. Haz clic en Crear.

Para admitir solo tráfico IPv4, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Redes de VPC.

    Ir a redes de VPC

  2. Haz clic en Crear red VPC.

  3. Asigne un Nombre de lb-network.

  4. En la sección Subredes:

    • Elige Personalizado en Modo de creación de subred.
    • En la sección Nueva subred, configura los siguientes campos y haz clic en Hecho:
      • Nombre: lb-subnet
      • Región: us-central1
      • Tipo de pila de IP: IPv4 (pila única)
      • Intervalo de IPv4: 10.1.2.0/24
  5. Haz clic en Crear.

gcloud

  1. Crea la red VPC en modo personalizado:

    gcloud compute networks create lb-network \
        --subnet-mode=custom
    
  2. En la red lb-network, crea una subred para los backends de la región us-central1.

    Para el tráfico IPv4 e IPv6, usa el siguiente comando para crear una subred de doble pila:

    gcloud compute networks subnets create lb-subnet \
        --stack-type=IPV4_IPV6 \
        --ipv6-access-type=EXTERNAL \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-central1
    

    Para solo tráfico IPv4, usa el siguiente comando:

    gcloud compute networks subnets create lb-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-central1
    

Crea los grupos de instancias gestionados zonales

En este caso de equilibrio de carga, creas dos grupos de instancias gestionados zonales de Compute Engine e instalas un servidor web Apache en cada instancia.

Para gestionar el tráfico IPv4 e IPv6, configura las VMs de backend para que sean de doble pila. Define el valor stack-type de la VM como IPV4_IPV6. Las VMs también heredan el ajuste ipv6-access-type (en este ejemplo, EXTERNAL) de la subred. Para obtener más información sobre los requisitos de IPv6, consulta el artículo Información general sobre el balanceador de carga de red de paso a través externo: reglas de reenvío.

Para usar las VMs que ya tienes como back-ends, actualízalas para que sean de doble pila con el comando gcloud compute instances network-interfaces update.

Las instancias que participan como VMs de backend en balanceadores de carga de red de paso a través externos deben ejecutar el entorno de invitado de Linux, el entorno de invitado de Windows u otros procesos que proporcionen una función equivalente.

Crea el grupo de instancias para el tráfico TCP en el puerto 80

Consola

  1. Crea una plantilla de instancia. En la consola, ve a la página Plantillas de instancia. Google Cloud

    Ir a Plantillas de instancia

    1. Haz clic en Crear plantilla de instancia.
    2. En Nombre, escribe ig-us-template-tcp-80.
    3. Asegúrate de que el disco de arranque esté configurado con una imagen de Debian, como Debian GNU/Linux 12 (bookworm). En estas instrucciones se usan comandos que solo están disponibles en Debian, como apt-get.
    4. Expande la sección Opciones avanzadas.
    5. Despliega la sección Gestión y, a continuación, copia la siguiente secuencia de comandos en el campo Secuencia de comandos de inicio.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
    6. Despliega la sección Redes y, a continuación, especifica lo siguiente:

      1. En Etiquetas de red, añade network-lb-tcp-80.
      2. En Interfaces de red, haz clic en la interfaz predeterminada y configura los siguientes campos:
        1. Red: lb-network
        2. Subred: lb-subnet
    7. Haz clic en Crear.

  2. Crea un grupo de instancias gestionado. Ve a la página Grupos de instancias de la consola de Google Cloud Google Cloud.

    Ir a Grupos de instancias

    1. Haz clic en Crear grupo de instancias.
    2. Selecciona Nuevo grupo de instancias gestionado (sin reconocimiento del estado). Para obtener más información, consulta Grupos de instancias gestionados con o sin reconocimiento del estado.
    3. En Nombre, escribe ig-us-tcp-80.
    4. En Ubicación, selecciona Una sola zona.
    5. En Región, seleccione us-central1.
    6. En Zona, selecciona us-central1-a.
    7. En Plantilla de instancia, selecciona ig-us-template-tcp-80.
    8. Especifica el número de instancias que quieres crear en el grupo.

      En este ejemplo, especifica las siguientes opciones en Escalado automático:

      • En Modo de autoescalado, selecciona Off:do not autoscale.
      • En Número máximo de instancias, introduce 2.
    9. Haz clic en Crear.

gcloud

En las gcloud instrucciones de esta guía se presupone que usas Cloud Shell u otro entorno con bash instalado.

  1. Crea una plantilla de instancia de VM con un servidor HTTP con el comando gcloud compute instance-templates create.

    Para gestionar el tráfico IPv4 e IPv6, usa el siguiente comando.

      gcloud compute instance-templates create ig-us-template-tcp-80 \
          --region=us-central1 \
          --network=lb-network \
          --subnet=lb-subnet \
          --ipv6-network-tier=PREMIUM \
          --stack-type=IPV4_IPV6 \
          --tags=network-lb-tcp-80 \
          --image-family=debian-12 \
          --image-project=debian-cloud \
          --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          a2enmod ssl
          vm_hostname="$(curl -H "Metadata-Flavor:Google" \
          http://metadata.google.internal/computeMetadata/v1/instance/name)"
          echo "Page served from: $vm_hostname" | \
          tee /var/www/html/index.html
          systemctl restart apache2'
    

    Si solo quieres gestionar el tráfico IPv4, usa el siguiente comando.

      gcloud compute instance-templates create ig-us-template-tcp-80 \
          --region=us-central1 \
          --network=lb-network \
          --subnet=lb-subnet \
          --tags=network-lb-tcp-80 \
          --image-family=debian-12 \
          --image-project=debian-cloud \
          --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          a2enmod ssl
          vm_hostname="$(curl -H "Metadata-Flavor:Google" \
                  ://metadata.google.internal/computeMetadata/v1/instance/name)"
          echo "Page served from: $vm_hostname" | \
          tee /var/www/html/index.html
          systemctl restart apache2'
    
  2. Crea un grupo de instancias gestionado en la zona con el comando gcloud compute instance-groups managed create.

      gcloud compute instance-groups managed create ig-us-tcp-80 \
          --zone us-central1-a \
          --size 2 \
          --template ig-us-template-tcp-80
    

Crea el grupo de instancias para el tráfico TCP en el puerto 8080, UDP, ESP e ICMP

Consola

  1. Crea una plantilla de instancia. En la consola, ve a la página Plantillas de instancia. Google Cloud

    Ir a Plantillas de instancia

    1. Haz clic en Crear plantilla de instancia.
    2. En Nombre, escribe ig-us-template-l3-default.
    3. Asegúrate de que el disco de arranque esté configurado con una imagen de Debian, como Debian GNU/Linux 12 (bookworm). En estas instrucciones se usan comandos que solo están disponibles en Debian, como apt-get.
    4. Expande la sección Opciones avanzadas.
    5. Despliega la sección Gestión y, a continuación, copia la siguiente secuencia de comandos en el campo Secuencia de comandos de inicio. La secuencia de comandos de inicio también configura el servidor Apache para que escuche en el puerto 8080 en lugar del puerto 80.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf
      systemctl restart apache2
      
    6. Despliega la sección Redes y, a continuación, especifica lo siguiente:

      1. En Etiquetas de red, añade network-lb-l3-default.
      2. En Interfaces de red, haz clic en la interfaz predeterminada y configura los siguientes campos:
        1. Red: lb-network
        2. Subred: lb-subnet
    7. Haz clic en Crear.

  2. Crea un grupo de instancias gestionado. Ve a la página Grupos de instancias de la consola de Google Cloud Google Cloud.

    Ir a Grupos de instancias

    1. Haz clic en Crear grupo de instancias.
    2. Elige Nuevo grupo de instancias gestionado (sin reconocimiento del estado). Para obtener más información, consulta Grupos de instancias gestionados con o sin reconocimiento del estado.
    3. En Nombre, escribe ig-us-l3-default.
    4. En Ubicación, selecciona Una sola zona.
    5. En Región, seleccione us-central1.
    6. En Zona, selecciona us-central1-c.
    7. En Plantilla de instancia, selecciona ig-us-template-l3-default.
    8. Especifica el número de instancias que quieres crear en el grupo.

      En este ejemplo, especifica las siguientes opciones en Escalado automático:

      • En Modo de autoescalado, selecciona Off:do not autoscale.
      • En Número máximo de instancias, introduce 2.
    9. Haz clic en Crear.

gcloud

En las gcloud instrucciones de esta guía se presupone que usas Cloud Shell u otro entorno con bash instalado.

  1. Crea una plantilla de instancia de VM con un servidor HTTP con el comando gcloud compute instance-templates create.

    La secuencia de comandos de inicio también configura el servidor Apache para que escuche en el puerto 8080 en lugar del puerto 80.

    Para gestionar el tráfico IPv4 e IPv6, usa el siguiente comando.

      gcloud compute instance-templates create ig-us-template-l3-default \
          --region=us-central1 \
          --network=lb-network \
          --subnet=lb-subnet \
          --ipv6-network-tier=PREMIUM \
          --stack-type=IPV4_IPV6 \
          --tags=network-lb-l3-default \
          --image-family=debian-12 \
          --image-project=debian-cloud \
          --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          a2enmod ssl
          vm_hostname="$(curl -H "Metadata-Flavor:Google" \
          http://metadata.google.internal/computeMetadata/v1/instance/name)"
          echo "Page served from: $vm_hostname" | \
          tee /var/www/html/index.html
          sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf
          systemctl restart apache2'
    

    Si solo quieres gestionar el tráfico IPv4, usa el siguiente comando:

      gcloud compute instance-templates create ig-us-template-l3-default \
          --region=us-central1 \
          --network=lb-network \
          --subnet=lb-subnet \
          --tags=network-lb-l3-default \
          --image-family=debian-12 \
          --image-project=debian-cloud \
          --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          a2enmod ssl
          vm_hostname="$(curl -H "Metadata-Flavor:Google" \
          http://metadata.google.internal/computeMetadata/v1/instance/name)"
          echo "Page served from: $vm_hostname" | \
          tee /var/www/html/index.html
          sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf
          systemctl restart apache2'
    
  2. Crea un grupo de instancias gestionado en la zona con el comando gcloud compute instance-groups managed create.

      gcloud compute instance-groups managed create ig-us-l3-default \
          --zone us-central1-c \
          --size 2 \
          --template ig-us-template-l3-default
    

Configurar reglas de cortafuegos

Crea las siguientes reglas de cortafuegos:

  • Reglas de cortafuegos que permiten que el tráfico TCP externo llegue a las instancias de backend del grupo de instancias ig-us-tcp-80 en el puerto 80 (con la etiqueta de destino network-lb-tcp-80). Crea reglas de cortafuegos independientes para permitir el tráfico IPv4 e IPv6.
  • Reglas de cortafuegos que permiten que otro tráfico externo (TCP en el puerto 8080, UDP, ESP e ICMP) llegue a las instancias de backend del grupo de instancias ig-us-l3-default (con la etiqueta de destino network-lb-l3-default). Crea reglas de cortafuegos independientes para permitir el tráfico IPv4 e IPv6.

En este ejemplo, se crean reglas de cortafuegos que permiten que el tráfico de todos los intervalos de origen llegue a las instancias de backend en los puertos configurados. Si quieres crear reglas de cortafuegos independientes específicamente para las sondas de comprobación del estado, usa los intervalos de direcciones IP de origen que se documentan en el artículo Descripción general de las comprobaciones del estado: intervalos de IP de las sondas y reglas de cortafuegos.

Consola

  1. En la Google Cloud consola, ve a la página Políticas de cortafuegos.

    Ir a Políticas de cortafuegos

  2. Para permitir que el tráfico TCP IPv4 llegue a los backends del grupo de instancias ig-us-tcp-80, crea la siguiente regla de cortafuegos.

    1. Haz clic en Crear regla de cortafuegos.
    2. Asigne un Nombre de allow-network-lb-tcp-80-ipv4.
    3. Selecciona la Red a la que se aplica la regla de cortafuegos (Predeterminada).
    4. En Objetivos, seleccione Etiquetas de destino especificadas.
    5. En el campo Etiquetas de destino, introduce network-lb-tcp-80.
    6. En Filtro de origen, elija Intervalos de IPv4.
    7. Define Intervalos de IPv4 de origen como 0.0.0.0/0, lo que permite el tráfico de cualquier origen. De esta forma, tanto el tráfico externo como las sondas de comprobación del estado pueden llegar a las instancias de backend.
    8. En Protocolos y puertos, selecciona Protocolos y puertos especificados. A continuación, marque la casilla TCP e introduzca 80.
    9. Haz clic en Crear. La consola puede tardar unos instantes en mostrar la nueva regla de cortafuegos, o bien puede que tengas que hacer clic en Actualizar para verla.
  3. Para permitir que el tráfico IPv4 UDP, ESP e ICMP llegue a los backends del grupo de instancias ig-us-l3-default, crea la siguiente regla de cortafuegos.

    1. Haz clic en Crear regla de cortafuegos.
    2. Asigne un Nombre de allow-network-lb-l3-default-ipv4.
    3. Selecciona la Red a la que se aplica la regla de cortafuegos (Predeterminada).
    4. En Objetivos, seleccione Etiquetas de destino especificadas.
    5. En el campo Etiquetas de destino, introduce network-lb-l3-default.
    6. En Filtro de origen, elija Intervalos de IPv4.
    7. En Intervalos IPv4 de origen, introduce 0.0.0.0/0 para permitir el tráfico de cualquier origen. De esta forma, tanto el tráfico externo como las sondas de comprobación del estado pueden llegar a las instancias de backend.
    8. En Protocolos y puertos, selecciona Protocolos y puertos especificados.
      1. Selecciona la casilla TCP e introduce 8080.
      2. Seleccione la casilla UDP.
      3. Selecciona la casilla Otro e introduce esp, icmp.
    9. Haz clic en Crear. La consola puede tardar unos instantes en mostrar la nueva regla de cortafuegos, o bien puede que tengas que hacer clic en Actualizar para verla.
  4. Para permitir que el tráfico TCP IPv6 llegue a los backends del ig-us-tcp-80grupo de instancias, crea la siguiente regla de cortafuegos.

    1. Haz clic en Crear regla de cortafuegos.
    2. Asigne un Nombre de allow-network-lb-tcp-80-ipv6.
    3. Selecciona la Red a la que se aplica la regla de cortafuegos (Predeterminada).
    4. En Objetivos, seleccione Etiquetas de destino especificadas.
    5. En el campo Etiquetas de destino, introduce network-lb-tcp-80.
    6. En Filtro de origen, elija Intervalos de IPv6.
    7. En Intervalos de IPv6 de origen, elija ::/0 para permitir el tráfico de cualquier origen. De esta forma, tanto el tráfico externo como las sondas de comprobación del estado pueden llegar a las instancias de backend.
    8. En Protocolos y puertos, selecciona Protocolos y puertos especificados. Marca la casilla situada junto a TCP e introduce 80.
    9. Haz clic en Crear. La consola puede tardar unos instantes en mostrar la nueva regla de cortafuegos, o bien puede que tengas que hacer clic en Actualizar para verla.
  5. Para permitir que el tráfico IPv6 UDP, ESP e ICMPv6 llegue a los backends del grupo de instancias ig-us-l3-default, crea la siguiente regla de cortafuegos. Esta regla de cortafuegos también permite que las sondas de comprobación del estado TCP lleguen a las instancias en el puerto 8080.

    1. Haz clic en Crear regla de cortafuegos.
    2. Asigne un Nombre de allow-network-lb-l3-default-ipv6.
    3. Selecciona la Red a la que se aplica la regla de cortafuegos (Predeterminada).
    4. En Objetivos, seleccione Etiquetas de destino especificadas.
    5. En el campo Etiquetas de destino, introduce network-lb-l3-default.
    6. En Filtro de origen, elija Intervalos de IPv6.
    7. En Intervalos de IPv6 de origen, elija ::/0 para permitir el tráfico de cualquier origen. De esta forma, tanto el tráfico externo como las sondas de comprobación del estado pueden llegar a las instancias de backend.
    8. En Protocolos y puertos, selecciona Protocolos y puertos especificados.
      1. Marca la casilla situada junto a TCP e introduce 8080.
      2. Haga clic en la casilla situada junto a UDP.
      3. Marca la casilla situada junto a Otro e introduce esp, 58.
    9. Haz clic en Crear. La consola puede tardar unos instantes en mostrar la nueva regla de cortafuegos, o bien puede que tengas que hacer clic en Actualizar para verla.

gcloud

  1. Para permitir que el tráfico TCP IPv4 llegue a los backends del grupo de instancias ig-us-tcp-80, crea la siguiente regla de cortafuegos.

    gcloud compute firewall-rules create allow-network-lb-tcp-80-ipv4 \
        --network=lb-network \
        --target-tags network-lb-tcp-80 \
        --allow tcp:80 \
        --source-ranges=0.0.0.0/0
    
  2. Para permitir que el tráfico IPv4 UDP, ESP e ICMP llegue a los backends del grupo de instancias ig-us-l3-default, crea la siguiente regla de cortafuegos. Esta regla de cortafuegos también permite que las sondas de comprobación del estado TCP lleguen a las instancias en el puerto 8080.

    gcloud compute firewall-rules create allow-network-lb-l3-default-ipv4 \
        --network=lb-network \
        --target-tags network-lb-l3-default \
        --allow tcp:8080,udp,esp,icmp \
        --source-ranges=0.0.0.0/0
    
  3. Para permitir que el tráfico TCP IPv6 llegue a los backends del ig-us-tcp-80grupo de instancias, crea la siguiente regla de cortafuegos.

    gcloud compute firewall-rules create allow-network-lb-tcp-80-ipv6 \
        --network=lb-network \
        --target-tags network-lb-tcp-80 \
        --allow tcp:80 \
        --source-ranges=::/0
    
  4. Para permitir que el tráfico IPv6 UDP, ESP e ICMPv6 llegue a los backends del grupo de instancias ig-us-l3-default, crea la siguiente regla de cortafuegos. Esta regla de cortafuegos también permite que las sondas de comprobación del estado TCP lleguen a las instancias en el puerto 8080.

    gcloud compute firewall-rules create allow-network-lb-l3-default-ipv6 \
        --network=lb-network \
        --target-tags network-lb-l3-default \
        --allow tcp:8080,udp,esp,58 \
        --source-ranges=::/0
    

Configurar los balanceadores de carga

A continuación, configura dos balanceadores de carga. Configura ambos balanceadores de carga para que usen la misma dirección IP externa en las reglas de reenvío. Un balanceador de carga gestiona el tráfico TCP en el puerto 80 y el otro gestiona el tráfico TCP, UDP, ESP e ICMP en el puerto 8080.

Cuando configuras un balanceador de carga, tus instancias de máquina virtual de backend reciben paquetes destinados a la dirección IP externa estática que configures. Si usas una imagen proporcionada por Compute Engine, tus instancias se configurarán automáticamente para gestionar esta dirección IP. Si usas otra imagen, debes configurar esta dirección como alias en eth0 o como bucle de retorno en cada instancia.

Para configurar dos balanceadores de carga, siga estas instrucciones.

Consola

Iniciar la configuración

  1. En la Google Cloud consola, ve a la página Balanceo de carga.

    Ir a Balanceo de carga

  2. Haga clic en Crear balanceador de carga.
  3. En Tipo de balanceador de carga, selecciona Balanceador de carga de red (TCP/UDP/SSL) y haz clic en Siguiente.
  4. En Proxy o pasarela, selecciona Balanceador de carga de pasarela y haz clic en Siguiente.
  5. En Público o interno, selecciona Público (externo) y haz clic en Siguiente.
  6. Haz clic en Configurar.

Configuración básica

  1. En el campo Name (Nombre), introduce el nombre backend-service-tcp-80 para el nuevo balanceador de carga.
  2. En la lista Región, selecciona us-central1.

Configuración de backend

  1. Haz clic en Configuración de backend.
  2. En la página Configuración de backend, haz los siguientes cambios:
    1. En la sección Nuevo backend, selecciona el tipo de pila de IP. Si has creado back-ends de doble pila para gestionar el tráfico IPv4 e IPv6, selecciona IPv4 e IPv6 (doble pila). Para gestionar solo el tráfico IPv4, selecciona IPv4 (pila única).
    2. En la lista Grupo de instancias, selecciona ig-us-tcp-80 y, a continuación, haz clic en Hecho.
    3. En la lista Comprobación del estado, haz clic en Crear comprobación del estado y, a continuación, introduce la siguiente información:
      • Nombre: tcp-health-check-80
      • Protocolo: TCP
      • Puerto: 80
    4. Haz clic en Guardar.
  3. Comprueba que haya una marca de verificación azul junto a Configuración del backend antes de continuar.

Configuración de frontend

  1. Haz clic en Configuración de frontend.
  2. En el campo Name (Nombre), introduce forwarding-rule-tcp-80.
  3. Para gestionar el tráfico IPv4, sigue estos pasos:
    1. En Versión de IP, selecciona IPv4.
    2. En la sección Propósito de la IP interna, en la lista Dirección IP, selecciona Crear dirección IP.
      1. En el campo Name (Nombre), introduce network-lb-ipv4.
      2. Haz clic en Reservar.
    3. En Puertos, elige Único. En el campo Número de puerto, introduce 80.
    4. Haz clic en Listo.
  4. Para gestionar el tráfico IPv6, sigue estos pasos:

    1. En Versión de IP, selecciona IPv6.
    2. En Subred, selecciona lb-subnet.
    3. En la lista Intervalo de IPv6, selecciona Crear dirección IP.
      1. En el campo Name (Nombre), introduce network-lb-ipv6.
      2. Haz clic en Reservar.
    4. En Puertos, elige Único. En el campo Número de puerto, introduce 80.
    5. Haz clic en Listo.

    Un círculo azul con una marca de verificación a la izquierda de Configuración del frontend indica que la configuración se ha completado correctamente.

Revisar la configuración

  1. Haz clic en Revisar y finalizar.
  2. Revisa los ajustes de configuración de tu balanceador de carga.
  3. Opcional: Haz clic en Código equivalente para ver la solicitud de la API REST que se usará para crear el balanceador de carga.
  4. Haz clic en Crear.

    En la página de balanceo de carga, en la columna Backend de tu nuevo balanceador de carga, verás una marca de verificación verde que indica que el nuevo balanceador de carga está en buen estado.

Crear el segundo balanceador de carga

Iniciar la configuración

  1. En la Google Cloud consola, ve a la página Balanceo de carga.

    Ir a Balanceo de carga

  2. Haga clic en Crear balanceador de carga.
  3. En Tipo de balanceador de carga, selecciona Balanceador de carga de red (TCP/UDP/SSL) y haz clic en Siguiente.
  4. En Proxy o pasarela, selecciona Balanceador de carga de pasarela y haz clic en Siguiente.
  5. En Público o interno, selecciona Público (externo) y haz clic en Siguiente.
  6. Haz clic en Configurar.

Configuración básica

  1. En el campo Name (Nombre), introduce el nombre backend-service-l3-default para el nuevo balanceador de carga.
  2. En la lista Región, selecciona us-central1.

Configuración de backend

  1. Haz clic en Configuración de backend.
  2. En la página Configuración de backend, haz los siguientes cambios:
    1. En la sección Nuevo backend, selecciona el tipo de pila de IP. Si has creado back-ends de doble pila para gestionar el tráfico IPv4 e IPv6, selecciona IPv4 e IPv6 (doble pila). Para gestionar solo el tráfico IPv4, selecciona IPv4 (pila única).
    2. En la lista Grupo de instancias, selecciona ig-us-l3-default y, a continuación, haz clic en Hecho.
    3. En la lista Protocolos, selecciona L3 (varios protocolos).
    4. En la lista Comprobación del estado, haz clic en Crear comprobación del estado y, a continuación, introduce la siguiente información:
      • Nombre: tcp-health-check-8080
      • Protocolo: TCP
      • Puerto: 8080
    5. Haz clic en Guardar.
  3. Comprueba que haya una marca de verificación azul junto a Configuración del backend antes de continuar.

Configuración de frontend

  1. Haz clic en Configuración de frontend.
  2. En el campo Name (Nombre), introduce forwarding-rule-l3-default.
  3. Para gestionar el tráfico IPv4, sigue estos pasos:
    1. En Versión de IP, selecciona IPv4.
    2. En la sección Propósito de la IP interna, en la lista Dirección IP, selecciona Crear dirección IP.
      1. En el campo Name (Nombre), introduce network-lb-ipv4.
      2. Haz clic en Reservar.
    3. En la lista Protocol (Protocolo), selecciona L3 (Multiple protocols) (L3 [Varios protocolos]).
    4. En Puertos, elige Todos.
    5. Haz clic en Listo.
  4. Para gestionar el tráfico IPv6, sigue estos pasos:

    1. En Versión de IP, selecciona IPv6.
    2. En Subred, selecciona lb-subnet.
    3. En la lista Intervalo de IPv6, selecciona Crear dirección IP.
      1. En el campo Name (Nombre), introduce network-lb-ipv6.
      2. Haz clic en Reservar.
    4. En el campo Protocol (Protocolo), selecciona L3 (Multiple protocols) (L3 [Varios protocolos]).
    5. En Puertos, selecciona Todos.
    6. Haz clic en Listo.

    Un círculo azul con una marca de verificación a la izquierda de Configuración del frontend indica que la configuración se ha completado correctamente.

Revisar la configuración

  1. Haz clic en Revisar y finalizar.
  2. Revisa los ajustes de configuración de tu balanceador de carga.
  3. Opcional: Haz clic en Código equivalente para ver la solicitud de la API REST que se usará para crear el balanceador de carga.
  4. Haz clic en Crear.

    En la página de balanceo de carga, en la columna Backend de tu nuevo balanceador de carga, verás una marca de verificación verde que indica que el nuevo balanceador de carga está en buen estado.

gcloud

  1. Reserva una dirección IP externa estática.

    Para el tráfico IPv4: crea una dirección IP externa estática para tus balanceadores de carga.

    gcloud compute addresses create network-lb-ipv4 \
        --region us-central1
    

    Para el tráfico IPv6: crea un intervalo de direcciones IPv6 externas estáticas para tus balanceadores de carga. La subred utilizada debe ser una subred de doble pila con un intervalo de subred IPv6 externo.

    gcloud compute addresses create network-lb-ipv6 \
        --region us-central1 \
        --subnet lb-subnet \
        --ip-version IPV6 \
        --endpoint-type NETLB
    
  2. Crea una comprobación del estado TCP para el puerto 80. Esta comprobación del estado se usa para verificar el estado de los backends del grupo de instancias ig-us-tcp-80.

    gcloud compute health-checks create tcp tcp-health-check-80 \
        --region us-central1 \
        --port 80
    
  3. Crea una comprobación del estado TCP para el puerto 8080. Esta comprobación del estado se usa para verificar el estado de los backends del grupo de instancias ig-us-l3-default.

    gcloud compute health-checks create tcp tcp-health-check-8080 \
        --region us-central1 \
        --port 8080
    
  4. Crea el primer balanceador de carga para el tráfico TCP en el puerto 80.

    1. Crea un servicio de backend con el protocolo TCP.

      gcloud compute backend-services create backend-service-tcp-80 \
          --protocol TCP \
          --health-checks tcp-health-check-80 \
          --health-checks-region us-central1 \
          --region us-central1
      
    2. Añade el grupo de instancias de backend al servicio de backend.

      gcloud compute backend-services add-backend backend-service-tcp-80 \
          --instance-group ig-us-tcp-80 \
          --instance-group-zone us-central1-a \
          --region us-central1
      
    3. Para el tráfico IPv4: crea una regla de reenvío para dirigir el tráfico TCP entrante del puerto 80 al servicio de backend. TCP es el protocolo de regla de reenvío predeterminado y no es necesario configurarlo de forma explícita.

      Usa la dirección IP reservada en el paso 1 como dirección IP externa estática del balanceador de carga.

      gcloud compute forwarding-rules create forwarding-rule-tcp-80 \
          --load-balancing-scheme external \
          --region us-central1 \
          --ports 80 \
          --address network-lb-ipv4 \
          --backend-service backend-service-tcp-80
      
    4. Para el tráfico IPv6: crea una regla de reenvío para dirigir el tráfico TCP entrante del puerto 80 al servicio de backend. TCP es el protocolo de regla de reenvío predeterminado y no es necesario configurarlo de forma explícita.

      Usa el intervalo de direcciones IPv6 reservado en el paso 1 como dirección IP externa estática del balanceador de carga. La subred utilizada debe ser una subred de doble pila con un intervalo de subred IPv6 externa.

      gcloud compute forwarding-rules create forwarding-rule-tcp-80 \
          --load-balancing-scheme external \
          --region us-central1 \
          --network-tier PREMIUM \
          --ip-version IPV6 \
          --subnet lb-subnet \
          --address network-lb-ipv6 \
          --ports 80 \
          --backend-service backend-service-tcp-80
      
  5. Crea el segundo balanceador de carga para el tráfico TCP en el puerto 8080, UDP, ESP e ICMP.

    1. Crea un servicio de backend con el protocolo UNSPECIFIED.

      gcloud compute backend-services create backend-service-l3-default \
          --protocol UNSPECIFIED \
          --health-checks tcp-health-check-8080 \
          --health-checks-region us-central1 \
          --region us-central1
      
    2. Añade el grupo de instancias de backend al servicio de backend.

      gcloud compute backend-services add-backend backend-service-l3-default \
          --instance-group ig-us-l3-default \
          --instance-group-zone us-central1-c \
          --region us-central1
      
    3. Para el tráfico IPv4: crea una regla de reenvío con el protocolo L3_DEFAULT para gestionar el resto del tráfico de protocolos IP admitidos (TCP en el puerto 8080, UDP, ESP e ICMP). Todos los puertos deben configurarse con L3_DEFAULT reglas de reenvío.

      Usa la misma dirección IPv4 externa que usaste para el balanceador de carga anterior.

      gcloud compute forwarding-rules create forwarding-rule-l3-default \
          --load-balancing-scheme external \
          --region us-central1 \
          --ports all \
          --ip-protocol L3_DEFAULT \
          --address network-lb-ipv4 \
          --backend-service backend-service-l3-default
      
    4. Para el tráfico IPv6: crea una regla de reenvío con el protocolo L3_DEFAULT para gestionar el resto del tráfico de protocolos IP admitidos (TCP en el puerto 8080, UDP, ESP e ICMP). Todos los puertos deben configurarse con L3_DEFAULT reglas de reenvío.

      Usa el intervalo de direcciones IPv6 reservado en el paso 1 como dirección IP externa estática del balanceador de carga. La subred utilizada debe ser una subred de doble pila con un intervalo de subred IPv6 externa.

      gcloud compute forwarding-rules create forwarding-rule-l3-default \
          --load-balancing-scheme external \
          --region us-central1 \
          --network-tier PREMIUM \
          --ip-version IPV6 \
          --subnet lb-subnet \
          --address network-lb-ipv6 \
          --ports all \
          --ip-protocol L3_DEFAULT \
          --backend-service backend-service-l3-default
      

Probar el balanceador de carga

Ahora que el servicio de balanceo de carga está configurado, puedes empezar a enviar tráfico a la dirección IP externa del balanceador de carga y ver cómo se distribuye el tráfico a las instancias de backend.

Buscar la dirección IP externa del balanceador de carga

Consola

  1. En la Google Cloud consola, ve a la página de balanceo de carga Componentes del balanceo de carga.

    Ir a Componentes del balanceo de carga

  2. En la pestaña Reglas de reenvío, busque las reglas de reenvío que usa el balanceador de carga.

  3. En la columna Dirección IP, anota la dirección IP externa que aparece en cada regla de reenvío IPv4 e IPv6.

gcloud: IPv4

Introduce el siguiente comando para ver la dirección IP externa de la regla de reenvío que usa el balanceador de carga.

gcloud compute forwarding-rules describe forwarding-rule-tcp-80 \
    --region us-central1

En este ejemplo se usa la misma dirección IP para ambas reglas de reenvío de IPv4, por lo que también funciona forwarding-rule-l3-default.

gcloud: IPv6

Introduce el siguiente comando para ver la dirección IPv6 externa de la regla de reenvío forwarding-rule-tcp-80 que usa el balanceador de carga.

gcloud compute forwarding-rules describe forwarding-rule-tcp-80 \
    --region us-central1

En este ejemplo se usa la misma dirección IP para ambas reglas de reenvío de IPv6, por lo que también funciona forwarding-rule-l3-default.

Enviar tráfico al balanceador de carga

Este procedimiento envía tráfico externo al balanceador de carga. Ejecuta las siguientes pruebas para asegurarte de que el tráfico TCP del puerto 80 se balancea de carga mediante el grupo de instancias ig-us-tcp-80, mientras que el resto del tráfico (TCP en el puerto 8080, UDP, ESP e ICMP) lo gestiona el grupo de instancias ig-us-l3-default.

Verificar el comportamiento con solicitudes TCP en el puerto 80

  1. Envía solicitudes web (a través de TCP en el puerto 80) al balanceador de carga mediante curl para ponerte en contacto con su dirección IP.

    • En los clientes con conectividad IPv4, ejecuta el siguiente comando:

      while true; do curl -m1 IP_ADDRESS; done
      
    • En los clientes con conectividad IPv6, ejecuta el siguiente comando:

      while true; do curl -m1 http://IPV6_ADDRESS; done
      

      Por ejemplo, si la dirección IPv6 asignada es [2001:db8:1:1:1:1:1:1/96], el comando es similar al siguiente:

      while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]; done
      
  2. Fíjate en el texto devuelto por el comando curl. El nombre de la VM de backend que genera la respuesta se muestra en ese texto. Por ejemplo, Page served from: VM_NAME. Las respuestas solo proceden de las instancias del grupo de instancias ig-us-tcp-80.

    Si tu respuesta no tiene éxito al principio, es posible que tengas que esperar unos 30 segundos para que la configuración se cargue por completo y para que tus instancias se marquen como correctas antes de volver a intentarlo.

Verificar el comportamiento con solicitudes TCP en el puerto 8080

Envía solicitudes web (a través de TCP en el puerto 8080) al balanceador de carga mediante curl para ponerte en contacto con su dirección IP.

  • En los clientes con conectividad IPv4, ejecuta el siguiente comando:

    while true; do curl -m1 IPV4_ADDRESS:8080; done
    
  • En los clientes con conectividad IPv6, ejecuta el siguiente comando:

    while true; do curl -m1 http://IPV6_ADDRESS; done
    

    Por ejemplo, si la dirección IPv6 asignada es [2001:db8:1:1:1:1:1:1/96], el comando es similar al siguiente:

    while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]:8080; done
    

Fíjate en el texto devuelto por el comando curl. Las respuestas solo proceden de las instancias del grupo de instancias ig-us-l3-default.

Esto indica que el tráfico enviado a la dirección IP del balanceador de carga en el puerto 8080 solo lo gestionan los backends del grupo de instancias ig-us-l3-default.

Verificar el comportamiento con solicitudes ICMP

Para verificar el comportamiento con el tráfico ICMP, captura la salida del comando tcpdump para confirmar que solo las VMs de backend del grupo de instancias ig-us-l3-default gestionan las solicitudes ICMP enviadas al balanceador de carga.

  1. Usa SSH para conectarte a las VMs de backend.

    1. En la consola de Google Cloud , ve a la página Instancias de VM.

      Ve a la página Instancias de VM.

    2. En la lista de instancias de máquina virtual, haz clic en SSH en la fila de la instancia a la que quieras conectarte.

  2. Ejecuta el siguiente comando para usar tcpdump y empezar a monitorizar el tráfico ICMP.

    sudo tcpdump icmp -w ~/icmpcapture.pcap -s0 -c 10000
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    

    Deja abierta la ventana de SSH.

  3. Repite los pasos 1 y 2 para las cuatro VMs backend.

  4. Realiza solicitudes ICMP al balanceador de carga.

    Para probar las respuestas IPv4, usa ping para contactar con la dirección IPv4 del balanceador de carga.

    ping IPV4_ADDRESS
    

    Para probar las respuestas IPv6, usa ping6 para contactar con la dirección IPv6 del balanceador de carga.

    ping6 IPV6_ADDRESS
    

    Por ejemplo, si la dirección IPv6 asignada es [2001:db8:1:1:1:1:1:1/96], el comando es similar al siguiente:

    ping6 2001:db8:1:1:1:1:1:1
    
  5. Vuelve a la ventana SSH abierta de cada VM y detén el comando de captura tcpdump. Para ello, puedes usar Ctrl + C.

  6. En cada VM, comprueba el resultado del comando tcpdump en el archivo icmpcapture.pcap.

    sudo tcpdump -r ~/icmpcapture.pcap -n
    

    En las VMs de backend del grupo de instancias ig-us-l3-default, verás entradas de archivo similares a las siguientes:

    reading from file /home/[user-directory]/icmpcapture.pcap, link-type EN10MB (Ethernet)
    22:13:07.814486 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 1, length 64
    22:13:07.814513 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 1, length 64
    22:13:08.816150 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 2, length 64
    22:13:08.816175 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 2, length 64
    22:13:09.817536 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 3, length 64
    22:13:09.817560 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 3, length 64
    ...
    

    En las VMs de backend del grupo de instancias ig-us-tcp-80, verá que no se han recibido paquetes y que el archivo está en blanco:

    reading from file /home/[user-directory]/icmpcapture.pcap, link-type EN10MB (Ethernet)
    

Opciones de configuración adicionales

Crear una regla de reenvío IPv6 con BYOIP

El balanceador de carga creado en los pasos anteriores está configurado con reglas de reenvío con IP version como IPv4 o IPv6. En esta sección se proporcionan instrucciones para crear una regla de reenvío de IPv6 con direcciones IP propias (BYOIP).

La función Incorporar tus propias IPs te permite aprovisionar y usar tus propias direcciones IPv6 públicas para los recursos de Google Cloud . Para obtener más información, consulta el artículo Traer tus propias direcciones IP.

Antes de configurar una regla de reenvío de IPv6 con direcciones BYOIP, debes completar los siguientes pasos:

  1. Crear un prefijo IPv6 público anunciado
  2. Crear prefijos públicos delegados
  3. Crear subprefijos IPv6
  4. Anuncia el prefijo

Para crear una regla de reenvío, sigue estos pasos:

Consola

  1. En la Google Cloud consola, ve a la página Balanceo de carga.

    Ve a Balanceo de carga.

  2. Haga clic en el nombre del balanceador de carga que quiera modificar.
  3. Haz clic en Editar.
  4. Haz clic en Configuración de frontend.
  5. Haz clic en Añadir IP y puerto de frontend.
  6. En la sección IP de frontend y puerto nuevos, especifica lo siguiente:
    1. Selecciona el protocolo que necesites.
    2. En el campo Versión de IP, selecciona IPv6.
    3. En el campo Source of IPv6 range (Origen del intervalo de IPv6), selecciona BYOIP.
    4. En la lista Recogida de IPs, selecciona un subprefijo creado en los pasos anteriores con la opción de regla de reenvío habilitada.
    5. En el campo Intervalo de IPv6, introduce el intervalo de direcciones IPv6. El prefijo del intervalo de direcciones IPv6 debe coincidir con la longitud del prefijo asignable especificada por el subprefijo asociado.
    6. En el campo Puertos, introduce un número de puerto.
    7. Haz clic en Listo.
  7. Haz clic en Actualizar.

gcloud

Para crear la regla de reenvío, usa el comando gcloud compute forwarding-rules create:

gcloud compute forwarding-rules create FWD_RULE_NAME \
    --load-balancing-scheme EXTERNAL \
    --ip-protocol PROTOCOL \
    --ports ALL \
    --ip-version IPV6 \
    --region REGION_A \
    --address IPV6_CIDR_RANGE  \
    --backend-service BACKEND_SERVICE \
    --ip-collection PDP_NAME

Haz los cambios siguientes:

  • FWD_RULE_NAME: el nombre de la regla de reenvío
  • PROTOCOL: el protocolo IP de la regla de reenvío. El valor predeterminado es TCP. En este ejemplo, el protocolo IP puede ser TCP o L3_DEFAULT.
  • REGION_A: región de la regla de reenvío
  • IPV6_CIDR_RANGE: el intervalo de direcciones IPv6 al que sirve la regla de reenvío. El prefijo del intervalo de direcciones IPv6 debe coincidir con la longitud del prefijo asignable especificada por el subprefijo asociado.
  • BACKEND_SERVICE: el nombre del servicio de backend
  • PDP_NAME: el nombre del prefijo público delegado. El PDP debe ser un subprefijo en el modo EXTERNAL_IPV6_FORWARDING_RULE_CREATION.

Siguientes pasos