Transición de un balanceador de cargas de red de un grupo de destino a un servicio de backend

En esta guía, se proporcionan instrucciones para cambiar un balanceador de cargas de red existente desde 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.

En esta guía, se explica cómo realizar la transición del siguiente balanceador de cargas de red de muestra basado en grupos de destino para usar un servicio de backend regional.

Balanceador de cargas de red con un grupo de destino
Antes: Balanceo de cargas de red con un grupo de destino

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

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

En este ejemplo, se supone que tienes un balanceador de cargas de red tradicional basado en grupos de destino con dos instancias en la zona us-central-1a y 2 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 configurará 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.
    Aquí tienes 2 opciones:
    • (Recomendada) Actualiza la regla de reenvío existente para que apunte al servicio de backend.
      O BIEN
    • 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 la herramienta de línea de comandos de gcloud. 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 no ejecutaste la herramienta de línea de comandos de gcloud antes, primero ejecuta gcloud init para autenticarte.

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

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

Cloud Console

  1. Ve a la página Grupos de instancias en Cloud Console.

    Ir a la página Grupos de instancias

  2. Haga clic en Crear grupo de instancias.
  3. Selecciona Nuevo grupo de instancias administrado a la izquierda.
  4. En Nombre, ingresa ig-us-1.
  5. En Ubicación, selecciona Zona única.
  6. En Región, selecciona us-central1.
  7. En Zona, selecciona us-central1-a.
  8. 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.
  9. En Instancias de VM, selecciona las dos instancias que se agregarán a este grupo.
  10. Haga clic en Crear.
  11. Repite estos pasos para crear un segundo grupo de instancias con las siguientes especificaciones:
    • Name: ig-us-2
    • Región: us-central1
    • Zona: us-central1-c Agrega las dos instancias de la zona us-central1-c a este grupo de 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 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 us-ig-1.

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

    gcloud compute instance-groups unmanaged add-instances us-ig-2 \
        --instances BACKEND_INSTANCE_3,BACKEND_INSTANCE_4 \
        --zone us-central1-c
    

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. Es probable que tu balanceador de cargas de red basado en grupos de destino existente tenga asociada una verificación de estado HTTP heredada.

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 basados en servicios de backend pueden usar verificaciones de estado de TCP, SSL, HTTP(S) y HTTP/2.

Console

  1. Ve a la página Verificaciones de estado en Cloud Console.

    Ir a la página Verificaciones de estado

  2. Ingresa un Nombre.
  3. Configura Alcance como Regional.
  4. En Región, selecciona us-central1.
  5. En el protocolo, selecciona HTTP.
  6. En Puerto, ingresa 80.
  7. Haga 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 http-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 existente tiene un grupo de destino alternativo, deberás configurar una proporción de conmutación por error cuando crees el servicio de backend.

También deberás 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 http-health-check \
       --health-checks-region us-central1 \
       --protocol TCP
    
  2. Agrega los dos grupos de instancias (us-ig-1 and us-ig-2) como backends al servicio de backend:

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group us-ig-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group us-ig-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 http-health-check \
       --failover-ratio 0.5
    
  2. Agrega los dos grupos de instancias (us-ig-1 and us-ig-2) como backends al servicio de backend:

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group us-ig-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group us-ig-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 network-lb-forwarding-rule  \
    --backend-service network-lb-backend-service \
    --region us-central1

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 distribuirán de forma aleatoria a las VM de backend, según el puerto de origen asignado por tu sistema operativo.

Repite el comando varias veces hasta que veas que todas las VM de backend responden.

$ nc IP_ADDRESS 80

Quita los recursos asociados con el balanceador de cargas anterior

Una vez que confirmes que el nuevo balanceador de cargas de red funciona como se esperaba, puedes borrar los recursos del grupo de destino anterior y la regla de reenvío anterior (si corresponde).

¿Qué sigue?