Migrar un balanceador de carga de red de paso a través externo de un grupo de destino a un servicio de backend

En esta guía se proporcionan instrucciones para migrar un balanceador de carga de red de acceso directo externo de un backend de grupo de destino a un servicio de backend regional.

Si cambias a un servicio de backend regional, podrás aprovechar funciones como las comprobaciones de estado no antiguas (para TCP, SSL, HTTP, HTTPS y HTTP/2), los grupos de instancias gestionados, la purga de conexión y la política de conmutación por error.


Para seguir las instrucciones paso a paso de esta tarea directamente en la Google Cloud consola, haga clic en Ayúdame:

Guíame


En esta guía se explica cómo migrar el siguiente balanceador de carga de red de paso a través externo basado en un grupo de destino de ejemplo para que use un servicio de backend regional.

Antes: balanceador de carga de red de paso a través externo con un grupo de destino
Antes: balanceador de carga de red de paso a través externo con un grupo de destino

El despliegue del balanceador de carga de red de paso a través externo basado en el servicio de backend resultante será similar al siguiente.

Después: balanceador de carga de red de paso a través externo con un servicio de backend regional
Después: balanceador de carga de red de paso a través externo con un servicio de backend regional

En este ejemplo, se da por hecho que tienes un balanceador de carga de red de paso a través 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.

Estos son los pasos generales que debes seguir para hacer la transición:

  1. Agrupa las instancias de tu grupo de destino en grupos de instancias.

    Los servicios de backend solo funcionan con grupos de instancias gestionados o no gestionados. Aunque no hay límite en el número de instancias que se pueden colocar en un mismo grupo de destino, los grupos de instancias tienen un tamaño máximo. Si tu grupo de destino tiene más del número máximo de instancias, debes dividir sus backends en varios grupos de instancias.

    Si tu implementación incluye un grupo de destino de copia de seguridad, crea un grupo de instancias independiente para esas instancias. Este grupo de instancias está configurado como grupo de conmutación por error.

  2. Crea un servicio backend regional.

    Si tu implementación incluye un grupo de destino de copia de seguridad, debes especificar una proporción de conmutación por error al crear el servicio de backend. Debe coincidir con la proporción de conmutación por error configurada anteriormente para la implementación del grupo de destino.

  3. Añade al servicio de backend los grupos de instancias que hayas creado anteriormente.

    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 al añadirlo 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 para que apunte al servicio de backend (recomendado).

    • Crea una regla de reenvío que apunte al servicio de backend. Para ello, debes crear una nueva dirección IP para el frontend del balanceador de carga. A continuación, modifica la configuración de DNS para pasar sin problemas de la dirección IP del antiguo balanceador de carga basado en grupos de destino a la nueva dirección IP.

Antes de empezar

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

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

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

Identificar los back-ends y la regla de reenvío que se van a migrar

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

    gcloud compute target-pools list
    

    Anota el nombre del grupo de destino desde el que vas a migrar. Más adelante se utilizará TARGET_POOL_NAME para hacer referencia a este nombre.

  2. Para enumerar todas las instancias de VM del 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. Estos nombres se mencionan más adelante como BACKEND_INSTANCE1, BACKEND_INSTANCE2, BACKEND_INSTANCE3 y BACKEND_INSTANCE4.

  3. Para enumerar las reglas de reenvío del balanceador de carga de red de paso a través externo, ejecuta el comando en Cloud Shell:

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

    Anota el nombre de la regla de reenvío. Más adelante se utilizará FORWARDING_RULE para hacer referencia a este nombre.

Crear los grupos de instancias sin gestionar zonales

Crea un grupo de instancias sin gestionar zonal para cada una de las zonas en las que tengas back-ends. En función de tu configuración, puedes dividir tus instancias en tantos grupos de instancias como necesites. En nuestro ejemplo, solo usamos dos grupos de instancias, uno por zona, y colocamos todas las VMs de backend de una zona determinada en el grupo de instancias asociado.

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

Configurar los grupos de instancias

Consola

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

    Ir a Grupos de instancias

  2. Haz clic en Crear grupo de instancias.
  3. En el panel de la izquierda, selecciona Nuevo grupo de instancias sin gestionar.
  4. En Nombre, escribe ig-us-1.
  5. En Región, selecciona us-central1.
  6. En Zona, selecciona us-central1-a.
  7. Selecciona Red y Subred en función de dónde se encuentren tus instancias. En este ejemplo, las instancias del grupo de destino ya creado están en la red default y en la subred.
  8. Para añadir 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

    Añade las dos instancias BACKEND_INSTANCE3 y BACKEND_INSTANCE4 de la zona us-central1-c a este grupo de instancias.

  11. Si tu implementación de balanceador de carga también tiene un grupo de destino de copia de seguridad, repite estos pasos para crear un grupo de instancias de failover independiente para esas instancias.

gcloud

  1. Crea un grupo de instancias sin gestionar 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 sin gestionar en la zona us-central1-c.

    gcloud compute instance-groups unmanaged create ig-us-2 \
        --zone us-central1-c
    
  3. Añade 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. Añade 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 de balanceador de carga también tiene un grupo de destino de copia de seguridad, repite estos pasos para crear un grupo de instancias de failover independiente para esas instancias.

Crear una comprobación del estado

Crea una comprobación del estado para determinar el estado de las instancias de tus grupos de instancias. Es probable que el balanceador de carga de red de paso a través externo basado en grupos de destino que ya tengas tenga asociada una comprobación del estado HTTP antigua.

Puede crear una comprobación del estado que coincida con el protocolo del tráfico que distribuirá el balanceador de carga. Los balanceadores de carga de red externos de tipo pasarela basados en servicios de backend pueden usar comprobaciones de estado TCP, SSL, HTTP(S) y HTTP/2.

Consola

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

    Ir a Comprobaciones del estado

  2. Haz clic en Crear comprobación del estado.
  3. En el campo Name (Nombre), introduce network-lb-health-check.
  4. En Ámbito, seleccione Regional.
  5. En Región, selecciona us-central1.
  6. En Protocol (Protocolo), selecciona HTTP.
  7. En Puerto, escribe 80.
  8. Haz clic en Crear.

gcloud

  1. En este ejemplo, creamos una comprobación del estado de HTTP no antigua para usarla con el servicio de backend.

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

Configurar el servicio de backend

Usa una de las siguientes secciones para crear el servicio de backend. Si tu balanceador de carga de red de paso a través externo tiene un grupo de destino de copia de seguridad, debes configurar una proporción de conmutación por error al crear el servicio de backend.

También debes designar el grupo de instancias de failover con la marca --failover al añadir backends al servicio de backend.

Implementaciones sin un grupo de destino de copia de seguridad

gcloud

  1. Crea un servicio 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. Añade los dos grupos de instancias (ig-us-1 y 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
    

Despliegues con un grupo de destino de copia de seguridad

gcloud

  1. Crea un servicio backend regional en la región us-central1. Configure la proporción de conmutación por error del servicio de backend para que coincida con la proporción de conmutación por error configurada anteriormente 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. Añade los dos grupos de instancias (ig-us-1 y 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 has creado un grupo de instancias de conmutación por error, añádelo al servicio de backend. Marca este backend con la marca --failover cuando lo añadas al servicio backend.

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

Configurar la regla de reenvío

Tienes dos opciones para configurar la regla de reenvío y dirigir el tráfico al nuevo servicio de backend. Puede actualizar la regla de reenvío o crear una nueva con una dirección IP diferente.

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

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

Sustituye FORWARDING_RULE por el nombre de la regla de reenvío que ya tengas.

Crear una regla de reenvío nueva

Si no quieres actualizar la regla de reenvío, puedes crear una con una dirección IP nueva. Como una dirección IP solo se puede asociar a una regla de reenvío a la vez, debes modificar manualmente tu configuración de DNS para transferir el tráfico entrante de la dirección IP antigua a la nueva.

Usa el siguiente comando para crear una regla de reenvío con una nueva dirección IP. Puedes usar la marca --address si quieres 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

Probar el balanceador de carga

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

Buscar la dirección IP externa del balanceador de carga

gcloud

Introduce 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 carga.

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 cifrado predeterminado para la afinidad de sesión, por lo que las solicitudes del comando nc se distribuyen aleatoriamente a las VMs de backend en función del puerto de origen asignado por tu sistema operativo.

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

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

    $ nc IP_ADDRESS 80
    

Eliminar los recursos asociados al balanceador de carga antiguo

Una vez que hayas confirmado que el nuevo balanceador de carga de red externo de pasarela funciona correctamente, puedes eliminar los recursos del antiguo grupo de destino.

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

    Ir a Balanceo de carga

  2. Seleccione el antiguo balanceador de carga asociado al grupo de destino y, a continuación, haga clic en Eliminar.
  3. Selecciona las comprobaciones del estado que has creado y, a continuación, haz clic en Eliminar balanceador de carga y los recursos seleccionados.

Siguientes pasos