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:
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.
La implementación de tu balanceador de cargas de red de transferencia externo basado en servicios de backend se verá así.
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:
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.
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.
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.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
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.
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.
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
- En la consola de Google Cloud, ve a la página Grupos de instancias.
- Haga clic en Crear grupo de instancias.
- En el panel izquierdo, selecciona Grupo de instancias no administrado nuevo.
- En Nombre, ingresa
ig-us-1
. - En Región, selecciona
us-central1
. - En Zona, selecciona
us-central1-a
. - 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
. - Para agregar instancias al grupo de instancias, en la sección Instancias de VM, selecciona las dos instancias BACKEND_INSTANCE1 y BACKEND_INSTANCE2.
- Haz clic en Crear.
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.- Nombre:
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
Crea un grupo de instancias no administrado en la zona
us-central1-a
con el comandogcloud compute instance-groups unmanaged create
.gcloud compute instance-groups unmanaged create ig-us-1 \ --zone us-central1-a
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
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
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
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
- En la consola de Google Cloud, ve a la página Verificaciones de estado.
- Haz clic en Crear verificación de estado.
- En el campo Nombre, ingresa
network-lb-health-check
. - Configura Alcance como Regional.
- En Región, selecciona
us-central1
. - En Protocolo, selecciona HTTP.
- En Puerto, ingresa
80
. - Haz clic en Crear.
gcloud
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
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
Agrega los dos grupos de instancias (
ig-us-1
andig-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
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
Agrega los dos grupos de instancias (
ig-us-1
andig-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
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.
Actualiza la regla de reenvío existente (recomendado)
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.
Para probar la conectividad, primero instala Netcat en Linux con el siguiente comando:
$ sudo apt install netcat
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.
- En la consola de Google Cloud, ve a la página Balanceo de cargas.
- Selecciona el balanceador de cargas anterior asociado con el grupo de destino y haz clic en Borrar.
- Selecciona las verificaciones de estado que creaste y, luego, haz clic en Borrar balanceador de cargas y los recursos seleccionados.
¿Qué sigue?
- Para obtener información sobre cómo funcionan los balanceadores de cargas de red de transferencia externos con los servicios de backend, consulta la descripción general de los balanceadores de cargas de red de transferencia externo basados en servicios de backend.
- Para configurar un balanceador de cargas de red de transferencia externo con un servicio de backend, consulta Configura un balanceador de cargas de red de transferencia externo con un servicio de backend.
- Para configurar un balanceador de cargas de red de transferencia externo con un grupo de destino, consulta Configura un balanceador de cargas de red de transferencia externo con un grupo de destino.