En esta guía se usa un ejemplo para mostrarte cómo configurar la conmutación por error de un balanceador de carga de red interno de transferencia directa Google Cloud . Antes de seguir esta guía, familiarícese con lo siguiente:
- Conceptos de los balanceadores de carga de red de paso a través internos
- Conceptos de conmutación por error para los balanceadores de carga de red de paso a través internos
- Resumen de las reglas de cortafuegos
- Conceptos de la comprobación del estado
Permisos
Para seguir esta guía, debes crear instancias y modificar una red en un proyecto. Debes tener el rol de propietario o editor del proyecto, o bien tener todos los roles de gestión de identidades y accesos de Compute Engine siguientes:
Tarea | Rol obligatorio |
---|---|
Crear redes, subredes y componentes de balanceador de carga | Administrador de red |
Añadir y eliminar reglas de cortafuegos | Administrador de seguridad |
Crear instancias | Administrador de instancias de Compute |
Para obtener más información, consulta las siguientes guías:
Configuración
En esta guía se explica cómo configurar y probar un balanceador de carga de red interno de tipo pasarela que usa la conmutación por error. En los pasos de esta sección se describe cómo configurar lo siguiente:
- Una red de VPC de ejemplo con subredes personalizadas
- Reglas de cortafuegos que permiten las conexiones entrantes a las VMs de backend
- VMs de backend:
- Un backend principal en un grupo de instancias sin gestionar de la zona
us-west1-a
- Un backend de conmutación por error en un grupo de instancias sin gestionar de la zona
us-west1-c
- Un backend principal en un grupo de instancias sin gestionar de la zona
- Una máquina virtual de cliente para probar las conexiones y observar el comportamiento de la conmutación por error
- Los siguientes componentes del balanceador de carga de red de paso a través interno:
- Una comprobación del estado del servicio de backend
- Un servicio de backend interno en la región
us-west1
para gestionar la distribución de conexiones entre las VMs de backend - Una regla de reenvío interna y una dirección IP interna para el frontend del balanceador de carga
La arquitectura de este ejemplo es la siguiente:
En este ejemplo, los grupos de instancias sin gestionar se usan tanto para los back-ends principales como para los de conmutación por error. Para obtener más información, consulta la sección sobre los grupos de instancias admitidos.
Configurar una red, una región y una subred
En este ejemplo se usan la siguiente red de VPC, región y subred:
Red: la red es una red de VPC en modo personalizado llamada
lb-network
.Región:
us-west1
.Subred: la subred
lb-subnet
usa el intervalo de IP10.1.2.0/24
.
Para crear la red y la subred de ejemplo, sigue estos pasos.
Consola
En la Google Cloud consola, ve a la página Redes de VPC.
Haz clic en Crear red VPC.
Asigne un Nombre de
lb-network
.En la sección Subredes:
- Elige Personalizado en Modo de creación de subred.
- En la sección Nueva subred, introduce la siguiente información:
- Nombre:
lb-subnet
- Región:
us-west1
- Intervalo de direcciones IP:
10.1.2.0/24
- Haz clic en Listo.
- Nombre:
Haz clic en Crear.
gcloud
Crea la red VPC personalizada:
gcloud compute networks create lb-network --subnet-mode=custom
Crea una subred en la red
lb-network
de la regiónus-west1
:gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
API
Haz una solicitud POST
al método networks.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/networks
{ "routingConfig": { "routingMode": "REGIONAL" }, "name": "lb-network", "autoCreateSubnetworks": false }
Haz una solicitud POST
al método
subnetworks.insert
. Sustituye PROJECT_ID
por el ID de tu proyecto. Google Cloud
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/subnetworks
{ "name": "lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "privateIpGoogleAccess": false }
Configurar reglas de cortafuegos
En este ejemplo se usan las siguientes reglas de cortafuegos:
fw-allow-lb-subnet
: una regla de entrada aplicable a todos los destinos de la red VPC que permite el tráfico de fuentes del intervalo10.1.2.0/24
. Esta regla permite el tráfico entrante de cualquier fuente dentro delb-subnet
a las instancias (VMs) que se están balanceando.fw-allow-ssh
: regla de entrada aplicada a las instancias que se están balanceando, que permite la conectividad SSH entrante en el puerto TCP 22 desde cualquier dirección. Puede elegir un intervalo de IPs de origen más restrictivo para esta regla. Por ejemplo, puede especificar los intervalos de IPs de los sistemas desde los que tiene previsto iniciar sesiones SSH. En este ejemplo se usa la etiqueta de destinoallow-ssh
para identificar las VMs a las que se aplica la regla de cortafuegos.fw-allow-health-check
: una regla de entrada, aplicable a las instancias con balanceo de carga, que permite el tráfico de los sistemas de comprobación del estado ( Google Cloud ,130.211.0.0/22
y35.191.0.0/16
). En este ejemplo, se usa la etiqueta de destinoallow-health-check
para identificar las instancias a las que se debe aplicar.
Sin estas reglas de cortafuegos, la regla denegar predeterminada de entrada bloquea el tráfico entrante a las instancias de backend.
Consola
En la Google Cloud consola, ve a la página Políticas de cortafuegos.
Haz clic en Crear regla de cortafuegos e introduce la siguiente información para crear la regla que permita el tráfico de subred:
- Nombre:
fw-allow-lb-subnet
- Red:
lb-network
- Prioridad:
1000
- Dirección del tráfico: entrada
- Acción tras coincidencia: permitir
- Destinos: todas las instancias de la red
- Filtro de origen: Intervalos de IPv4
- Intervalos de IPv4 de origen:
10.1.2.0/24
- Protocolos y puertos: permitir todos
- Nombre:
Haz clic en Crear.
Vuelve a hacer clic en Crear regla de cortafuegos para crear la regla que permita las conexiones SSH entrantes:
- Nombre:
fw-allow-ssh
- Red:
lb-network
- Prioridad:
1000
- Dirección del tráfico: entrada
- Acción tras coincidencia: permitir
- Destinos: etiquetas de destino especificadas
- Etiquetas de destino:
allow-ssh
- Filtro de origen: Intervalos de IPv4
- Intervalos de IPv4 de origen:
0.0.0.0/0
- Protocolos y puertos: elige Protocolos y puertos especificados y, a continuación, escribe
tcp:22
.
- Nombre:
Haz clic en Crear.
Haz clic en Crear regla de cortafuegos por tercera vez para crear la regla que permita las comprobaciones del estado:Google Cloud
- Nombre:
fw-allow-health-check
- Red:
lb-network
- Prioridad:
1000
- Dirección del tráfico: entrada
- Acción tras coincidencia: permitir
- Destinos: etiquetas de destino especificadas
- Etiquetas de destino:
allow-health-check
- Filtro de origen: Intervalos de IPv4
- Intervalos de IPv4 de origen:
130.211.0.0/22
y35.191.0.0/16
- Protocolos y puertos: permitir todos
- Nombre:
Haz clic en Crear.
gcloud
Crea la regla de cortafuegos
fw-allow-lb-subnet
para permitir la comunicación desde 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
Crea la regla de cortafuegos
fw-allow-ssh
para permitir la conectividad SSH a las VMs con la etiqueta de redallow-ssh
. Si omitesource-ranges
, Google Cloud interpreta que la regla se aplica a cualquier fuente.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Crea la regla
fw-allow-health-check
para permitir Google Cloud las comprobaciones del estado.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
API
Crea la regla de cortafuegos fw-allow-lb-subnet
haciendo una solicitud POST
al método firewalls.insert
. Sustituye PROJECT_ID
por el ID de tu proyecto. Google Cloud
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/firewalls
{ "name": "fw-allow-lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "10.1.2.0/24" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Crea la regla de cortafuegos fw-allow-ssh
haciendo una solicitud POST
al método firewalls.insert
. Sustituye PROJECT_ID
por el ID de tu proyecto. Google Cloud
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/firewalls
{ "name": "fw-allow-ssh", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "0.0.0.0/0" ], "targetTags": [ "allow-ssh" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Crea la regla de cortafuegos fw-allow-health-check
haciendo una solicitud POST
al método firewalls.insert
. Sustituye PROJECT_ID
por el ID de tu proyecto. Google Cloud
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/firewalls
{ "name": "fw-allow-health-check", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "allow-health-check" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Crear VMs y grupos de instancias de backend
En este paso, crearás las VMs de backend y los grupos de instancias sin gestionar:
- El grupo de instancias
ig-a
deus-west1-a
es un backend principal con dos VMs:vm-a1
vm-a2
- El grupo de instancias
ig-c
deus-west1-c
es un backend de conmutación por error con dos VMs:vm-c1
vm-c2
Los back-ends principal y de conmutación por error se colocan en zonas independientes para que las instrucciones sean más claras y para gestionar la conmutación por error en caso de que una de las zonas deje de funcionar.
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 el acceso de los clientes y una dirección IP externa (pública) efímera para el acceso SSH.
Para obtener información sobre cómo quitar direcciones IP externas, consulta el artículo sobre cómo quitar direcciones IP externas de máquinas virtuales de backend.
De forma predeterminada, Apache está configurado para enlazarse a cualquier dirección IP. Los balanceadores de carga de red de paso a través internos envían paquetes conservando la dirección IP de destino.
Asegúrate de que el software del servidor que se ejecuta en tus máquinas virtuales principal y de copia de seguridad esté escuchando en la dirección IP de la regla de reenvío interna del balanceador de carga. Si configuras varias reglas de reenvío internas, asegúrate de que tu software escuche la dirección IP interna asociada a cada una de ellas. La dirección IP de destino de un paquete que un balanceador de carga de red pasante interno entrega a una máquina virtual de backend es la dirección IP interna de la regla de reenvío.
Para simplificar las instrucciones, todas las máquinas virtuales principales y de copia de seguridad ejecutan Debian GNU/Linux 12.
Consola
Crear VMs de backend
En la consola de Google Cloud , ve a la página Instancias de VM.
Repite los pasos siguientes para crear cuatro VMs 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
- Nombre:
Haz clic en Crear instancia.
Asigna el Nombre como se indica en el paso 2.
En Región, elige
us-west1
y, en Zona, selecciona la opción que se indica en el paso 2.En la sección Disco de arranque, comprueba que la imagen seleccionada sea Debian GNU/Linux 12 (bookworm). Haz clic en Elegir para cambiar la imagen si es necesario.
Haz clic en Advanced options (Opciones avanzadas).
Haga clic en Redes y configure los siguientes campos:
- En Etiquetas de red, introduce
allow-health-check
yallow-ssh
. - En Interfaces de red, selecciona lo siguiente:
- Red:
lb-network
- Subred:
lb-subnet
- Red:
- En Etiquetas de red, introduce
Haz clic en Gestión. Introduce la siguiente secuencia de comandos en el campo Secuencia de comandos de inicio. El contenido de la secuencia de comandos es idéntico en las cuatro VMs:
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Haz clic en Crear.
Crear grupos de instancias
En la consola, ve a la página Grupos de instancias. Google Cloud
Repite los pasos siguientes para crear dos grupos de instancias no gestionados, cada uno con dos VMs, usando estas combinaciones.
- Grupo de instancias:
ig-a
, zona:us-west1-a
, VMs:vm-a1
yvm-a2
- Grupo de instancias:
ig-c
, zona:us-west1-c
, VMs:vm-c1
yvm-c2
- Grupo de instancias:
Haz clic en Crear grupo de instancias.
Haga clic en Nuevo grupo de instancias sin gestionar.
Asigna el Nombre como se indica en el paso 2.
En la sección Ubicación, elija
us-west1
en Región y, a continuación, seleccione una Zona como se indica en el paso 2.En Red, escribe
lb-network
.En Subred, introduce
lb-subnet
.En la sección Instancias de VM, añade las VMs como se indica en el paso 2.
Haz clic en Crear.
gcloud
Crea cuatro VMs ejecutando el siguiente comando cuatro veces y usando estas cuatro combinaciones para
VM_NAME
yZONE
. El contenido de la secuencia de comandos es idéntico en las cuatro VMs.VM_NAME
devm-a1
yZONE
deus-west1-a
VM_NAME
devm-a2
yZONE
deus-west1-a
VM_NAME
devm-c1
yZONE
deus-west1-c
VM_NAME
devm-c2
yZONE
deus-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --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://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Crea los dos grupos de instancias sin gestionar 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
Añade las VMs a los grupos de instancias correspondientes:
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
API
Crea cuatro VMs backend haciendo cuatro solicitudes POST
al método instances.insert
.
En las cuatro VMs, usa los siguientes nombres y zonas:
VM_NAME
devm-a1
yZONE
deus-west1-a
VM_NAME
devm-a2
yZONE
deus-west1-a
VM_NAME
devm-c1
yZONE
deus-west1-c
VM_NAME
devm-c2
yZONE
deus-west1-c
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoZONE
: la zona de la instanciaDEBIAN_IMAGE_NAME
: el nombre de la imagen de Debian de la instancia. LaDEBIAN_IMAGE_NAME
actual se puede obtener ejecutando el siguiente comandogcloud
:gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/ZONE
/instances
{ "name": "VM_NAME", "tags": { "items": [ "allow-health-check", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "VM_NAME", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Crea dos grupos de instancias haciendo una solicitud POST
al método instanceGroups.insert
. Sustituye PROJECT_ID
por el ID de tu proyecto. Google Cloud
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups
{ "name": "ig-a", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups
{ "name": "ig-c", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
Añade instancias a cada grupo de instancias haciendo una solicitud POST
al método instanceGroups.addInstances
. Sustituye PROJECT_ID
por el ID de tu proyecto. Google Cloud
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups/ig-a/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a2" } ] }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups/ig-c/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c2" } ] }
Crear una VM cliente
En este ejemplo, se crea una VM de cliente (vm-client
) en la misma región que el balanceador de carga. El cliente se usa para demostrar cómo funciona la conmutación por error.
Consola
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en Crear instancia.
Asigna el valor
vm-client
a Nombre.En Zona, elija
us-west1-a
.Haz clic en Advanced options (Opciones avanzadas).
Haga clic en Redes y configure los siguientes campos:
- En Etiquetas de red, introduzca
allow-ssh
. - En Interfaces de red, selecciona lo siguiente:
- Red:
lb-network
- Subred:
lb-subnet
- Red:
- En Etiquetas de red, introduzca
Haz clic en Crear.
gcloud
La VM cliente puede estar en cualquier zona de la misma región que el balanceador de carga y puede usar cualquier subred de esa región. En este ejemplo, el cliente está en la zona us-west1-a
y usa la misma subred que las VMs principal y de copia de seguridad.
gcloud compute instances create vm-client \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=lb-subnet
API
Haz una solicitud POST
al método
instances.insert
.
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoDEBIAN_IMAGE_NAME
: el nombre de la imagen de Debian de la instancia. LaDEBIAN_IMAGE_NAME
actual se puede obtener ejecutando el siguiente comandogcloud
:gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instances
{ "name": "vm-client", "tags": { "items": [ "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-client", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "scheduling": { "preemptible": false }, "deletionProtection": false }
Configurar componentes de balanceadores de carga
En estos pasos se configuran todos los componentes del balanceador de carga de red de pases interno, empezando por la comprobación de estado y el servicio de backend, y, a continuación, los componentes de frontend:
Comprobación del estado: en este ejemplo se usa una comprobación del estado de HTTP que simplemente comprueba si hay una respuesta HTTP
200
(Correcto). Para obtener más información, consulta la sección de comprobaciones del estado del artículo sobre el balanceador de carga de red interno de pases.Servicio de backend: como el ejemplo envía tráfico HTTP a través del balanceador de carga, 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 única regla de reenvío interna.
Dirección IP interna: en este ejemplo, especificamos una dirección IP interna,
10.1.2.99
, al crear la regla de reenvío.
Consola
Iniciar la configuración
En la Google Cloud consola, ve a la página Balanceo de carga.
- Haga clic en Crear balanceador de carga.
- En Tipo de balanceador de carga, selecciona Balanceador de carga de red (TCP/UDP/SSL) y haz clic en Siguiente.
- En Proxy o pasarela, selecciona Balanceador de carga de pasarela y haz clic en Siguiente.
- En Público o interno, selecciona Interno y haz clic en Siguiente.
- Haz clic en Configurar.
Configuración básica
- Asigna el valor
be-ilb
a Nombre. - Define Región como
us-west1
. - Selecciona Red y, a continuación,
lb-network
. - Haz clic en Configuración de backend y haz los siguientes cambios:
- En Backends (Back-ends), en la sección New item (Nuevo elemento), seleccione el grupo de instancias
ig-a
. Comprueba que la opción Usar este grupo de instancias como grupo de conmutaciones por error alternativo no esté marcada. Haz clic en Hecho. - Haz clic en Añadir backend. En la sección Nuevo elemento que aparece, selecciona el grupo de instancias
ig-c
. Marca Usar este grupo de instancias como grupo de conmutaciones por error alternativo. Haz clic en Listo. - En Comprobación del estado, elige Crear otra comprobación del estado,
introduce la siguiente información y haz clic en Guardar y continuar:
- Nombre:
hc-http-80
- Protocolo:
HTTP
- Puerto:
80
- Protocolo de proxy:
NONE
- Ruta de la solicitud:
/
Ten en cuenta que, cuando usas la consola Google Cloud para crear tu balanceador de carga, la comprobación del estado es global. Si quieres crear una comprobación del estado regional, usagcloud
o la API.
- Nombre:
- Haz clic en Configuraciones avanzadas. En la sección Política de conmutación por error, configure lo siguiente:
- Índice de conmutación por error:
0.75
- Marca Habilitar desviación de conexiones al producirse una conmutación por error.
- Índice de conmutación por error:
- Comprueba que haya una marca de verificación azul junto a Configuración del backend antes de continuar. Si no es así, revisa este paso.
- En Backends (Back-ends), en la sección New item (Nuevo elemento), seleccione el grupo de instancias
- Haz clic en Configuración de frontend. En la sección IP de frontend y puerto nuevos, haz los siguientes cambios:
- Nombre:
fr-ilb
- Subred:
ilb-subnet
- En IP interna, elige Reservar dirección IP estática interna, introduce la siguiente información y haz clic en Reservar:
- Nombre:
ip-ilb
- Dirección IP estática: Quiero elegir
- Dirección IP personalizada:
10.1.2.99
- Nombre:
- Puertos: elige Único e introduce
80
en el campo Número de puerto. - Verifica que haya una marca de verificación azul junto a Configuración del frontend antes de continuar. Si no es así, revisa este paso.
- Nombre:
- Haz clic en Revisar y finalizar. Comprueba tu configuración.
- Haz clic en Crear.
gcloud
Crea una comprobación del estado de HTTP para probar la conectividad TCP a las VMs en el puerto 80.
gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80
Crea el servicio de backend para el tráfico HTTP:
gcloud compute backend-services create be-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1 \ --failover-ratio 0.75
Añade 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
Añade el backend de failover al servicio backend:
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-c \ --instance-group-zone=us-west1-c \ --failover
Crea una regla de reenvío para el servicio de backend. Cuando cree la regla de reenvío, especifique
10.1.2.99
para la IP interna de 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
API
Para crear la comprobación del estado, haz una solicitud POST
al método
regionHealthChecks.insert
. Sustituye PROJECT_ID
por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/regionHealthChecks
{ "name": "hc-http-80", "type": "HTTP", "httpHealthCheck": { "port": 80 } }
Crea el servicio backend regional haciendo una solicitud POST
al método regionBackendServices.insert
. Sustituye PROJECT_ID
por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/backendServices
{ "name": "be-ilb", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" }, { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c", "balancingMode": "CONNECTION" "failover": true } ], "failoverPolicy": { "failoverRatio": 0.75 }, "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "connectionDraining": { "drainingTimeoutSec": 0 } }
Crea la regla de reenvío haciendo una solicitud POST
al método forwardingRules.insert
. Sustituye PROJECT_ID
por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/forwardingRules
{ "name": "fr-ilb", "IPAddress": "10.1.2.99", "IPProtocol": "TCP", "ports": [ "80", "8008", "8080", "8088" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb", "networkTier": "PREMIUM" }
Pruebas
Estas pruebas muestran cómo validar la configuración del balanceador de carga y cómo conocer su comportamiento esperado.
Procedimiento de prueba de cliente
Este procedimiento se pone en contacto con el balanceador de carga desde la VM cliente. Seguirás este procedimiento para completar las demás pruebas.
Conéctate a la instancia de VM cliente.
gcloud compute ssh vm-client --zone=us-west1-a
Haz una solicitud web al balanceador de carga mediante
curl
para ponerte en contacto con su dirección IP.curl http://10.1.2.99
Fíjate en el texto devuelto por el comando
curl
. El nombre de la VM backend que genera la respuesta se muestra en ese texto. Por ejemplo:Page served from: vm-a1
Prueba del estado inicial
Una vez que hayas configurado el balanceador de carga de ejemplo, las cuatro VMs de backend deberían estar en buen estado:
- Las dos máquinas virtuales principales,
vm-a1
yvm-a2
- las dos VMs de copia de seguridad,
vm-c1
yvm-c2
Sigue el procedimiento de prueba del cliente. Repite el segundo paso varias veces. Lo normal es que el tráfico se sirva mediante las dos máquinas virtuales principales, vm-a1
y vm-a2
, ya que ambas están en buen estado. Deberías ver que cada VM principal sirve una respuesta aproximadamente la mitad del tiempo, porque no se ha configurado ninguna afinidad de sesión para este balanceador de carga.
Prueba de conmutación por error
Esta prueba simula el fallo de vm-a1
para que puedas observar el comportamiento de la conmutación por error.
Conéctate a la VM
vm-a1
.gcloud compute ssh vm-a1 --zone=us-west1-a
Detén el servidor web Apache. Después de diez segundos, Google Cloudconsidera que esta VM no está en buen estado. (La comprobación del estado
hc-http-80
que has creado en la configuración usa el intervalo de comprobación predeterminado de cinco segundos y el umbral de mal estado de dos sondeos fallidos consecutivos).sudo apachectl stop
Sigue el procedimiento de prueba del cliente. Repite el segundo paso varias veces. Lo normal es que el tráfico se publique en las dos VMs de copia de seguridad,
vm-c1
yvm-c2
. Como solo hay una VM principal en buen estado (vm-a2
), la proporción de VMs principales en buen estado con respecto al total de VMs principales es0.5
. Este número es inferior al umbral de conmutación por error de0.75
, por lo queGoogle Cloud ha vuelto a configurar el grupo activo del balanceador de carga para que use las VMs de copia de seguridad. Deberías ver que cada VM de copia de seguridad responde aproximadamente la mitad del tiempo siempre que no se haya configurado ninguna afinidad de sesión para este balanceador de carga.
Prueba de conmutación por error
Esta prueba simula una conmutación por recuperación reiniciando el servidor Apache en vm-a1
.
Conéctate a la VM
vm-a1
.gcloud compute ssh vm-a1 --zone=us-west1-a
Inicia el servidor web Apache y espera 10 segundos.
sudo apachectl start
Sigue el procedimiento de prueba del cliente. Repite el segundo paso varias veces. Lo normal es que el tráfico se publique en las dos máquinas virtuales principales,
vm-a1
yvm-a2
. Como ambas VMs principales están en buen estado, la proporción de VMs principales en buen estado con respecto al total de VMs principales es1.0
, que es superior al umbral de conmutación por error de0.75
, por lo que Google Cloud ha configurado el grupo activo para que vuelva a usar las VMs principales.
Añadir más VMs de backend
En esta sección se amplía la configuración de ejemplo añadiendo más VMs principales y de copia de seguridad al balanceador de carga. Para ello, crea dos grupos de instancias de backend más para demostrar que puedes distribuir las VMs principales y de copia de seguridad entre varias zonas de la misma región:
- Un tercer grupo de instancias,
ig-d
enus-west1-c
, actúa como backend principal con dos VMs:vm-d1
vm-d2
- Un cuarto grupo de instancias,
ig-b
enus-west1-a
, actúa como backend de conmutación por error con dos VMs:vm-b1
vm-b2
La arquitectura modificada de este ejemplo es la siguiente:
Crear más VMs y grupos de instancias
Sigue estos pasos para crear las VMs principales y de copia de seguridad adicionales, así como los grupos de instancias no gestionados correspondientes.
Consola
Crear VMs de backend
En la consola de Google Cloud , ve a la página Instancias de VM.
Repite los pasos siguientes para crear cuatro VMs 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
- Nombre:
Haz clic en Crear instancia.
Asigna el Nombre como se indica en el paso 2.
En Región, elige
us-west1
y, en Zona, selecciona la opción que se indica en el paso 2.En la sección Disco de arranque, comprueba que la imagen seleccionada sea Debian GNU/Linux 12 (bookworm). Haz clic en Elegir para cambiar la imagen si es necesario.
Haz clic en Opciones avanzadas y haz los siguientes cambios:
- Haga clic en Redes y añada las siguientes etiquetas de red:
allow-ssh
yallow-health-check
. - Haz clic en el botón de edición situado debajo de Interfaces de red y haz los siguientes cambios. A continuación, haz clic en Hecho:
- Red:
lb-network
- Subred:
lb-subnet
- IP interna principal: efímera (automática)
- IP externa: efímera
- Red:
Haz clic en Gestión. En el campo Startup script (Secuencia de comandos de inicio), copia y pega el siguiente contenido de la secuencia de comandos. El contenido de la secuencia de comandos es idéntico en las cuatro VMs:
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
- Haga clic en Redes y añada las siguientes etiquetas de red:
Haz clic en Crear.
Crear grupos de instancias
En la consola, ve a la página Grupos de instancias. Google Cloud
Repite los pasos siguientes para crear dos grupos de instancias no gestionados, cada uno con dos VMs, usando estas combinaciones.
- Grupo de instancias:
ig-b
, zona:us-west1-a
, VMs:vm-b1
yvm-b2
- Grupo de instancias:
ig-d
, zona:us-west1-c
, VMs:vm-d1
yvm-d2
- Grupo de instancias:
Haz clic en Crear grupo de instancias.
Haga clic en Nuevo grupo de instancias sin gestionar.
Asigna el Nombre como se indica en el paso 2.
En la sección Ubicación, elija
us-west1
en Región y, a continuación, seleccione una Zona como se indica en el paso 2.En Red, escribe
lb-network
.En Subred, introduce
lb-subnet
.En la sección Instancias de VM, añade las VMs como se indica en el paso 2.
Haz clic en Crear.
gcloud
Crea cuatro VMs ejecutando el siguiente comando cuatro veces y usando estas cuatro combinaciones para
VM_NAME
yZONE
. El contenido de la secuencia de comandos es idéntico en las cuatro VMs.VM_NAME
devm-b1
yZONE
deus-west1-a
VM_NAME
devm-b2
yZONE
deus-west1-a
VM_NAME
devm-d1
yZONE
deus-west1-c
VM_NAME
devm-d2
yZONE
deus-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --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://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Crea los dos grupos de instancias sin gestionar 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
Añade las VMs a los grupos de instancias correspondientes:
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
API
Crea cuatro VMs backend haciendo cuatro solicitudes POST
al método instances.insert
.
En las cuatro VMs, usa los siguientes nombres y zonas:
VM_NAME
devm-b1
yZONE
deus-west1-a
VM_NAME
devm-b2
yZONE
deus-west1-a
VM_NAME
devm-d1
yZONE
deus-west1-c
VM_NAME
devm-d2
yZONE
deus-west1-c
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoDEBIAN_IMAGE_NAME
: el nombre de la imagen de Debian de la instancia. LaDEBIAN_IMAGE_NAME
actual se puede obtener ejecutando el siguiente comandogcloud
:gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/ZONE/instances
{ "name": "VM_NAME", "tags": { "items": [ "allow-health-check", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "VM_NAME", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Crea dos grupos de instancias haciendo una solicitud POST
al método instanceGroups.insert
. Sustituye PROJECT_ID
por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups
{ "name": "ig-b", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups
{ "name": "ig-d", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
Añade instancias a cada grupo de instancias haciendo una solicitud POST
al método instanceGroups.addInstances
. Sustituye PROJECT_ID
por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups/ig-b/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b2" } ] }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups/ig-d/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d2" } ] }
Añadir un backend principal
Puedes usar este procedimiento como plantilla para añadir un grupo de instancias no gestionado al servicio de backend de un balanceador de carga de red interno de transferencia directa como backend principal. En la configuración de ejemplo, este procedimiento muestra cómo añadir el grupo de instancias ig-d
como backend principal al balanceador de carga be-ilb
.
Consola
En la Google Cloud consola, ve a la página Balanceo de carga.
En la pestaña Balanceadores de carga, haz clic en el nombre de un balanceador de carga TCP interno o UDP interno (en este ejemplo,
be-ilb
).Haz clic en Editar
.En Configuración de backend, haga clic en Añadir backend y seleccione un grupo de instancias no gestionado (en este ejemplo,
ig-d
).Asegúrate de que la opción Usar este grupo de instancias como grupo de conmutaciones por error alternativo no esté marcada.
Haz clic en Hecho y, a continuación, en Actualizar.
gcloud
Usa el siguiente comando gcloud
para añadir un backend principal al servicio de backend de un balanceador de carga de red interno de transferencia existente.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION
Haz los cambios siguientes:
BACKEND_SERVICE_NAME
: el nombre del servicio de backend del balanceador de carga. En este ejemplo, usabe-ilb
.INSTANCE_GROUP_NAME
: el nombre del grupo de instancias que se va a añadir como backend principal. En este ejemplo, usaig-d
.INSTANCE_GROUP_ZONE
: es la zona en la que se define el grupo de instancias. En este ejemplo, usaus-west1-c
.REGION
: la región del balanceador de carga. En este ejemplo, usaus-west1
.
API
Añade un backend principal a un servicio de backend que ya tengas con el método regionBackendServices.patch
.
POST https://compute.googleapis.com/compute/v1/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" } ] }
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoREGION
: la región del balanceador de carga. Por ejemplo, usaus-west1
.BACKEND_SERVICE_NAME
: el nombre del servicio de backend del balanceador de carga. En este ejemplo, usabe-ilb
.INSTANCE_GROUP_NAME
: el nombre del grupo de instancias que se va a añadir como backend principal. En este ejemplo, usaig-d
.INSTANCE_GROUP_ZONE
: la zona en la que se define el grupo de instancias. En este ejemplo, usaus-west1-c
.
Añadir un backend de failover
Puedes usar este procedimiento como plantilla para añadir un grupo de instancias no gestionado al servicio de backend de un balanceador de carga de red interno de transferencia directa como backend de conmutación por error. En la configuración de ejemplo, este procedimiento muestra cómo añadir el grupo de instancias ig-b
como backend de conmutación por error al balanceador de carga be-ilb
.
Consola
En la Google Cloud consola, ve a la página Balanceo de carga.
En la pestaña Balanceadores de carga, haga clic en el nombre de un balanceador de carga de tipo TCP/UDP (interno) (en este ejemplo,
be-ilb
).Haz clic en Editar
.En Configuración de backend, haga clic en Añadir backend y seleccione un grupo de instancias no gestionado (en este ejemplo,
ig-b
).Marca Usar este grupo de instancias como grupo de conmutaciones por error alternativo.
Haz clic en Hecho y, a continuación, en Actualizar.
gcloud
Usa el siguiente comando gcloud
para añadir un backend de failover
al servicio de backend de un balanceador de carga de red de paso a través interno.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --failover
Haz los cambios siguientes:
BACKEND_SERVICE_NAME
: el nombre del servicio de backend del balanceador de carga. En este ejemplo, usabe-ilb
.INSTANCE_GROUP_NAME
: el nombre del grupo de instancias que se va a añadir como backend principal. En este ejemplo, usaig-b
.INSTANCE_GROUP_ZONE
: es la zona en la que se define el grupo de instancias. En este ejemplo, usaus-west1-a
.REGION
es la región del balanceador de carga. En este ejemplo, usaus-west1
.
API
Añade un backend de failover a un servicio backend con el método regionBackendServices.patch
.
POST https://compute.googleapis.com/compute/v1/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" } ] }
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoBACKEND_SERVICE_NAME
: el nombre del servicio de backend del balanceador de carga. En este ejemplo, usabe-ilb
.INSTANCE_GROUP_NAME
: el nombre del grupo de instancias que se va a añadir como backend principal. En este ejemplo, usaig-b
.INSTANCE_GROUP_ZONE
: es la zona en la que se define el grupo de instancias. En este ejemplo, usaus-west1-a
.REGION
: la región del balanceador de carga. En este ejemplo, usaus-west1
.
Convertir un backend principal o de failover
Puedes convertir un backend principal en un backend de failover o viceversa sin tener que quitar el grupo de instancias del servicio de backend del balanceador de carga de red de pases interno.
Consola
En la Google Cloud consola, ve a la página Balanceo de carga.
En la pestaña Balanceadores de carga, haz clic en el nombre de un balanceador de carga de tipo TCP/UDP (interno).
Haz clic en Editar
.En Configuración de backend, haga clic en el nombre de uno de los grupos de instancias de backend. A continuación, haz lo siguiente:
- Para convertir el grupo de instancias en un backend de conmutación por error, marca la opción Usar este grupo de instancias como grupo de conmutaciones por error alternativo.
- Para que el grupo de instancias sea un backend principal, desmarca la opción Usar este grupo de instancias como grupo de conmutaciones por error alternativo.
Haz clic en Hecho y, a continuación, en Actualizar.
gcloud
Usa el siguiente comando gcloud
para convertir un backend principal en un backend de conmutación por error:
gcloud 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 gcloud
para convertir un backend de conmutación por error en un backend principal:
gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --no-failover
Haz los cambios siguientes:
BACKEND_SERVICE_NAME
: el nombre del servicio de backend del balanceador de cargaINSTANCE_GROUP_NAME
: el nombre del grupo de instancias que se va a añadir como backend principal.INSTANCE_GROUP_ZONE
: la zona en la que se define el grupo de instanciasREGION
: la región del balanceador de carga
API
Convierte un backend principal en un backend de conmutación por error (o viceversa) mediante el método regionBackendServices.patch
.
Para convertir un backend principal en un backend de failover, sigue estos pasos:
POST https://compute.googleapis.com/compute/v1/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" } ] }
Para convertir un backend de failover en un backend principal, sigue estos pasos:
POST https://compute.googleapis.com/compute/v1/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" } ], }
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoBACKEND_SERVICE_NAME
: el nombre del servicio de backend del balanceador de cargaINSTANCE_GROUP_NAME
: el nombre del grupo de instancias que se va a añadir como backend principal.INSTANCE_GROUP_ZONE
: la zona en la que se define el grupo de instanciasREGION
: la región del balanceador de carga
Configurar políticas de conmutación por error
En esta sección se describe cómo gestionar una política de conmutación por error de un servicio de backend de un balanceador de carga de red interno de tipo pasarela. Una política de conmutación por error consta de lo siguiente:
- Índice de conmutación por error
- Eliminar el tráfico cuando todas las VMs de backend estén en mal estado
- Vaciado de conexiones al producirse una conmutación por error
Para obtener más información sobre los parámetros de una política de conmutación por error, consulta los siguientes artículos:
- Definir una proporción de conmutación por error
- Eliminar el tráfico cuando no haya ninguna VM en buen estado
- Desviación de conexiones al producirse una conmutación por error y una conmutación por recuperación
Definir 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 de un balanceador de carga de red interno de pases ya creado.
Consola
Para definir una política de conmutación por error mediante la consola Google Cloud , debes tener al menos un backend de conmutación por error.
En la Google Cloud consola, ve a la página Balanceo de carga.
En la pestaña Balanceadores de carga, haz clic en el nombre de un balanceador de carga de tipo TCP/UDP (interno).
Haz clic en Editar
.Asegúrate de que tienes al menos un backend de conmutación por error. Al menos uno de los back-ends del balanceador de carga debe tener seleccionada la opción Usar este grupo de instancias como grupo de conmutación por error alternativo.
Haz clic en Configuraciones avanzadas.
- En Política de conmutación por error, asigna al Índice de conmutación por error un valor entre
0.0
y1.0
, ambos incluidos. - Marca la casilla situada junto a Habilitar eliminación de tráfico si quieres eliminar tráfico cuando todas las VMs activas y todas las VMs de copia de seguridad no estén en buen estado.
- Marca la casilla situada junto a Habilitar desviación de conexiones al producirse una conmutación por error si quieres finalizar las conexiones actuales rápidamente durante la conmutación por error.
- En Política de conmutación por error, asigna al Índice de conmutación por error un valor entre
Haz clic en Revisar y finalizar y, a continuación, en Actualizar.
gcloud
Para definir una política de conmutación por error con gcloud CLI, actualiza el servicio de backend del balanceador de carga:
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION \ --failover-ratio FAILOVER_RATIO \ --drop-traffic-if-unhealthy \ --no-connection-drain-on-failover
Haz los cambios siguientes:
BACKEND_SERVICE_NAME
: el nombre del servicio de backend del balanceador de carga. En este ejemplo, usabe-ilb
.REGION
: la región del balanceador de carga. En este ejemplo, usaus-west1
.FAILOVER_RATIO
: el índice de conmutación por error. Los valores posibles están comprendidos entre0.0
y1.0
, ambos incluidos. En este ejemplo, usa0.75
.--drop-traffic-if-unhealthy
indica al balanceador de carga que elimine el tráfico cuando todas las VMs principales y todas las VMs de copia de seguridad no estén en buen estado. Cambia este valor a--no-drop-traffic-if-unhealthy
si quieres distribuir el tráfico entre todas las VMs principales cuando todas las VMs de backend estén en mal estado.--no-connection-drain-on-failover
indica al balanceador de carga que cancele rápidamente las conexiones TCP existentes durante la conmutación por error. Usa--connection-drain-on-failover
para habilitar la purga de 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://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "failoverPolicy": { "failoverRatio": FAILOVER_RATIO, "dropTrafficIfUnhealthy": [true|false], "disableConnectionDrainOnFailover": [true|false] } }
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoREGION
: la región del balanceador de cargaBACKEND_SERVICE_NAME
: el nombre del servicio de backend del balanceador de cargaFAILOVER_RATIO
: el índice de conmutación por error. Los valores posibles están comprendidos entre0.0
y1.0
, ambos incluidos.- Si se asigna el valor
dropTrafficIfUnhealthy
atrue
, se indica al balanceador de carga que elimine el tráfico cuando todas las VMs principales y todas las VMs de copia de seguridad no estén en buen estado. Asigna el valorfalse
si quieres distribuir el tráfico entre todas las VMs principales cuando todas las VMs de backend estén en mal estado. - Si se asigna el valor
disableConnectionDrainOnFailover
atrue
, se indica al balanceador de carga que finalice rápidamente las conexiones TCP existentes cuando se realice una conmutación por error. Defina este valor enfalse
para habilitar la purga de conexiones durante la conmutación por error.
Ver 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 de un balanceador de carga de red de paso a través interno.
Consola
La Google Cloud consola muestra la configuración de la política de conmutación por error cuando editas un balanceador de carga de red pasante interno. Consulta las instrucciones para definir una política de conmutación por error.
gcloud
Para enumerar los ajustes de la política de conmutación por error con gcloud CLI, usa el siguiente comando. Los ajustes indefinidos de una política de conmutación por error usan los valores predeterminados de la política de conmutación por error.
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION \ --format="get(failoverPolicy)"
Haz los cambios siguientes:
BACKEND_SERVICE_NAME
: el nombre del servicio de backend del balanceador de cargaREGION
: la región del balanceador de carga
API
Usa el método regionBackendServices.get
para ver la política de conmutación por error.
La respuesta a la solicitud de la API muestra la política de conmutación por error. A continuación, se muestra un ejemplo.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoREGION
: la región del balanceador de cargaBACKEND_SERVICE_NAME
: el nombre del servicio de backend del balanceador de carga
{ ... "failoverPolicy": { "disableConnectionDrainOnFailover": false, "dropTrafficIfUnhealthy": false, "failoverRatio": 0.75 ... }
Siguientes pasos
- Consulta la descripción general del balanceador de carga de red de paso a través interno para obtener información básica importante.
- Consulta Conceptos de conmutación por error para los balanceadores de carga de red de paso a través internos para obtener información importante sobre la conmutación por error.
- Consulta Configurar un balanceador de carga de red de paso a través interno para ver un ejemplo de configuración de un balanceador de carga de red de paso a través interno.
- Consulta Registro y monitorización del balanceador de carga de red de paso a través interno para obtener información sobre cómo configurar el registro y la monitorización del balanceador de carga de red de paso a través interno.
- Consulta Balanceadores de carga de red de paso a través internos y redes conectadas para obtener información sobre cómo acceder a balanceadores de carga de red de paso a través internos desde redes peer conectadas a tu red de VPC.
- Consulta el artículo Solucionar problemas de balanceadores de carga de red de paso a través internos para obtener información sobre cómo solucionar problemas con tu balanceador de carga de red de paso a través interno.
- Limpiar la configuración del balanceador de carga.