Migra un balanceador de cargas de red de transferencia externo del grupo de destino al servicio de backend

En esta guía, se proporcionan instrucciones para migrar un balanceador de cargas de red de transferencia externo existente de un backend de grupo de destino a un servicio de backend regional.

Migrar a un servicio de backend regional te permite aprovechar características como las verificaciones de estado no heredadas (para TCP, SSL, HTTP, HTTPS y HTTP/2), los grupos de instancias administrados, el vaciado de conexiones y la política de conmutación por error.


Para seguir la guía paso a paso sobre esta tarea directamente en la consola de Google Cloud, haz clic en Guiarme:

GUIARME


En esta guía, se explica cómo migrar el siguiente balanceador de cargas de red de transferencia externo de ejemplo basado en grupos de destino para usar un servicio de backend regional.

Antes: Balanceador de cargas de red de transferencia externo con un grupo de destino
Antes: Balanceador de cargas de red de transferencia externo con un grupo de destino

La implementación de tu balanceador de cargas de red de transferencia externo basado en servicios de backend se verá así.

Después: Balanceador de cargas de red de transferencia externo con un servicio de backend regional
Después: Balanceador de cargas de red de transferencia externo con un servicio de backend regional

En este ejemplo, se supone que tienes un balanceador de cargas de red de transferencia externo tradicional basado en grupos de destino con dos instancias en la zona us-central-1a y dos instancias en la zona us-central-1c.

Los pasos de alto nivel necesarios para dicha transición son los siguientes:

  1. Agrupa las instancias del grupo de destino.

    Los servicios de backend solo funcionan con grupos de instancias administrados o no administrados. Ten en cuenta que, si bien no existe un límite para la cantidad de instancias que se pueden colocar en un solo grupo de destino, los grupos de instancias tienen un tamaño máximo. Si tu grupo de destino tiene más de esta cantidad máxima de instancias, deberás dividir sus backends en varios grupos de instancias.

    Si tu implementación existente incluye un grupo de destino de copia de seguridad, crea un grupo de instancias separado para esas instancias. Este grupo de instancias se configura como un grupo de conmutación por error.

  2. Crea un servicio de backend regional.

    Si tu implementación incluye un grupo de destino de copia de seguridad, deberás especificar una proporción de conmutación por error cuando crees el servicio de backend. Debería coincidir con la proporción de conmutación por error que se configuró antes para la implementación del grupo de destino.

  3. Agrega grupos de instancias (creados previamente) al servicio de backend.

    Si tu implementación incluye un grupo de destino de copia de seguridad, marca el grupo de instancias de conmutación por error correspondiente con una marca --failover cuando se agregue al servicio de backend.

  4. Configura una regla de reenvío que apunte al nuevo servicio de backend.

    Puedes elegir una de las siguientes opciones:

    • Actualiza la regla de reenvío existente para que apunte al servicio de backend (recomendado).

    • Crea una regla de reenvío nueva que apunte al servicio de backend. Esto requiere que crees una dirección IP nueva para el frontend del balanceador de cargas. Luego, modifica la configuración de DNS para realizar la transición de forma fluida desde la dirección IP del balanceador de cargas basado en un grupo de destino anterior a la dirección IP nueva.

Antes de comenzar

Instala Google Cloud CLI. Para obtener una descripción general completa de la herramienta, consulta la guía de la herramienta de gcloud. Puedes encontrar comandos relacionados con el balanceo de cargas en el grupo de comandos gcloud compute.

Si nunca ejecutaste Google Cloud CLI, primero ejecuta gcloud init para autenticarte.

En esta guía, suponemos que estás familiarizado con Bash.

Identifica los backends y la regla de reenvío que se migrarán

  1. Para enumerar todos los grupos de destino, ejecuta el siguiente comando en Cloud Shell:

    gcloud compute target-pools list
    

    Toma nota del nombre del grupo de destino desde el que deseas migrar. Más adelante, se denominará TARGET_POOL_NAME.

  2. Para enumerar todas las instancias de VM en el grupo de destino TARGET_POOL_NAME, ejecuta el comando en Cloud Shell:

    gcloud compute target-pools describe TARGET_POOL_NAME \
      --region=us-central1
    

    Anota los nombres de las instancias de VM. Más adelante, se denomina a estos nombres como BACKEND_INSTANCE1, BACKEND_INSTANCE2, BACKEND_INSTANCE3 y BACKEND_INSTANCE4.

  3. Para enumerar las reglas de reenvío en el balanceador de cargas de red de transferencia externo, ejecuta el comando en Cloud Shell:

    gcloud compute forwarding-rules list
      --filter="target: ( TARGET_POOL_NAME )"
    

    Toma nota del nombre de la regla de reenvío. Más adelante, se denominará FORWARDING_RULE.

Crea grupos de instancias zonales no administrados

Crea un grupo de instancias no administrado zonal para cada una de las zonas en las que tienes backends. Según tu configuración, podrás dividir tus instancias en cualquier cantidad de grupos, según sea necesario. Para nuestro ejemplo, solo usamos dos grupos de instancias, uno para cada zona, y colocamos todas las VM de backend en una zona determinada del grupo de instancias asociado.

En este ejemplo, creamos dos grupos de instancias: uno en la zona uc-central1-a y otro en la zona us-central1-c.

Configura los grupos de instancias

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haga clic en Crear grupo de instancias.
  3. En el panel izquierdo, selecciona Grupo de instancias no administrado nuevo.
  4. En Nombre, ingresa ig-us-1.
  5. En Región, selecciona us-central1.
  6. En Zona, selecciona us-central1-a.
  7. Selecciona la Red y Subred, según la ubicación de tus instancias. En este ejemplo, las instancias existentes del grupo de destino se encuentran en la red y subred de default.
  8. Para agregar instancias al grupo de instancias, en la sección Instancias de VM, selecciona las dos instancias BACKEND_INSTANCE1 y BACKEND_INSTANCE2.
  9. Haz clic en Crear.
  10. Repite estos pasos para crear un segundo grupo de instancias con las siguientes especificaciones:

    • Nombre: ig-us-2
    • Región: us-central1
    • Zona: us-central1-c

    Agrega las dos instancias BACKEND_INSTANCE3 y BACKEND_INSTANCE4 en la zona us-central1-c a este grupo de instancias.

  11. Si tu implementación existente del balanceador de cargas también tiene un grupo de destino alternativo, repite estos pasos a fin de crear un grupo de instancias de conmutación por error diferente para esas instancias.

gcloud

  1. Crea un grupo de instancias no administrado en la zona us-central1-a con el comando gcloud compute instance-groups unmanaged create.

    gcloud compute instance-groups unmanaged create ig-us-1 \
        --zone us-central1-a
    
  2. Crea un segundo grupo de instancias no administrado en la zona us-central1-c.

    gcloud compute instance-groups unmanaged create ig-us-2 \
        --zone us-central1-c
    
  3. Agrega instancias al grupo de instancias ig-us-1.

    gcloud compute instance-groups unmanaged add-instances ig-us-1 \
        --instances BACKEND_INSTANCE_1,BACKEND_INSTANCE_2 \
        --zone us-central1-a
    
  4. Agrega instancias al grupo de instancias ig-us-2.

    gcloud compute instance-groups unmanaged add-instances ig-us-2 \
        --instances BACKEND_INSTANCE_3,BACKEND_INSTANCE_4 \
        --zone us-central1-c
    
  5. Si tu implementación existente del balanceador de cargas también tiene un grupo de destino alternativo, repite estos pasos a fin de crear un grupo de instancias de conmutación por error diferente para esas instancias.

Crea una verificación de estado

Crea una verificación de estado para determinar el estado de las instancias que están en tus grupos de instancias. Es probable que tu balanceador de cargas de red de transferencia externo basado en grupos de destino tenga una verificación de estado HTTP heredada asociada.

Puedes crear una verificación de estado nueva que coincida con el protocolo del tráfico que distribuirá el balanceador de cargas. Los balanceadores de cargas de red de transferencia externa basada en servicios de backend pueden usar verificaciones de estado de TCP, SSL, HTTP(S) o HTTP/2.

Console

  1. En la consola de Google Cloud, ve a la página Verificaciones de estado.

    Ir a Verificaciones de estado

  2. Haz clic en Crear verificación de estado.
  3. En el campo Nombre, ingresa network-lb-health-check.
  4. Configura Alcance como Regional.
  5. En Región, selecciona us-central1.
  6. En Protocolo, selecciona HTTP.
  7. En Puerto, ingresa 80.
  8. Haz clic en Crear.

gcloud

  1. En este ejemplo, creamos una verificación de estado HTTP no heredada que se utilizará con el servicio de backend.

    gcloud compute health-checks create http network-lb-health-check \
    --region us-central1 \
    --port 80
    

Configura el servicio de backend

Usa una de las siguientes secciones para crear el servicio de backend. Si tu balanceador de cargas de red de transferencia externo existente tiene un grupo de destino alternativo, debes configurar una proporción de conmutación por error cuando crees el servicio de backend.

También debes designar el grupo de instancias de conmutación por error con la marca --failover cuando agregues backends al servicio de backend.

Implementaciones sin grupo de destino alternativo

gcloud

  1. Crea un servicio de backend regional en la región us-central1.

    gcloud compute backend-services create network-lb-backend-service \
       --region us-central1 \
       --health-checks network-lb-health-check \
       --health-checks-region us-central1 \
       --protocol TCP
    
  2. Agrega los dos grupos de instancias (ig-us-1 and ig-us-2) como backends al servicio de backend:

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-2 \
       --instance-group-zone us-central1-c \
       --region us-central1
    

Implementaciones con un grupo de destino alternativo

gcloud

  1. Crea un servicio de backend regional en la región us-central1. Configura la proporción de conmutación por error del servicio de backend a fin de que coincida con la proporción de conmutación por error configurada previamente para el grupo de destino.

    gcloud compute backend-services create network-lb-backend-service \
       --region us-central1 \
       --health-check network-lb-health-check \
       --failover-ratio 0.5
    
  2. Agrega los dos grupos de instancias (ig-us-1 and ig-us-2) como backends al servicio de backend:

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-2 \
       --instance-group-zone us-central1-c \
       --region us-central1
    
  3. Si creaste un grupo de instancias de conmutación por error, agrégalo al servicio de backend. Marca este backend con la marca --failover cuando lo agregues al servicio de backend.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group FAILOVER_INSTANCE_GROUP \
       --instance-group-zone ZONE \
       --region us-central1 \
       --failover
    

Configura la regla de reenvío

Tienes dos opciones para configurar la regla de reenvío que dirige el tráfico al nuevo servicio de backend. Puedes actualizar la regla de reenvío existente o crear una nueva con una dirección IP nueva.

Usa la marca set-target para actualizar la regla de reenvío existente a fin de que apunte al servicio de backend nuevo.

gcloud compute forwarding-rules set-target FORWARDING_RULE  \
    --backend-service network-lb-backend-service \
    --region us-central1

Reemplaza FORWARDING_RULE por el nombre de la regla de reenvío existente.

Crea una regla de reenvío nueva

Si no quieres actualizar la regla de reenvío existente, puedes crear una regla de reenvío nueva con una dirección IP nueva. Debido a que una dirección IP determinada solo se puede asociar con una regla de reenvío a la vez, debes modificar manualmente la configuración de DNS para realizar la transición del tráfico entrante de la dirección IP anterior a la nueva.

Usa el siguiente comando para crear una regla de reenvío nueva con una dirección IP nueva. Puedes usar la marca --address si deseas especificar una dirección IP que ya está reservada en la región us-central1.

gcloud compute forwarding-rules create network-lb-forwarding-rule \
    --load-balancing-scheme external \
    --region us-central1 \
    --ports 80 \
    --backend-service network-lb-backend-service

Prueba el balanceador de cargas

Prueba el balanceador de cargas para confirmar que la regla de reenvío dirige el tráfico entrante como se espera.

Busca la dirección IP externa del balanceador de cargas

gcloud

Ingresa el siguiente comando para ver la dirección IP externa de la regla de reenvío network-lb-forwarding-rule que usa el balanceador de cargas.

gcloud compute forwarding-rules describe network-lb-forwarding-rule
    --region us-central1

Usa el comando nc para acceder a la dirección IP externa

En este ejemplo, usamos el método de hash predeterminado para la afinidad de sesión, por lo que las solicitudes del comando nc se distribuyen de forma aleatoria a las VMs de backend, según el puerto de origen asignado por tu sistema operativo.

  1. Para probar la conectividad, primero instala Netcat en Linux con el siguiente comando:

    $ sudo apt install netcat
    
  2. Repite el siguiente comando varias veces hasta que veas que todas las VMs de backend responden.

    $ nc IP_ADDRESS 80
    

Quita los recursos asociados con el balanceador de cargas anterior

Después de confirmar que el nuevo balanceador de cargas de red de transferencia externo funciona como se espera, puedes borrar los recursos del grupo de destino anterior.

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

    Ir a Balanceo de cargas

  2. Selecciona el balanceador de cargas anterior asociado con el grupo de destino y haz clic en Borrar.
  3. Selecciona las verificaciones de estado que creaste y, luego, haz clic en Borrar balanceador de cargas y los recursos seleccionados.

¿Qué sigue?