Configura la conmutación por error para el balanceo de cargas TCP/UDP interno

En esta guía, se usa un ejemplo a fin de enseñarte a configurar la conmutación por error para un balanceador de cargas TCP/UDP interno de Google Cloud Platform. Antes de seguir esta guía, familiarízate con la siguiente documentación:

Permisos

Para seguir esta guía, debes crear instancias y modificar una red en un proyecto. Debes ser propietario o editor de un proyecto o tener todas las siguientes funciones de IAM de Compute Engine:

Tarea Función requerida
Crear redes, subredes y componentes del balanceador de cargas Administrador de la red
Agregar y quitar reglas de firewall Administrador de seguridad
Crear instancias Administrador de instancias

Configuración

En esta guía, se muestra cómo configurar y probar un balanceador de cargas TCP/UDP interno que usa la conmutación por error. En los pasos de esta sección, se describe cómo configurar los siguientes elementos:

  1. Una red de VPC de muestra con subredes personalizadas
  2. Reglas de firewall que permiten conexiones entrantes a VM de backend
  3. VM de backend:
    • Un backend principal en un grupo de instancias no administrado en la zona us-west1-a
    • Un backend de conmutación por error en un grupo de instancias no administrado en la zona us-west1-c
  4. Una VM cliente para probar conexiones y observar el comportamiento de conmutación por error
  5. Los siguientes componentes internos del balanceador de cargas TCP/UDP:
    • Una verificación de estado del servicio de backend
    • Un servicio de backend interno en la región us-west1 para administrar la distribución de conexiones entre las VM de backend
    • Una regla de reenvío interno y una dirección IP interna para el frontend del balanceador de cargas

Así se ve la arquitectura de este ejemplo:

Ejemplo de conmutación por error simple para el balanceo de cargas TCP/UDP interno (haz clic para agrandar)
Ejemplo de conmutación por error simple para el balanceo de cargas TCP/UDP interno (haz clic para agrandar)

Configura una red, una región y una subred

En este ejemplo, se usan la red de VPC, la región y la subred que se describen a continuación:

  • Red: la red es una red de VPC de modo personalizado llamada lb-network.

  • Región: la región es us-west1.

  • Subred: lb-subnet, la subred, usa el rango de IP 10.1.2.0/24.

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

Console

  1. Ve a la página Redes de VPC en Google Cloud Platform Console.
    Ir a la página Redes de VPC
  2. Haz clic en Crear red de VPC.
  3. Ingresa un nombre de lb-network.
  4. En la sección Subredes, realiza lo siguiente:
    • Establece el modo de creación de subred como Personalizado.
    • En la sección Subred nueva, ingresa la siguiente información:
      • Nombre: lb-subnet
      • Región: us-west1
      • Rango de direcciones IP: 10.1.2.0/24
      • Haz clic en Listo.
  5. Haz clic en Crear.

gcloud

  1. Crea la red de VPC personalizada:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Crea una subred en la red lb-network en la región us-west1:

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

Configura las reglas de firewall

En este ejemplo, se usan las siguientes reglas de firewall:

  • fw-allow-lb-subnet: una regla de entrada, aplicable a todos los objetivos en la red de VPC, que permite el tráfico de fuentes en el rango 10.1.2.0/24. Esta regla permite el tráfico entrante desde cualquier fuente dentro de lb-subnet a las instancias (VM) en las que se aplica el balanceo de cargas.

  • fw-allow-ssh: una regla de entrada aplicada a las instancias cuyas cargas se balancean, lo que permite la conectividad SSH entrante en el puerto TCP 22 desde cualquier dirección. Puedes elegir un rango de IP de origen más restrictivo para esta regla; por ejemplo, puedes especificar los rangos de IP de los sistemas desde los cuales planeas iniciar sesiones SSH. En este ejemplo, se usa la etiqueta de destino allow-ssh para identificar las VM a las que se aplica la regla de firewall.

  • fw-allow-health-check: una regla de entrada, aplicable a las instancias en las que se realiza el balanceo de cargas, que permite el tráfico de los sistemas de verificación de estado de GCP (130.211.0.0/22 y 35.191.0.0/16). En este ejemplo, se usa la etiqueta de destino allow-health-check para identificar las instancias a las que se debe aplicar.

Sin estas reglas de firewall, la regla predeterminada de entrada denegada bloquea el tráfico entrante a las instancias de backend.

Console

  1. Ve a la página Reglas de firewall en Google Cloud Platform Console.
    Ir a la página Reglas de firewall
  2. Haz clic en Crear regla de firewall y, luego, ingresa la siguiente información para crear la regla a fin de permitir el tráfico de subred:
    • Nombre: fw-allow-lb-subnet
    • Red: lb-network
    • Prioridad: 1000
    • Dirección del tráfico: entrada
    • Acción si hay coincidencia: permitir
    • Objetivos: todas las instancias de la red
    • Filtro de origen: IP ranges
    • Rangos de IP de origen: 10.1.2.0/24
    • Protocolos y puertos: permitir todos
  3. Haz clic en Crear.
  4. Haz clic en Crear regla de firewall de nuevo para crear la regla que permite conexiones SSH entrantes:
    • Nombre: fw-allow-ssh
    • Red: lb-network
    • Prioridad: 1000
    • Dirección del tráfico: entrada
    • Acción si hay coincidencia: permitir
    • Objetivos: etiquetas de destino especificadas
    • Etiquetas de destino: allow-ssh
    • Filtro de origen: IP ranges
    • Rangos de IP de origen: 0.0.0.0/0
    • Protocolos y puertos: elige Protocolos y puertos especificados y escribe: tcp:22
  5. Haz clic en Crear.
  6. Haz clic en Crear regla de firewall por tercera vez a fin de crear la regla para permitir las verificaciones de estado de GCP:
    • Nombre: fw-allow-health-check
    • Red: lb-network
    • Prioridad: 1000
    • Dirección del tráfico: entrada
    • Acción si hay coincidencia: permitir
    • Objetivos: etiquetas de destino especificadas
    • Etiquetas de destino: allow-health-check
    • Filtro de origen: IP ranges
    • Rangos de IP de origen: 130.211.0.0/22 y 35.191.0.0/16
    • Protocolos y puertos: permitir todos
  7. Haz clic en Crear.

gcloud

  1. Crea la regla de firewall fw-allow-lb-subnet para permitir la comunicación con la subred:

    gcloud compute firewall-rules create fw-allow-lb-subnet \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.1.2.0/24 \
        --rules=tcp,udp,icmp
    
  2. Crea la regla de firewall fw-allow-ssh para permitir la conectividad SSH a las VM con la etiqueta de red allow-ssh. Cuando omites source-ranges, GCP interpreta que la regla significa cualquier fuente.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  3. Crea la regla fw-allow-health-check para permitir las verificaciones de estado de GCP.

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp,udp,icmp
    

Crea grupos de instancias y VM de backend

En este paso, crearás las VM de backend y los grupos de instancias no administrados:

  • El grupo de instancias ig-a en us-west1-a es un backend principal con dos VM:
    • vm-a1
    • vm-a2
  • El grupo de instancias ig-c en us-west1-c es un backend de conmutación por error con dos VM:
    • vm-c1
    • vm-c2

Los backends principales y de conmutación por error se colocan en zonas diferentes para favorecer la claridad de instrucción y manejar la conmutación por error en caso de que una zona se desconecte.

Cada VM principal y de copia de seguridad está configurada para ejecutar un servidor web Apache en los puertos TCP 80 y 443. A cada VM se le asigna una dirección IP interna en lb-subnet para acceso de cliente y una dirección IP externa (pública) efímera para acceso SSH. Para obtener información sobre cómo quitar direcciones IP externas, consulta cómo borrar direcciones IP externas de VM de backend.

De forma predeterminada, Apache está configurado para vincularse a cualquier dirección IP. Los balanceadores de cargas TCP/UDP internos entregan paquetes mediante la preservación de la IP de destino.

Asegúrate de que el software del servidor que se ejecuta en las VM principales y de copia de seguridad esté escuchando en la dirección IP de la regla de reenvío interno del balanceador de cargas. Si configuras múltiples reglas de reenvío interno, asegúrate de que el software escuche en la dirección IP interna asociada con cada una. La dirección IP de destino de un paquete que un balanceador de cargas TCP/UDP interno entrega a una VM de backend es la dirección IP interna de la regla de reenvío.

Para simplificar las instrucciones, todas las VM principales y de copia de seguridad ejecutan Debian GNU/Linux 9.

Console

Crea VM de backend

  1. Ve a la página Instancias de VM en Google Cloud Platform Console.
    Ir a la página Instancias de VM
  2. Repite los siguientes pasos para crear cuatro VM con las siguientes combinaciones de nombre y zona:
    • Nombre: vm-a1, zona: us-west1-a
    • Nombre: vm-a2, zona: us-west1-a
    • Nombre: vm-c1, zona: us-west1-c
    • Nombre: vm-c2, zona: us-west1-c
  3. Haz clic en Crear instancia.
  4. Establece el Nombre como se indica en el paso 2.
  5. Para la Región, elige us-west1 y una Zona como se indica en el paso 2.
  6. En la sección Disco de arranque, asegúrate de que la imagen seleccionada sea Debian GNU/Linux 9 Stretch. Haz clic en Elegir para cambiar la imagen si es necesario.
  7. Haz clic en Administración, seguridad, discos, redes, instancia única y realiza los siguientes cambios:

    • Haz clic en Herramientas de Redes y agrega las siguientes Etiquetas de red: allow-ssh y allow-health-check
    • Haz clic en el botón Editar, en Interfaces de red, y realiza los siguientes cambios. Luego, haz clic en Listo:
      • Red: lb-network
      • Subred: lb-subnet
      • IP interna principal: efímera (automática)
      • IP externa: efímera
    • Haz clic en Administración. En el campo Secuencia de comandos de inicio, copia y pega el siguiente contenido de secuencia de comandos. El contenido de la secuencia de comandos es idéntico para las cuatro VM:

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
  8. Haz clic en Crear.

Crea grupos de instancias

  1. Dirígete a la página Grupos de instancias en Google Cloud Platform Console.
    Ir a la página Grupos de instancias
  2. Repite estos pasos para crear dos grupos de instancias no administrados, cada uno con dos VM, mediante estas combinaciones.
    • Grupo de instancias: ig-a, zona: us-west1-a, VM: vm-a1 y vm-a2
    • Grupo de instancias: ig-c, zona: us-west1-c, VM: vm-c1 y vm-c2
  3. Haz clic en Crear grupo de instancias.
  4. Establece Nombre como se indica en el paso 2.
  5. En la sección Ubicación, selecciona Zona única, elige us-west1 para la Región y, luego, elige una Zona como se indica en el paso 2.
  6. En la sección Tipo de grupo, selecciona Grupo de instancias no administrado.
  7. En Red, ingresa lb-network.
  8. Para la Subred, ingresa lb-subnet.
  9. En la sección Instancias de VM, agrega las VM como se indica en el paso 2.
  10. Haz clic en Crear.

gcloud

  1. Ejecuta el siguiente comando cuatro veces para crear cuatro VM, con estas cuatro combinaciones para [VM-NAME] y [ZONE]. El contenido de la secuencia de comandos es idéntico para las cuatro VM.

    • [VM-NAME] de vm-a1 y [ZONE] de us-west1-a
    • [VM-NAME] de vm-a2 y [ZONE] de us-west1-a
    • [VM-NAME] de vm-c1 y [ZONE] de us-west1-c
    • [VM-NAME] de vm-c2 y [ZONE] de us-west1-c
    gcloud compute instances create [VM-NAME] \
        --zone=[ZONE] \
        --image-family=debian-9 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=lb-subnet \
        --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://169.254.169.254/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'
    
  2. Crea los dos grupos de instancias no administrados en cada zona:

    gcloud compute instance-groups unmanaged create ig-a \
        --zone=us-west1-a
    gcloud compute instance-groups unmanaged create ig-c \
        --zone=us-west1-c
    
  3. Agrega las VM a los grupos de instancias adecuados:

    gcloud compute instance-groups unmanaged add-instances ig-a \
        --zone=us-west1-a \
        --instances=vm-a1,vm-a2
    gcloud compute instance-groups unmanaged add-instances ig-c \
        --zone=us-west1-c \
        --instances=vm-c1,vm-c2
    

Crea una VM de cliente

En este ejemplo, se crea una VM de cliente (vm-client) en la misma región que el balanceador de cargas. El cliente se usa para demostrar cómo funciona la conmutación por error.

Console

  1. Ve a la página Instancias de VM en Google Cloud Platform Console.
    Ir a la página Instancias de VM
  2. Haz clic en Crear instancia.
  3. Establece el Nombre como vm-client.
  4. Configura la Zona como us-west1-a.
  5. Haz clic en Administración, seguridad, discos, redes, instancia única y realiza los siguientes cambios:
    • Haz clic en Herramientas de redes y agrega allow-ssh a las Etiquetas de red.
    • Haz clic en el botón Editar, en Interfaces de red, y realiza los siguientes cambios. Luego, haz clic en Listo:
      • Red: lb-network
      • Subred: lb-subnet
      • IP interna principal: efímera (automática)
      • IP externa: efímera
  6. Haz clic en Crear.

gcloud

La VM de cliente puede estar en cualquier zona de la misma región que el balanceador de cargas y puede usar cualquier subred en esa región. En este ejemplo, el cliente se encuentra en la zona us-west1-a y usa la misma subred que las VM principales y de copia de seguridad.

gcloud compute instances create vm-client \
    --zone=us-west1-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=lb-subnet

Configura componentes del balanceador de cargas

Con estos pasos, se configuran todos los componentes del balanceador de cargas TCP/UDP interno; se comienza con la verificación de estado y el servicio de backend y, luego, los componentes de frontend:

  • Verificación de estado: en este ejemplo, se usa una verificación de estado HTTP que busca una respuesta HTTP 200 (OK). Para obtener más información, consulta la sección de verificaciones de estado de la descripción general del balanceo de cargas TCP/UDP interno.

  • Servicio de backend: debido a que el ejemplo transmite tráfico HTTP a través del balanceador de cargas interno, la configuración especifica TCP, no UDP. Para ilustrar la conmutación por error, este servicio de backend tiene una proporción de conmutación por error de 0.75.

  • Regla de reenvío: en este ejemplo, se crea una sola regla de reenvío interno.

  • Dirección IP interna: en este ejemplo, se especifica 10.1.2.99, una dirección IP interna, cuando se crea la regla de reenvío.

Console

Crea el balanceador de cargas y configura un servicio de backend

  1. Ve a la página Balanceo de cargas de Google Cloud Platform Console.
    Ir a la página Balanceo de cargas
  2. Haz clic en Crear balanceador de cargas.
  3. En Balanceo de cargas TCP, haz clic en Iniciar configuración.
  4. En Orientado a Internet o solo interno, selecciona Solo entre mis VM.
  5. Haz clic en Continuar.
  6. Establece el Nombre como be-ilb.
  7. Haz clic en Configuración de backend y realiza los siguientes cambios:
    1. Región: us-west1
    2. Red: lb-network
    3. En Backends, en la sección Elemento nuevo, selecciona el grupo de instancias ig-a. Asegúrate de que la opción Usar este grupo de instancias como grupo de conmutación por error para la copia de seguridad no esté marcada. Haz clic en Listo.
    4. Haz clic en Agregar backend. En la sección Elemento nuevo, selecciona el grupo de instancias ig-c. Marca Usar este grupo de instancias como grupo de conmutación por error para la copia de seguridad. Haz clic en Listo.
    5. En Verificación de estado, elige Crear otra verificación de estado, ingresa la siguiente información y haz clic en Guardar y continuar:
      • Nombre: hc-http-80
      • Protocolo: HTTP
      • Puerto: 80
      • Protocolo proxy: NONE
      • Ruta de solicitud: /
    6. Haz clic en Configuración avanzada. En la sección Política de conmutación por error, configura lo siguiente:
      • Proporción de conmutación por error: 0.75
      • Marca Habilitar el desvío de la conexión en la conmutación por error.
    7. Verifica que haya una marca de verificación azul junto a Configuración de backend antes de continuar. Si no, revisa este paso.
  8. Haz clic en Configuración de frontend. En la sección IP y puerto de frontend nuevos, realiza los siguientes cambios:
    1. Nombre: fr-ilb
    2. Subred: ilb-subnet
    3. En IP interna, elige Reservar una dirección IP interna estática, ingresa la siguiente información y haz clic en Reservar:
      • Nombre: ip-ilb
      • Dirección IP estática: Permíteme elegir
      • Dirección IP personalizada: 10.1.2.99
    4. Puertos: elige Individual y, luego, ingresa 80 en el Número de puerto.
    5. Verifica que haya una marca de verificación azul junto a Configuración de frontend antes de continuar. Si no, revisa este paso.
  9. Haz clic en Revisar y finalizar. Vuelve a verificar la configuración.
  10. Haz clic en Crear.

gcloud

  1. Crea una verificación de estado HTTP nueva para probar la conectividad TCP a las VM en 80.

    gcloud compute health-checks create http hc-http-80 \
        --port=80
    
  2. Crea el servicio de backend para el tráfico HTTP:

    gcloud beta compute backend-services create be-ilb \
        --load-balancing-scheme=internal \
        --protocol=tcp \
        --region=us-west1 \
        --health-checks=hc-http-80 \
        --failover-ratio 0.75
    
  3. Agrega el backend principal al servicio de backend:

    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-a \
        --instance-group-zone=us-west1-a
    
  4. Agrega el backend de conmutación por error al servicio de backend:

    gcloud beta compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-c \
        --instance-group-zone=us-west1-c \
        --failover
    
  5. Crea una regla de reenvío para el servicio de backend. Cuando crees la regla de reenvío, especifica 10.1.2.99 para la IP interna en la subred.

    gcloud compute forwarding-rules create fr-ilb \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --network=lb-network \
        --subnet=lb-subnet \
        --address=10.1.2.99 \
        --ip-protocol=TCP \
        --ports=80 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1
    

Realiza pruebas

Mediante estas pruebas, se muestra cómo validar la configuración del balanceador de cargas y conocer su comportamiento esperado.

Procedimiento de prueba del cliente

En este procedimiento, se contacta al balanceador de cargas desde la VM de cliente. Usarás este procedimiento para completar las otras pruebas.

  1. Conéctate a la instancia de VM de cliente.

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Realiza una solicitud web al balanceador de cargas con curl para contactar la dirección IP.

    curl http://10.1.2.99
    
  3. Ten en cuenta el texto que muestra 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-a1

Prueba de estado inicial

Después de configurar el balanceador de cargas de ejemplo, las cuatro VM de backend deberían estar en buen estado:

  • las dos VM principales, vm-a1 y vm-a2
  • las dos VM de copia de seguridad, vm-c1 y vm-c2

Sigue el procedimiento de prueba del cliente. Repite el segundo paso varias veces. El comportamiento esperado es que las dos VM principales, vm-a1 y vm-a2, entreguen tráfico, ya que ambas están en buen estado. Cada VM principal debería entregar una respuesta aproximadamente la mitad del tiempo porque no se configuró ninguna afinidad de sesión para este balanceador de cargas.

Prueba de conmutación por error

Esta prueba simula el error de vm-a1 para que puedas observar el comportamiento de conmutación por error.

  1. Conéctate a la VM vm-a1.

    gcloud compute ssh vm-a1 --zone=us-west1-a
    
  2. Detén el servidor web Apache. Después de diez segundos, GCP considera que esta VM no está en buen estado (la verificación de estado hc-http-80 que creaste en la configuración usa el intervalo de verificación predeterminado de cinco segundos y el umbral de mal estado de dos sondeos fallidos consecutivos).

    sudo apachectl stop
    
  3. Sigue el procedimiento de prueba del cliente. Repite el segundo paso varias veces. El comportamiento esperado es que las dos VM de copia de seguridad, vm-c1 y vm-c2, entreguen tráfico. Debido a que solo una VM principal, vm-a2, está en buen estado, la proporción de VM principales en buen estado respecto al total de VM principales es de 0.5. Este número es inferior al umbral de conmutación por error de 0.75, por lo que GCP vuelve a configurar el grupo activo del balanceador de cargas para usar las VM de copia de seguridad. Cada VM de copia de seguridad debería entregar una respuesta aproximadamente la mitad del tiempo, siempre y cuando no se haya configurado ninguna afinidad de sesión para este balanceador de cargas.

Prueba de recuperación

Esta prueba simula la recuperación tras reiniciar el servidor Apache en vm-a1.

  1. Conéctate a la VM vm-a1.

    gcloud compute ssh vm-a1 --zone=us-west1-a
    
  2. Inicia el servidor web Apache y espera 10 segundos.

    sudo apachectl start
    
  3. Sigue el procedimiento de prueba del cliente. Repite el segundo paso varias veces. El comportamiento esperado es que las dos VM principales, vm-a1 y vm-a2, entreguen tráfico. Con ambas VM principales en buen estado, la proporción de VM principales en buen estado y VM principales totales es de 1.0, mayor que el umbral de conmutación por error de 0.75, por lo que GCP configura el grupo activo para usar las VM principales de nuevo.

Agrega más VM de backend

En esta sección, se amplía la configuración de ejemplo mediante el agregado de más VM principales y de copia de seguridad al balanceador de cargas. Para ello, se crean dos grupos de instancias de backend a fin de demostrar que puedes distribuir VM principales y de copia de seguridad entre varias zonas de la misma región:

  • Un tercer grupo de instancias, ig-d en us-west1-c, funciona como un backend principal con dos VM:
    • vm-d1
    • vm-d2
  • Un cuarto grupo de instancias, ig-b en us-west1-a, funciona como un backend de conmutación por error con dos VM:
    • vm-b1
    • vm-b2

Así se ve la arquitectura modificada de este ejemplo:

Conmutación por error del balanceo de cargas TCP/UDP interno multizona (haz clic para ampliar)
Conmutación por error del balanceo de cargas TCP/UDP interno multizona (haz clic para ampliar)

Crea VM y grupos de instancias adicionales

Sigue estos pasos para crear las VM principales y de copia de seguridad adicionales y sus grupos de instancias no administrados correspondientes.

Console

Crea VM de backend

  1. Ve a la página Instancias de VM en Google Cloud Platform Console.
    Ir a la página Instancias de VM
  2. Repite los siguientes pasos para crear cuatro VM con las siguientes combinaciones de nombre y zona:
    • Nombre: vm-b1, zona: us-west1-a
    • Nombre: vm-b2, zona: us-west1-a
    • Nombre: vm-d1, zona: us-west1-c
    • Nombre: vm-d2, zona: us-west1-c
  3. Haz clic en Crear instancia.
  4. Establece el Nombre como se indica en el paso 2.
  5. Para la Región, elige us-west1 y una Zona como se indica en el paso 2.
  6. En la sección Disco de arranque, asegúrate de que la imagen seleccionada sea Debian GNU/Linux 9 Stretch. Haz clic en Elegir para cambiar la imagen si es necesario.
  7. Haz clic en Administración, seguridad, discos, redes, instancia única y realiza los siguientes cambios:

    • Haz clic en Herramientas de Redes y agrega las siguientes Etiquetas de red: allow-ssh y allow-health-check
    • Haz clic en el botón Editar, en Interfaces de red, y realiza los siguientes cambios. Luego, haz clic en Listo:
      • Red: lb-network
      • Subred: lb-subnet
      • IP interna principal: efímera (automática)
      • IP externa: efímera
    • Haz clic en Administración. En el campo Secuencia de comandos de inicio, copia y pega el siguiente contenido de secuencia de comandos. El contenido de la secuencia de comandos es idéntico para las cuatro VM:

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
  8. Haz clic en Crear.

Crea grupos de instancias

  1. Dirígete a la página Grupos de instancias en Google Cloud Platform Console.
    Ir a la página Grupos de instancias
  2. Repite los siguientes pasos para crear dos grupos de instancias no administrados, cada uno con dos VM, con estas combinaciones.
    • Grupo de instancias: ig-b, zona: us-west1-a, VM: vm-b1 y vm-b2
    • Grupo de instancias: ig-d, zona: us-west1-c, VM: vm-d1 y vm-d2
  3. Haz clic en Crear grupo de instancias.
  4. Establece Nombre como se indica en el paso 2.
  5. En la sección Ubicación, selecciona Zona única, elige us-west1 para la Región y, luego, elige una Zona como se indica en el paso 2.
  6. En la sección Tipo de grupo, selecciona Grupo de instancias no administrado.
  7. En Red, ingresa lb-network.
  8. Para la Subred, ingresa lb-subnet.
  9. En la sección Instancias de VM, agrega las VM como se indica en el paso 2.
  10. Haz clic en Crear.

gcloud

  1. Ejecuta el siguiente comando cuatro veces para crear cuatro VM, con estas cuatro combinaciones para [VM-NAME] y [ZONE]. El contenido de la secuencia de comandos es idéntico para las cuatro VM.

    • [VM-NAME] de vm-b1 y [ZONE] de us-west1-a
    • [VM-NAME] de vm-b2 y [ZONE] de us-west1-a
    • [VM-NAME] de vm-d1 y [ZONE] de us-west1-c
    • [VM-NAME] de vm-d2 y [ZONE] de us-west1-c
    gcloud compute instances create [VM-NAME] \
        --zone=[ZONE] \
        --image-family=debian-9 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=lb-subnet \
        --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://169.254.169.254/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'
    
  2. Crea los dos grupos de instancias no administrados en cada zona:

    gcloud compute instance-groups unmanaged create ig-b \
        --zone=us-west1-a
    gcloud compute instance-groups unmanaged create ig-d \
        --zone=us-west1-c
    
  3. Agrega las VM a los grupos de instancias adecuados:

    gcloud compute instance-groups unmanaged add-instances ig-b \
        --zone=us-west1-a \
        --instances=vm-b1,vm-b2
    gcloud compute instance-groups unmanaged add-instances ig-d \
        --zone=us-west1-c \
        --instances=vm-d1,vm-d2
    

Agrega un backend principal

Puedes usar este procedimiento como una plantilla para agregar un grupo de instancias no administrado a un servicio de backend del balanceador de cargas interno TCP/UDP existente como un backend principal. Para la configuración de ejemplo, este procedimiento muestra cómo agregar el grupo de instancias ig-d como un backend principal al balanceador de cargas be-ilb.

Console

  1. Ve a la página Balanceo de cargas de Google Cloud Platform Console.
    Ir a la página Balanceo de cargas
  2. En la pestaña Balanceadores de cargas, haz clic en el nombre de un balanceador de cargas TCP o UDP interno existente (en este ejemplo, be-ilb).
  3. Haz clic en Editar.
  4. En la Configuración de backend, haz clic en Agregar backend y selecciona un grupo de instancias no administrado (en este ejemplo, ig-d).
  5. Asegúrate de que la opción Usar este grupo de instancias como grupo de conmutación por error para la copia de seguridad no esté marcada.
  6. Haz clic en Listo y, luego, en Actualizar.

gcloud

Usa el siguiente comando de gcloud para agregar un backend principal a un servicio de backend del balanceador de cargas TCP/UDP interno.

gcloud beta compute backend-services add-backend [BACKEND_SERVICE_NAME] \
   --instance-group [INSTANCE_GROUP_NAME] \
   --instance-group-zone [INSTANCE_GROUP_ZONE] \
   --region [REGION]

en el que:

  • [BACKEND_SERVICE_NAME] es el nombre del servicio de backend del balanceador de cargas. Para el ejemplo, usa be-ilb.
  • [INSTANCE_GROUP_NAME] es el nombre del grupo de instancias que se agregará como backend principal. Para el ejemplo, usa ig-d.
  • [INSTANCE_GROUP_ZONE] es la zona en la que se define el grupo de instancias. Para el ejemplo, usa us-west1-c.
    • [REGION] es la región del balanceador de cargas. Para el ejemplo, usa us-west1.

api

Agrega un backend principal a un servicio de backend existente con el método regionBackendServices.patch

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/backendServices/[BACKEND_SERVICE_NAME]

{
  "backends":
  [
    {
      "balancingMode": "connection",
      "failover": false,
      "group": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[INSTANCE_GROUP_ZONE]/instanceGroups/[INSTANCE_GROUP_NAME]"
    }
  ]
}

en el que:

  • [PROJECT_ID] es el ID del proyecto.
  • [REGION] es la región del balanceador de cargas. Para el ejemplo, usa us-west1.
  • [BACKEND_SERVICE_NAME] es el nombre del servicio de backend del balanceador de cargas. Para el ejemplo, usa be-ilb.
  • [INSTANCE_GROUP_ZONE] es la zona en la que se define el grupo de instancias. Para el ejemplo, usa us-west1-c.
  • [INSTANCE_GROUP_NAME] es el nombre del grupo de instancias que se agregará como backend principal. Para el ejemplo, usa ig-d.

Agrega un backend de conmutación por error

Puedes usar este procedimiento como una plantilla para agregar un grupo de instancias no administrado a un servicio de backend del balanceador de cargas TCP/UDP interno existente como un backend de conmutación por error. Para la configuración de ejemplo, este procedimiento muestra cómo agregar el grupo de instancias ig-b como un backend de conmutación por error al balanceador de cargas be-ilb.

Console

  1. Ve a la página Balanceo de cargas de Google Cloud Platform Console.
    Ir a la página Balanceo de cargas
  2. En la pestaña Balanceadores de cargas, haz clic en el nombre de un balanceador de cargas TCP o UDP interno existente (en este ejemplo, be-ilb).
  3. Haz clic en Editar.
  4. En la Configuración de backend, haz clic en Agregar backend y selecciona un grupo de instancias no administrado (en este ejemplo, ig-b).
  5. Marca Usar este grupo de instancias como grupo de conmutación por error para la copia de seguridad.
  6. Haz clic en Listo y, luego, en Actualizar.

gcloud

Usa el siguiente comando de gcloud para agregar un backend de conmutación por error a un servicio de backend del balanceador de cargas TCP/UDP interno existente.

gcloud beta compute backend-services add-backend [BACKEND_SERVICE_NAME] \
   --instance-group [INSTANCE_GROUP_NAME] \
   --instance-group-zone [INSTANCE_GROUP_ZONE] \
   --region [REGION] \
   --failover

en el que:

  • [BACKEND_SERVICE_NAME] es el nombre del servicio de backend del balanceador de cargas. Para el ejemplo, usa be-ilb.
  • [INSTANCE_GROUP_NAME] es el nombre del grupo de instancias que se agregará como backend de conmutación por error. Para el ejemplo, usa ig-b.
  • [INSTANCE_GROUP_ZONE] es la zona en la que se define el grupo de instancias. Para el ejemplo, usa us-west1-a.
  • [REGION] es la región del balanceador de cargas. Para el ejemplo, usa us-west1.

api

Agrega un backend de conmutación por error a un servicio de backend existente con el método regionBackendServices.patch

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/backendServices/[BACKEND_SERVICE_NAME]

{
  "backends":
  [
    {
      "balancingMode": "connection",
      "failover": true,
      "group": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[INSTANCE_GROUP_ZONE]/instanceGroups/[INSTANCE_GROUP_NAME]"
    }
  ]
}

en el que:

  • [PROJECT_ID] es el ID del proyecto.
  • [REGION] es la región del balanceador de cargas. Para el ejemplo, usa us-west1.
  • [BACKEND_SERVICE_NAME] es el nombre del servicio de backend del balanceador de cargas. Para el ejemplo, usa be-ilb.
  • [INSTANCE_GROUP_ZONE] es la zona en la que se define el grupo de instancias. Para el ejemplo, usa us-west1-a.
  • [INSTANCE_GROUP_NAME] es el nombre del grupo de instancias que se agregará como backend de conmutación por error. Para el ejemplo, usa ig-b.

Convierte un backend primario o de conmutación por error

Puedes convertir un backend principal en un backend de conmutación por error, o viceversa, sin quitar el grupo de instancias del servicio de backend del balanceador de cargas TCP/UDP interno.

Console

  1. Ve a la página Balanceo de cargas de Google Cloud Platform Console.
    Ir a la página Balanceo de cargas
  2. En la pestaña Balanceadores de cargas, haz clic en el nombre de un balanceador de cargas TCP o UDP interno existente.
  3. Haz clic en Editar.
  4. En la Configuración de backend, haz clic en el nombre de uno de los grupos de instancias de backend. Luego:
    • Para hacer que el grupo de instancias sea un backend de conmutación por error, marca Usar este grupo de instancias como un grupo de conmutación por error para la copia de seguridad.
    • Para hacer que el grupo de instancias sea un backend principal, desmarca Usar este grupo de instancias como un grupo de conmutación por error para la copia de seguridad.
  5. Haz clic en Listo y, luego, en Actualizar.

gcloud

Usa el siguiente comando de gcloud para convertir un backend principal existente en un backend de conmutación por error:

gcloud beta compute backend-services update-backend [BACKEND_SERVICE_NAME] \
   --instance-group [INSTANCE_GROUP_NAME] \
   --instance-group-zone [INSTANCE_GROUP_ZONE] \
   --region [REGION] \
   --failover

Usa el siguiente comando de gcloud para convertir un backend de conmutación por error existente en un backend principal:

gcloud beta compute backend-services update-backend [BACKEND_SERVICE_NAME] \
   --instance-group [INSTANCE_GROUP_NAME] \
   --instance-group-zone [INSTANCE_GROUP_ZONE] \
   --region [REGION] \
   --no-failover

en el que:

  • [BACKEND_SERVICE_NAME] es el nombre del servicio de backend del balanceador de cargas.
  • [INSTANCE_GROUP_NAME] es el nombre del grupo de instancias.
  • [INSTANCE_GROUP_ZONE] es la zona en la que se define el grupo de instancias.
  • [REGION] es la región del balanceador de cargas.

api

Convierte un backend principal en un backend de conmutación por error, o viceversa, con el método regionBackendServices.patch

Haz esto para convertir un backend principal en un backend de conmutación por error:

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/backendServices/[BACKEND_SERVICE_NAME]

{
  "backends":
  [
    {
      "failover": true,
      "group": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[INSTANCE_GROUP_ZONE]/instanceGroups/[INSTANCE_GROUP_NAME]"
    }
  ]
}

Haz esto para convertir un backend de conmutación por error en un backend principal:

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/backendServices/[BACKEND_SERVICE_NAME]

{
  "backends":
  [
    {
      "failover": false,
      "group": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[INSTANCE_GROUP_ZONE]/instanceGroups/[INSTANCE_GROUP_NAME]"
    }
  ],
}

en el que:

  • [PROJECT_ID] es el ID del proyecto.
  • [REGION] es la región del balanceador de cargas.
  • [BACKEND_SERVICE_NAME] es el nombre del servicio de backend del balanceador de cargas.
  • [INSTANCE_GROUP_ZONE] es la zona en la que se define el grupo de instancias.
  • [INSTANCE_GROUP_NAME] es el nombre del grupo de instancias.

Configura las políticas de conmutación por error

En esta sección, se describe cómo administrar una política de conmutación por error para un servicio de backend del balanceador de cargas TCP/UDP interno. Una política de conmutación por error consta de las siguientes partes:

  • Proporción de conmutación por error
  • Abandono del tráfico cuando todas las VM de backend están en mal estado
  • Desvío de conexión en conmutación por error

Para obtener más información sobre los parámetros de una política de conmutación por error, consulta estos artículos:

Define una política de conmutación por error

En las siguientes instrucciones, se describe cómo definir la política de conmutación por error para un balanceador de cargas TCP/UDP interno existente.

Console

Para definir una política de conmutación por error con GCP Console, debes tener al menos un backend de conmutación por error.

  1. Ve a la página Balanceo de cargas de Google Cloud Platform Console.
    Ir a la página Balanceo de cargas
  2. En la pestaña Balanceadores de carga, selecciona un balanceador de cargas TCP (interno) o UDP (interno).
  3. Haz clic en Editar.
  4. Asegúrate de tener al menos un backend de conmutación por error. Al menos uno de los backends del balanceador de cargas debe tener seleccionada la opción Usar este grupo de instancias como un grupo de conmutación por error para la copia de seguridad.
  5. Haz clic en Configuración avanzada.
    • En Política de conmutación por error, establece la Proporción de conmutación por error en un valor entre 0.01.0, incluido.
    • Marca la casilla junto a Habilitar el abandono de tráfico si deseas dejar de recibir tráfico cuando todas las VM activas y las de copia de seguridad no están en buen estado.
    • Marca la casilla junto a Habilitar el desvío de la conexión en la conmutación por error si deseas finalizar las conexiones existentes con rapidez durante la conmutación por error.
  6. Haz clic en Revisar y finalizar y, luego, haz clic en Actualizar.

gcloud

Para definir una política de conmutación por error con la herramienta de línea de comandos de gcloud, actualiza el servicio de backend del balanceador de cargas:

gcloud beta compute backend-services update [BACKEND_SERVICE_NAME] \
   --region [REGION] \
   --failover-ratio [FAILOVER_RATIO] \
   --drop-traffic-if-unhealthy \
   --no-connection-drain-on-failover

en el que:

  • [BACKEND_SERVICE_NAME] es el nombre del servicio de backend del balanceador de cargas. Para el ejemplo, usa be-ilb.
  • [REGION] es la región del balanceador de cargas. Para el ejemplo, usa us-west1.
  • [FAILOVER_RATIO] es la proporción de conmutación por error. Los valores posibles están entre 0.01.0, incluido. Para el ejemplo, usa 0.75.
  • --drop-traffic-if-unhealthy indica al balanceador de cargas que deje de recibir tráfico cuando todas las VM principales y las de copia de seguridad no estén en buen estado. Cambia esto a --no-drop-traffic-if-unhealthy si deseas distribuir el tráfico entre todas las VM principales cuando todas las de backend estén en mal estado.
  • --no-connection-drain-on-failover indica al balanceador de cargas que finalice con rapidez las conexiones TCP existentes durante la conmutación por error. Usa --connection-drain-on-failover para habilitar el desvío de la conexión durante la conmutación por error.

api

Usa el método regionBackendServices.patch para definir la política de conmutación por error.

PATCH https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/backendServices/[BACKEND_SERVICE_NAME]

{
  "failoverPolicy":
  {
    "failoverRatio": [FAILOVER_RATIO],
    "dropTrafficIfUnhealthy": [true|false],
    "disableConnectionDrainOnFailover": [true|false]
  }
}

en el que:

  • [PROJECT_ID] es el ID del proyecto.
  • [REGION] es la región del balanceador de cargas.
  • [BACKEND_SERVICE_NAME] es el nombre del servicio de backend del balanceador de cargas.
  • [FAILOVER_RATIO] es la proporción de conmutación por error. Los valores posibles están entre 0.01.0, incluido.
  • Si se establece dropTrafficIfUnhealthy como true, se indica al balanceador de cargas que deje de recibir tráfico cuando todas las VM principales y de copia de seguridad no estén en buen estado. Establece esto como false si deseas distribuir el tráfico entre todas las VM principales cuando todas las de backend estén en mal estado.
  • Si se configura disableConnectionDrainOnFailover como true, el balanceador de cargas finalizará con rapidez las conexiones TCP existentes cuando se realice una conmutación por error. Establece esto como false para habilitar el desvío de la conexión durante la conmutación por error.

Visualiza una política de conmutación por error

En las siguientes instrucciones, se describe cómo ver la política de conmutación por error existente para un balanceador de cargas TCP/UDP interno.

Console

GCP Console muestra la configuración existente de la política de conmutación por error cuando se edita un balanceador de cargas TCP/UDP interno. Consulta la definición de una política de conmutación por error para obtener instrucciones.

gcloud

Para enumerar la configuración de la política de conmutación por error con la herramienta de línea de comandos de gcloud, usa el siguiente comando. Si no se define la configuración en una política de conmutación por error, se usan los valores de la política de conmutación por error predeterminados.

gcloud beta compute backend-services describe [BACKEND_SERVICE_NAME] \
   --region [REGION] \
   --format="get(failoverPolicy)"

en el que:

  • [BACKEND_SERVICE_NAME] es el nombre del servicio de backend del balanceador de cargas. Para el ejemplo, usa be-ilb.
  • [REGION] es la región del balanceador de cargas. Para el ejemplo, usa us-west1.

api

Usa el método regionBackendServices.get para ver la política de conmutación por error.

La respuesta de la solicitud a la API muestra la política de conmutación por error. A continuación, se muestra un ejemplo:

GET https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/backendServices/[BACKEND_SERVICE_NAME]

en el que:

  • [PROJECT_ID] es el ID del proyecto.
  • [REGION] es la región del balanceador de cargas.
  • [BACKEND_SERVICE_NAME] es el nombre del servicio de backend del balanceador de cargas.
{
...
"failoverPolicy": {
"disableConnectionDrainOnFailover": false,
"dropTrafficIfUnhealthy": false,
"failoverRatio": 0.75
...
}

Próximos pasos

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…