En esta página se explica cómo implementar el balanceador de carga de aplicaciones clásico para balancear la carga del tráfico a los endpoints de red que se encuentran en entornos on-premise o en otras nubes públicas y a los que se puede acceder mediante conectividad híbrida.
.Una vez que hayas completado estas tareas, puedes habilitar otros servicios (como Cloud CDN y Google Cloud Armor) y funciones avanzadas de gestión del tráfico.
Si aún no lo has hecho, consulta la descripción general de los NEG de conectividad híbrida para conocer los requisitos de red necesarios para configurar el balanceo de carga híbrido.
Descripción general de la configuración
En el ejemplo de esta página se configura la siguiente implementación de muestra:
Debes configurar la conectividad híbrida antes de intentar configurar una implementación de equilibrio de carga híbrida. Este documento no incluye la configuración de la conectividad híbrida.
En función del producto de conectividad híbrida que elijas (Cloud VPN o Cloud Interconnect [Dedicated o Partner]), consulta la documentación del producto correspondiente para configurarlo.
Permisos
Para configurar el balanceo de carga híbrido, debes tener los siguientes permisos:
Activado Google Cloud
- Permisos para establecer la conectividad híbrida entre Google Cloud y tu entorno on-premise u otros entornos de nube. Para ver la lista de permisos necesarios, consulta la documentación del producto de conectividad de red correspondiente.
- Permisos para crear un NEG de conectividad híbrida y el balanceador de carga.
El rol Administrador de balanceadores de carga de Compute
(
roles/compute.loadBalancerAdmin
) contiene los permisos necesarios para realizar las tareas descritas en esta guía.
En tu entorno local u otro entorno que no sea deGoogle Cloud cloud
- Permisos para configurar endpoints de red que permitan que los servicios de tu entorno local u otros entornos de nube sean accesibles desdeGoogle Cloud mediante una combinación de
IP:Port
. Para obtener más información, ponte en contacto con el administrador de red de tu entorno. - Permisos para crear reglas de cortafuegos en tu entorno local u otros entornos de nube para permitir que las sondas de comprobación del estado de Google lleguen a los endpoints.
- Permisos para configurar endpoints de red que permitan que los servicios de tu entorno local u otros entornos de nube sean accesibles desdeGoogle Cloud mediante una combinación de
Además, para completar las instrucciones de esta página, debe crear un NEG de conectividad híbrida, un balanceador de carga y NEGs zonales (y sus endpoints) para que actúen como back-ends basados en Google Clouddel balanceador de carga.
Debes tener el rol de propietario o editor del proyecto, o bien los siguientes roles de gestión de identidades y accesos de Compute Engine.
Tarea | Rol necesario |
---|---|
Crear redes, subredes y componentes de balanceador de carga | Administrador de red de Compute
(roles/compute.networkAdmin ) |
Añadir y eliminar reglas de cortafuegos | Administrador de seguridad de Compute
(roles/compute.securityAdmin ) |
Crear instancias | Administrador de instancias de Compute
(roles/compute.instanceAdmin ) |
Establecer una conectividad híbrida
Tu entorno Google Cloud y el entorno on-premise u otros entornos de nube deben conectarse mediante conectividad híbrida usando vinculaciones de VLAN de Cloud Interconnect o túneles de Cloud VPN con Cloud Router o VMs de dispositivo router. Te recomendamos que uses una conexión de alta disponibilidad.
Un Cloud Router habilitado con enrutamiento dinámico global obtiene información sobre el endpoint específico mediante el protocolo de pasarela fronteriza (BGP) y lo programa en tu Google Cloud red de VPC. No se admite el enrutamiento dinámico regional. Tampoco se admiten las rutas estáticas.
Puedes usar la misma red de VPC o una diferente en el mismo proyecto para configurar tanto la red híbrida (Cloud Interconnect, Cloud VPN o una VM de dispositivo Router) como el balanceador de carga. Ten en cuenta lo siguiente:
Si usas redes de VPC diferentes, las dos redes deben estar conectadas mediante el emparejamiento entre redes de VPC o deben ser radios de VPC en el mismo hub de Network Connectivity Center.
Si usas la misma red de VPC, asegúrate de que los intervalos CIDR de las subredes de tu red de VPC no entren en conflicto con los intervalos CIDR remotos. Cuando las direcciones IP se superponen, se priorizan las rutas de subred sobre la conectividad remota.
Para obtener instrucciones, consulta la siguiente documentación:
Configurar un entorno externo Google Cloud
Sigue estos pasos para configurar tu entorno local u otro entorno de nube para el balanceo de carga híbrido:
- Configura los endpoints de red para exponer los servicios locales aGoogle Cloud (
IP:Port
). - Configura reglas de cortafuegos en tu entorno local u otro entorno de nube.
- Configura Cloud Router para que anuncie determinadas rutas necesarias a tu entorno privado.
Configurar endpoints de red
Después de configurar la conectividad híbrida, configura uno o varios endpoints de red en tu entorno local u otros entornos de nube a los que se pueda acceder a través de Cloud Interconnect, Cloud VPN o el dispositivo Router mediante una combinación de IP:port
. Esta IP:port
combinación se configura como uno o varios endpoints para el NEG de conectividad híbrida que se crea Google Cloud más adelante en este proceso.
Si hay varias rutas al endpoint IP, el enrutamiento sigue el comportamiento descrito en la descripción general de Cloud Router.
Configurar reglas de cortafuegos
Debes crear las siguientes reglas de cortafuegos en tu entorno local u otro entorno de nube:
Crea una regla de cortafuegos de entrada para permitir el tráfico de las comprobaciones del estado de Google a tus endpoints. Los intervalos de direcciones IP de origen que se van a permitir son
35.191.0.0/16
y130.211.0.0/22
. Para obtener más información, consulta Intervalos de IPs de sondeo y reglas de cortafuegos.
Anunciar rutas
Configura Cloud Router para anunciar los siguientes intervalos de IP personalizados a tu entorno local u otro entorno de nube:
- Los intervalos que usan las sondas de comprobación del estado de Google son
35.191.0.0/16
y130.211.0.0/22
.
Configurar el Google Cloud entorno
En los pasos siguientes, asegúrate de usar la misma red de VPC (llamada NETWORK en este procedimiento) que se usó para configurar la conectividad híbrida entre los entornos.
Crea la subred para los backends
Esta subred se usa para crear los back-ends de NEG zonales del balanceador de carga, el frontend y la dirección IP interna.
Crea esta subred en la NETWORK red que se usó para configurar la conectividad híbrida entre los entornos.
Consola
En la Google Cloud consola, ve a la página Redes de VPC.
Ve a la red que se ha usado para configurar la conectividad híbrida entre los entornos.
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_NAME
- Región: REGION
- Intervalo de direcciones IP: LB_SUBNET_RANGE
- Haz clic en Listo.
Haz clic en Crear.
gcloud
Crea una subred en la red NETWORK que se usó para configurar la conectividad híbrida entre los entornos.
gcloud compute networks subnets create LB_SUBNET_NAME \ --network=NETWORK \ --range=LB_SUBNET_RANGE \ --region=REGION
Crear regla de cortafuegos
En este ejemplo, se crea la siguiente regla de cortafuegos:
fw-allow-health-check
: una regla de entrada, aplicable a las instancias con balanceo de carga, que permite el tráfico del balanceador de carga y los sistemas de comprobación del estado (130.211.0.0/22
y35.191.0.0/16
). En este ejemplo se usa la etiqueta de destinoallow-health-check
para identificar las VMs de backend a las que se debe aplicar. Google CloudGoogle Cloud
Consola
En la Google Cloud consola, ve a la página Políticas de cortafuegos.
Haz clic en Crear regla de cortafuegos:
- Asigne un Nombre de
fw-allow-health-check
. - En la sección Red, selecciona
NETWORK
. - En Objetivos, seleccione Etiquetas de destino especificadas.
- Rellene el campo Etiquetas de destino con
allow-health-check
. - En Filtro de origen, elija Intervalos de IPv4.
- Asigna los valores
130.211.0.0/22
y35.191.0.0/16
a Intervalos de IPv4 de origen. - En Protocolos y puertos, selecciona Protocolos y puertos especificados.
- Seleccione la casilla situada junto a TCP y escriba
80
en los números de puerto.
- Asigne un Nombre de
Haz clic en Crear.
gcloud
Crea la regla
fw-allow-health-check-and-proxy
para permitir que el balanceador de carga y las comprobaciones del estado Google Cloud se comuniquen con las instancias de backend en el puerto TCP80
.Sustituye NETWORK por el nombre de la red de VPC que se ha usado para configurar la conectividad híbrida.
gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80
Configurar el NEG de zona
En el caso de los back-ends basados en Google Cloud, le recomendamos que configure varios NEG zonales en la misma región en la que haya configurado la conectividad híbrida.
En este ejemplo, hemos configurado un NEG zonal (con puntos finales de tipo GCE_VM_IP_PORT
) en la región REGION. Primero, crea las VMs en la zona GCP_NEG_ZONE. A continuación, crea un NEG por zonas en el mismo GCP_NEG_ZONE y añade los endpoints de red de las VMs al NEG.
Crear VMs
Consola
Ve a la página Instancias de VM de la Google Cloud consola.
Ir a instancias de VMHaz clic en Crear instancia.
Asigna el valor
vm-a1
a Nombre.En Región, elija REGION.
En Zona, elija GCP_NEG_ZONE.
En la sección Disco de arranque, asegúrate de que la opción Debian GNU/Linux 12 (bookworm) esté seleccionada para el disco de arranque. Haz clic en Elegir para cambiar la imagen si es necesario.
Haz clic en Opciones avanzadas y haz los siguientes cambios:
- Haz clic en Redes y añade las siguientes etiquetas de red:
allow-health-check
. - Haz clic en Editar
- Red: NETWORK
- Subred: LB_SUBNET_NAME
- Tipo de pila de IP: IPv4 e IPv6 (pila dual)
en Interfaces de red y haz los siguientes cambios. A continuación, haz clic en Hecho:
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
- Haz clic en Redes y añade las siguientes etiquetas de red:
Haz clic en Crear.
Repite los pasos siguientes para crear una segunda máquina virtual con la siguiente combinación de nombre y zona:
- Nombre:
vm-a2
, zona: GCP_NEG_ZONE
- Nombre:
gcloud
Crea las VMs ejecutando el siguiente comando dos veces y usando estas combinaciones para el nombre de la VM y su zona. El contenido de la secuencia de comandos es idéntico en ambas máquinas virtuales.
- VM_NAME de
vm-a1
y cualquier zona GCP_NEG_ZONE que elijas VM_NAME de
vm-a2
y la misma zona GCP_NEG_ZONEPara admitir el tráfico IPv4, ejecuta el siguiente comando:
gcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-health-check \ --ipv6-network-tier=PREMIUM --stack-type=IPV4_ONLY \ --subnet=LB_SUBNET_NAME \ --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'
Crear el NEG de zona
Consola
Para crear un grupo de endpoints de red de zona, sigue estos pasos:
- Ve a la página Grupos de puntos finales de red de la Google Cloud consola.
Ve a la página Grupos de puntos finales de red - Haz clic en Crear grupo de endpoints de red.
- Introduce un nombre para el NEG zonal. En este procedimiento, se denomina GCP_NEG_NAME.
- Selecciona el Tipo de grupo de puntos finales de red: Grupo de puntos finales de red (por zonas).
- Selecciona Red: NETWORK
- Selecciona la Subred: LB_SUBNET_NAME
- Selecciona la Zona: GCP_NEG_ZONE
- Introduce el puerto predeterminado:
80
. - Haz clic en Crear.
Añade los endpoints al NEG de zona:
- Ve a la página Grupos de puntos finales de red de la Google Cloud consola.
Ve a Grupos de endpoints de red - Haga clic en el Nombre del grupo de puntos finales de red creado en el paso anterior (GCP_NEG_NAME). Verá la página Detalles del grupo de puntos finales de red.
- En la sección Puntos finales de red de este grupo, haz clic en Añadir punto final de red. Verás la página Añadir punto final de red.
- Selecciona una instancia de VM para añadir sus direcciones IP internas como endpoints de red. En la sección Interfaz de red, se muestra el nombre, la zona y la subred de la máquina virtual.
- En el campo Dirección IPv4, introduce la dirección IPv4 del nuevo endpoint de red.
- Seleccione el Tipo de puerto.
- Si selecciona Predeterminado, el endpoint usará el puerto predeterminado
80
para todos los endpoints del grupo de endpoints de red. Esto es suficiente para nuestro ejemplo, ya que el servidor Apache sirve solicitudes en el puerto80
. - Si seleccionas Personalizado, introduce el Número de puerto del endpoint que quieras usar.
- Si selecciona Predeterminado, el endpoint usará el puerto predeterminado
- Para añadir más endpoints, haz clic en Añadir endpoint de red y repite los pasos anteriores.
- Una vez que hayas añadido todos los endpoints, haz clic en Crear.
gcloud
Crea un NEG zonal (con
GCE_VM_IP_PORT
endpoints) con el comandogcloud compute network-endpoint-groups create
:gcloud compute network-endpoint-groups create GCP_NEG_NAME \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=GCP_NEG_ZONE \ --network=NETWORK \ --subnet=LB_SUBNET_NAME
Puede especificar un
--default-port
al crear el NEG o especificar un número de puerto para cada endpoint, como se muestra en el paso siguiente.Añade endpoints de pila única a GCP_NEG_NAME.
gcloud compute network-endpoint-groups update GCP_NEG_NAME \ --zone=GCP_NEG_ZONE \ --add-endpoint='instance=vm-a1,port=80' \ --add-endpoint='instance=vm-a2,port=80'
Configurar el NEG de conectividad híbrida
Al crear el NEG, usa una ZONEque minimice la distancia geográfica entre Google Cloud y tu entorno on-premise u otro entorno de nube. Por ejemplo, si alojas un servicio en un entorno local en Fráncfort (Alemania), puedes especificar la zona europe-west3-a
Google Cloud al crear el NEG.
Además, si usas Cloud Interconnect, el ZONE que se utilice para crear el NEG debe estar en la misma región en la que se haya configurado la vinculación de VLAN de Cloud Interconnect de la conectividad híbrida.
Para ver las regiones y zonas disponibles, consulta la documentación de Compute Engine: regiones y zonas disponibles.
Consola
Para crear un grupo de endpoints de red de conectividad híbrida, sigue estos pasos:
- Ve a la página Grupos de puntos finales de red de la Google Cloud consola.
Ve a Grupos de puntos finales de red - Haz clic en Crear grupo de endpoints de red.
- Introduce un nombre para el NEG híbrido. En este procedimiento, se denomina ON_PREM_NEG_NAME.
- Selecciona el Tipo de grupo de puntos finales de red: Grupo de puntos finales de red de conectividad híbrida (por zonas).
- Selecciona la red: NETWORK
- Selecciona la Subred: LB_SUBNET_NAME.
- Selecciona la Zona: ON_PREM_NEG_ZONE
- Introduce el puerto predeterminado.
- Primero, haz clic en Crear.
Añade endpoints al NEG de conectividad híbrida:
- Ve a la página Grupos de puntos finales de red de la Google Cloud consola.
Ve a la página Grupos de puntos finales de red - Haga clic en el Nombre del grupo de endpoints de red creado en el paso anterior (ON_PREM_NEG_NAME). Verá la página Detalles del grupo de endpoints de red.
- En la sección Puntos finales de red de este grupo, haz clic en Añadir punto final de red. Verás la página Añadir punto final de red.
- Introduce la dirección IP del nuevo endpoint de red.
- Seleccione el Tipo de puerto.
- Si seleccionas Predeterminado, el endpoint usará el puerto predeterminado para todos los endpoints del grupo de endpoints de red.
- Si selecciona Personalizado, puede introducir otro Número de puerto para que lo use el endpoint.
- Para añadir más endpoints, haz clic en Añadir endpoint de red y repite los pasos anteriores.
- Una vez que hayas añadido todos los endpoints que no seanGoogle Cloud , haz clic en Crear.
gcloud
Crea un NEG de conectividad híbrida con el comando
gcloud compute network-endpoint-groups create
.gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ON_PREM_NEG_ZONE \ --network=NETWORK
Añade el endpoint a
on-prem-neg
:gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \ --zone=ON_PREM_NEG_ZONE \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1" \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
Puedes usar este comando para añadir los endpoints de red que hayas configurado anteriormente de forma local o en tu entorno de nube.
Repite --add-endpoint
tantas veces como sea necesario.
Puedes repetir estos pasos para crear varios NEGs híbridos si es necesario.
Configurar el balanceador de carga
Consola
gcloud
- Crea una dirección IP externa estática global a la que los clientes externos envíen tráfico.
gcloud compute addresses create LB_IP_ADDRESS_NAME \ --global
- Crea una comprobación del estado
para los backends.
gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \ --use-serving-port
- Crea un servicio de backend. Añade tanto el NEG zonal como el NEG de conectividad híbrida como backends a este servicio de backend.
- Añade el NEG zonal como backend al servicio de backend:
Para obtener información sobre cómo configurar el modo de balanceo, consulta la documentación de la CLI de gcloud sobre el parámetrogcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=GCP_NEG_NAME \ --network-endpoint-group-zone=GCP_NEG_ZONE
--max-rate-per-endpoint
. - Añade la NEG híbrida como backend al servicio de backend:
gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=ON_PREM_NEG_NAME \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE
- Crea un mapa de URLs para enrutar las solicitudes entrantes al servicio de backend.
gcloud compute url-maps create URL_MAP_NAME \ --default-service BACKEND_SERVICE
- Realiza este paso solo si quieres crear un balanceador de carga HTTPS. No es necesario para los balanceadores de carga HTTP.
Para crear un balanceador de carga HTTPS, debes tener un recurso de certificado SSL que usar en el proxy HTTPS de destino. Puedes crear un recurso de certificado SSL con un certificado SSL gestionado por Google o con un certificado SSL autogestionado. Te recomendamos que uses certificados gestionados por Google, ya que Google Cloud obtiene, gestiona y renueva estos certificados automáticamente.
Para crear un certificado gestionado por Google, debes tener un dominio. Si no tienes un dominio, puedes usar un certificado SSL autofirmado para hacer pruebas.
Para crear un recurso de certificado SSL gestionado por Google, sigue estos pasos: Para crear un recurso de certificado SSL autogestionado, sigue estos pasos:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAIN
gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
- Crea un proxy HTTP(S) de destino para enrutar las solicitudes a tu mapa de URLs.
En el caso de un balanceador de carga HTTP, crea un proxy HTTP de destino: En el caso de un balanceador de carga HTTPS, crea un proxy HTTPS de destino. El proxy es la parte del balanceador de carga que contiene el certificado SSL para el balanceo de carga HTTPS, por lo que también debes cargar tu certificado en este paso.gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME
- Crea una regla de reenvío para dirigir las solicitudes entrantes al proxy.
En el caso de un balanceador de carga HTTP: En el caso de un balanceador de carga HTTPS:gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --address=LB_IP_ADDRESS_NAME \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --global \ --ports=80
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --address=LB_IP_ADDRESS_NAME \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --global \ --ports=443
gcloud compute backend-services create BACKEND_SERVICE \ --health-checks=HTTP_HEALTH_CHECK_NAME \ --global
Conectar tu dominio a tu balanceador de carga
Una vez creado el balanceador de carga, anota la dirección IP asociada a él. Por ejemplo, 30.90.80.100
. Para dirigir tu dominio a tu balanceador de carga, crea un registro A
con tu servicio de registro de dominios. Si has añadido varios dominios a tu certificado SSL, debes añadir un registro A
para cada uno de ellos, todos apuntando a la dirección IP del balanceador de carga. Por ejemplo, para crear registros A
de www.example.com
y example.com
, usa lo siguiente:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Si usas Cloud DNS como proveedor de DNS, consulta el artículo sobre cómo añadir, modificar y eliminar registros.
Probar el balanceador de carga
Ahora que has configurado el balanceador de carga, puedes empezar a enviar tráfico a la dirección IP del balanceador de carga.
Ve a la página Balanceo de carga de la Google Cloud consola.
Ir a la página Balanceo de cargaHaz clic en el balanceador de carga que acabas de crear.
Anota la dirección IP del balanceador de carga.
Envía tráfico al balanceador de carga.
Si has creado un balanceador de carga HTTP, puedes probarlo con un navegador web. Para ello, ve a
http://IP_ADDRESS
. SustituyeIP_ADDRESS
por la dirección IP del balanceador de carga. Deberías acceder al servicio que has expuesto a través del endpoint.Si has creado un balanceador de carga HTTPS, puedes probarlo con
curl
de la siguiente manera. SustituyeIP_ADDRESS
por la dirección IP del balanceador de carga. Se te dirigirá al servicio que hayas expuesto a través del endpoint.curl -k https://IP_ADDRESS
Si no funciona y estás usando un certificado gestionado por Google, confirma que el estado del recurso de tu certificado es ACTIVE. Para obtener más información, consulta el estado del recurso de certificado SSL gestionado por Google. A continuación, prueba el dominio que apunta a la dirección IP del balanceador de carga. Por ejemplo:
curl -s https://DOMAIN_NAME
Sustituye DOMAIN_NAME por el nombre de dominio de tu aplicación. Por ejemplo,
test.example.com
.
La prueba de los endpoints que no son deGoogle Cloud depende del servicio que hayas expuesto a través del endpoint del NEG híbrido.