Para conocer los conceptos generales, consulta la descripción general del balanceador de cargas de aplicaciones externo.
Si eres un usuario existente del balanceador de cargas de aplicaciones clásico, asegúrate de revisar Planifica la migración al balanceador de cargas de aplicaciones externo global cuando planifiques una implementación nueva con el balanceador de cargas de aplicaciones externo global.
Topologías de balanceador de cargas
Para un balanceador de cargas HTTPS, crea la configuración que se muestra en el siguiente diagrama.
Para un balanceador de cargas HTTP, crea la configuración que se muestra en el siguiente diagrama.
La secuencia de eventos de los diagramas es la siguiente:
- Un cliente envía una solicitud de contenido a la dirección IPv4 externa que se define en la regla de reenvío.
Para un balanceador de cargas HTTPS, la regla de reenvío dirige la solicitud al proxy HTTPS de destino.
Para un balanceador de cargas HTTP, la regla de reenvío dirige la solicitud al proxy HTTP de destino.
El proxy de destino usa la regla en el mapa de URL para determinar si un único servicio de backend recibe todas las solicitudes.
El balanceador de cargas determina que el servicio de backend tiene solo un grupo de instancias y dirige la solicitud a una instancia de máquina virtual (VM) en ese grupo.
La VM entrega el contenido que solicitó el usuario.
Antes de comenzar
Completa los siguientes pasos antes de crear el balanceador de cargas.
Configura un recurso de certificado SSL
Para un balanceador de cargas HTTPS, crea un recurso de certificado SSL como se describe a continuación:
Recomendamos que uses un certificado administrado por Google.
En este ejemplo, se supone que ya tienes un SSL certificate resource llamado www-ssl-cert
.
Configura los permisos
A fin de completar los pasos de esta guía, debes tener permiso para crear instancias de Compute Engine, reglas de firewall y direcciones IP reservadas en un proyecto. Debes tener la función de propietario o editor del proyecto, o las siguientes funciones de IAM de Compute Engine:
Tarea | Función requerida |
---|---|
Crea instancias | Administrador de instancias |
Agregar y quitar reglas de firewall | Administrador de seguridad |
Crear componentes del balanceador de cargas | Administrador de redes |
Crear un proyecto (opcional) | Creador de proyectos |
Si deseas obtener más información, consulta las siguientes guías:
Configura la red y las subredes
Para crear la red y la subred de ejemplo, sigue estos pasos:
Console
En la consola de Google Cloud, ve a la página Redes de VPC.
Haz clic en Crear red de VPC.
Ingresa un Nombre para la red.
En Modo de creación de subredes, selecciona Personalizar.
En la sección Subred nueva, configura los siguientes campos:
- Proporciona un Nombre para la subred.
- Selecciona una Región.
- En Tipo de pila de IP, elige IPv4 (pila única).
- Ingresa un Rango de direcciones IP. Este es el rango IPv4 principal de la subred.
Haz clic en Listo.
Para agregar una subred en una región diferente, haz clic en Agregar subred y repite los pasos anteriores.
Haz clic en Crear.
gcloud
gcloud compute networks subnets update SUBNET \ --network=NETWORK \ --stack-type=IPV4_ONLY \ --range=10.1.2.0/24 \ --region=REGION
Reemplaza lo siguiente:
NETWORK
: Es un nombre para la red de VPC.SUBNET
: Es un nombre de la subred.REGION
: es el nombre de la región.
Crea un grupo de instancias administrado
Para configurar un balanceador de cargas con un backend de Compute Engine, tus VM deben estar en un grupo de instancias. En esta guía, se describe cómo crear un grupo de instancias administrado con las VM de Linux en las que se ejecuta Apache y, luego, configurar el balanceo de cargas. Un grupo de instancias administrado crea cada una de sus instancias administradas según las plantillas de instancias que especifiques.
El grupo de instancias administrado proporciona VM que ejecutan los servidores de backend de un balanceador de cargas de HTTP(S) externo. A modo de demostración, los backends entregan sus propios nombres de host.
Antes de crear un grupo de instancias administrado, crea una plantilla de instancias.
Console
Para que sea compatible con el tráfico IPv4, sigue estos pasos:
En la consola de Google Cloud, ve a la página Plantillas de instancia.
Haz clic en Crear plantilla de instancias.
En Nombre, ingresa
lb-backend-template
.Asegúrate de que el disco de arranque esté configurado como una imagen de Debian, como Debian GNU/Linux 10 (buster). En estas instrucciones, se usan comandos que solo están disponibles en Debian, como
apt-get
.Expande Opciones avanzadas.
Expande Herramientas de redes y configura los siguientes campos:
- En Etiquetas de red, ingresa
allow-health-check
. - En la sección Interfaces de red, haz clic en
- Red:
NETWORK
- Subred:
SUBNET
- Tráfico IPv4: IPv4 (pila única)
Edita y haz
siguientes cambios:
- Red:
- Haz clic en Listo.
- En Etiquetas de red, ingresa
Expande Administración. En el campo Secuencia de comandos de inicio, ingresa la siguiente secuencia de comandos:
#! /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.
gcloud
Para que sea compatible con el tráfico IPv4, ejecuta el siguiente comando:
gcloud compute instance-templates create TEMPLATE_NAME \ --region=REGION \ --network=NETWORK \ --subnet=SUBNET \ --stack-type=IPV4_ONLY \ --tags=allow-health-check \ --image-family=debian-10 \ --image-project=debian-cloud \ --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'
Terraform
Para crear la plantilla de instancias, usa el recurso google_compute_instance_template
.
Crea el grupo de instancias administrado y selecciona la plantilla de instancias.
Console
En la consola de Google Cloud, ve a la página Grupos de instancias.
Haz clic en Crear grupo de instancias.
A la izquierda, elige Nuevo grupo de instancias administrado (sin estado).
En Nombre, ingresa
lb-backend-example
.En Ubicación, selecciona Zona única.
En Región, selecciona tu región preferida.
En Zona, selecciona una zona.
En Plantilla de instancias, selecciona la plantilla de instancias
lb-backend-template
.En Modo de ajuste de escala automático, selecciona Activado: agrega y quita instancias del grupo.
Establece la Cantidad mínima de instancias en
2
y la Cantidad máxima de instancias en2
o más.Para crear el grupo de instancias nuevo, haz clic en Crear.
gcloud
Crea el grupo de instancias administrado en función de la plantilla.
gcloud compute instance-groups managed create lb-backend-example \ --template=TEMPLATE_NAME --size=2 --zone=ZONE_A
Terraform
Para crear el grupo de instancias administrado, usa el recurso google_compute_instance_group_manager
.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Agrega un puerto con nombre al grupo de instancias
En el grupo de instancias, define un servicio HTTP y mapea un nombre de puerto al puerto pertinente. El servicio de balanceo de cargas reenvía el tráfico al puerto especificado. Para obtener más información, consulta Puertos con nombre.
Console
En la consola de Google Cloud, ve a la página Grupos de instancias.
Haz clic en lb-backend-example.
En la página Descripción general del grupo de instancias, haz clic en
Editar.En la sección Asignación de puertos, haz clic en Agregar puerto.
- En el nombre de puerto, ingresa
http
. En el número de puerto, ingresa80
.
- En el nombre de puerto, ingresa
Haz clic en Guardar.
gcloud
Usa el comando gcloud compute instance-groups
set-named-ports
.
gcloud compute instance-groups set-named-ports lb-backend-example \ --named-ports http:80 \ --zone ZONE_A
Terraform
El atributo named_port
se incluye en la muestra del grupo de instancias administrado.
Configura una regla de firewall
En este ejemplo, se crea la regla de firewall fw-allow-health-check
.
Esta es una regla de entrada que permite el tráfico de los sistemas de verificación de estado de Google Cloud (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 VM.
Console
En la consola de Google Cloud, ve a la página Políticas de firewall.
Haz clic en Crear regla de firewall para crear la regla de firewall.
En Nombre, ingresa
fw-allow-health-check
.Selecciona una Red.
En Destinos, selecciona Etiquetas de destino especificadas.
Propaga el campo Etiquetas de destino con
allow-health-check
.Configura Filtro de fuente como Rangos de IPv4.
Establece Rangos de IPv4 de origen en
130.211.0.0/22
y35.191.0.0/16
.En Protocolos y puertos, selecciona Protocolos y puertos especificados.
Selecciona la casilla de verificación TCP y, luego, escribe
80
para los números de puerto.Haz clic en Crear.
gcloud
gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
Terraform
Para crear la regla de firewall, usa el recurso google_compute_firewall
.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Reservar una dirección IP externa
Ahora que tus instancias están en funcionamiento, configura una dirección IP externa, estática y global que tus clientes usarán para llegar al balanceador de cargas.
Console
En la consola de Google Cloud, ve a la página Direcciones IP externas.
Para reservar una dirección IPv4, haz clic en Reservar dirección IP estática externa.
En Nombre, ingresa
lb-ipv4-1
.En Nivel de servicio de red, establece Premium.
Configura Versión de IP como IPv4.
Establece Tipo en Global.
Haz clic en Reservar.
gcloud
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Tome nota de la dirección IPv4 que estaba reservada:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Terraform
Para reservar la dirección IP, usa el recurso google_compute_global_address
.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Configura el balanceador de cargas
En este ejemplo, se usa HTTPS (frontend) entre el cliente y el balanceador de cargas. Para HTTPS, necesitas uno o más recursos de certificado SSL a fin de configurar el proxy. Recomendamos que uses un certificado administrado por Google.
Incluso si usas HTTPS en el frontend, puedes usar HTTP en el backend. Google encripta de forma automática el tráfico entre Google Front Ends (GFE) y los backends que residen en las redes de VPC de Google Cloud.
Console
Inicia la configuración
En la consola de Google Cloud, ve a la página Balanceo de cargas.
- Haz clic en Crear balanceador de cargas.
- En Tipo de balanceador de cargas, selecciona Balanceador de cargas de aplicaciones (HTTP/HTTPS) y haz clic en Siguiente.
- En Orientado al público o interno, selecciona Orientado al público (externo) y haz clic en Siguiente.
- En Implementación global o de una sola región, selecciona Mejor para cargas de trabajo globales y haz clic en Siguiente.
- En Generación de balanceadores de cargas, selecciona Balanceador de cargas de aplicaciones clásico y haz clic en Siguiente.
- Haz clic en Configurar.
Configuración básica
En el campo Nombre del balanceador de cargas, ingresa algo como web-map-https
o web-map-http
.
Configuración de frontend
- Haz clic en Configuración de frontend.
- En Protocolo, configura HTTPS.
- Selecciona
IPv4
para el tráfico IPv4. Configura el campo dirección IP comolb-ipv4-1
, la que creaste antes. - Configura el Puerto como 443.
- Haz clic en Certificado y selecciona tu certificado SSL principal.
- Opcional: Crea una política de SSL:
- En la lista SSL Policy, selecciona Crear una política.
- Establece el nombre de la política de SSL en
my-ssl-policy
. - En Versión mínima de TLS, selecciona TLS 1.0.
- En Perfil, selecciona Moderno. Se mostrarán las Funciones habilitadas y las Funciones inhabilitadas.
- Haz clic en Guardar.
-
Opcional: Selecciona la casilla de verificación Habilitar el redireccionamiento HTTP a HTTPS para habilitar los redireccionamientos.
Si habilitas esta casilla de verificación, se creará un balanceador de cargas de HTTP parcial adicional que usa la misma dirección IP que tu balanceador de cargas de HTTPS y redirecciona las solicitudes HTTP entrantes al frontend de HTTPS del balanceador de cargas.
Esta casilla de verificación solo se puede seleccionar cuando se selecciona el protocolo HTTPS y se usa una dirección IP reservada.
- Haz clic en Listo.
Configuración de backend
- Haz clic en Configuración de backend.
- En Crear o seleccionar servicios y buckets de backend, selecciona Servicios de backend > Crear un servicio de backend.
- Agrega un nombre al servicio de backend, como
web-backend-service
. - En Protocolo, selecciona HTTP.
- En Puerto con nombre, ingresa
http
. - En Backends > Nuevo backend > Grupo de instancias, selecciona el grupo de instancias
lb-backend-example
. - En Números de puerto, ingresa
80
. - Mantén la configuración predeterminada.
- En Verificación de estado, selecciona Crear una verificación de estado y, luego, agrega un nombre para la verificación de estado, como
http-basic-check
. - Configura el protocolo como HTTP y, luego, haz clic en Guardar.
-
Opcional: Configura una política de seguridad de backend predeterminada. La política de seguridad predeterminada limita el tráfico por encima de un umbral configurado por el usuario. Para obtener más información sobre las políticas de seguridad predeterminadas, consulta la Descripción general del límite de frecuencia.
- Para inhabilitar la política de seguridad predeterminada de Google Cloud Armor, selecciona
None
en el menú de lista de la política de seguridad de backend. - En la sección Seguridad, selecciona Política de seguridad predeterminada.
- En el campo Nombre de la política, acepta el nombre que se genera automáticamente o ingresa un nombre para la política de seguridad.
- En el campo Recuento de solicitudes, acepta el recuento de solicitudes predeterminado o ingresa un número entero entre
1
y10,000
. - En el campo Intervalo, selecciona un intervalo.
- En el campo Aplicar en la clave, elige uno de los siguientes valores: Todos, Dirección IP o Dirección IP X‑Forwarded‑For. Para obtener más información sobre estas opciones, consulta Identifica clientes para el límite de frecuencia.
- Para inhabilitar la política de seguridad predeterminada de Google Cloud Armor, selecciona
- Mantén la configuración predeterminada.
- Haz clic en Crear.
Reglas del host y de la ruta de acceso
En Reglas de host y de ruta de acceso, mantén la configuración predeterminada.
Revisa y finaliza
- Haz clic en Revisar y finalizar.
- Revisa la configuración del balanceador de cargas.
- Opcional: Haz clic en Código equivalente para ver la solicitud a la API de REST que se usará para crear el balanceador de cargas.
- Haz clic en Crear.
Espera a que se cree el balanceador de cargas.
Si creaste un balanceador de cargas de HTTPS y seleccionaste la casilla de verificación Habilitar el redireccionamiento de HTTP a HTTPS también verás un balanceador de cargas HTTP creado con un sufijo de redireccionamiento.
- Haz clic en el nombre del balanceador de cargas.
- En la pantalla Detalles del balanceador de cargas, toma nota del valor de IP:Puerto de tu balanceador de cargas.
gcloud
- Crea una verificación de estado.
gcloud compute health-checks create http http-basic-check \ --port 80
- Crea un servicio de backend.
gcloud compute backend-services create web-backend-service \ --load-balancing-scheme=EXTERNAL \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
- Agrega tu grupo de instancias como backend al servicio de backend.
gcloud beta compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=ZONE_A \ --global
- Para HTTP, crea un mapa de URL para enrutar las solicitudes entrantes al servicio de backend predeterminado.
gcloud beta compute url-maps create web-map-http \ --default-service web-backend-service
- Para HTTPS, crea un mapa de URL a fin de enrutar las solicitudes entrantes al servicio de backend predeterminado.
gcloud beta compute url-maps create web-map-https \ --default-service web-backend-service
Configura un frontend de HTTPS
Omite esta sección para los balanceadores de cargas HTTP.
- Para HTTPS, si aún no lo hiciste, crea el recurso de certificado SSL global, como se muestra en las siguientes secciones:
- Crea un recurso de certificado SSL administrado por Google
- Crea un recurso de certificado SSL autoadministrado
En el caso de HTTPS, crea un proxy HTTPS de destino para enrutar las solicitudes a tu mapa de URL. El proxy es la parte del balanceador de cargas que contiene el certificado SSL para el balanceo de cargas de HTTPS, por lo que también debes cargar el certificado en este paso.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map=web-map-https \ --ssl-certificates=www-ssl-cert
- Para HTTPS, crea una regla de reenvío global para enrutar las solicitudes entrantes al proxy.
gcloud compute forwarding-rules create https-content-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
- Para HTTPS, crea una política de SSL global y adjúntala al proxy HTTPS (opcional).
para crear una política de SSL global: Si quieres adjuntar la política de SSL al proxy HTTPS de destino global, sigue estos pasos:gcloud compute ssl-policies create my-ssl-policy \ --profile MODERN \ --min-tls-version 1.0
gcloud compute target-https-proxies update https-lb-proxy \ --ssl-policy my-ssl-policy
Configura un frontend de HTTP
Omite esta sección para los balanceadores de cargas HTTPS.
- En el caso de HTTP, crea un proxy HTTP de destino para enrutar las solicitudes a tu mapa de URL.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http
- Para HTTP, crea una regla de reenvío global para enrutar las solicitudes entrantes al proxy.
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
-
Para crear la verificación de estado, usa el recurso
google_compute_health_check
. -
Para crear el servicio de backend, usa el recurso
google_compute_backend_service
.En este ejemplo, se usa
load_balancing_scheme="EXTERNAL_MANAGED"
, que configura un balanceador de cargas de aplicaciones externo global con capacidad avanzada de administración de tráfico. Para crear un balanceador de cargas de aplicaciones clásico, asegúrate de cambiarload_balancing_scheme
aEXTERNAL
antes de ejecutar la secuencia de comandos. -
Para crear el mapa de URL, usa el recurso
google_compute_url_map
. -
Para crear el proxy HTTP de destino, usa el recurso
google_compute_target_http_proxy
. -
Para crear la regla de reenvío, usa el recurso
google_compute_global_forwarding_rule
.En este ejemplo, se usa
load_balancing_scheme="EXTERNAL_MANAGED"
, que configura un balanceador de cargas de aplicaciones externo global con capacidad avanzada de administración de tráfico. Para crear un balanceador de cargas de aplicaciones clásico, asegúrate de cambiarload_balancing_scheme
aEXTERNAL
antes de ejecutar la secuencia de comandos.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Conecta tu dominio al balanceador de cargas
Después de crear el balanceador de cargas, toma nota de la dirección IP asociada con este: por ejemplo, 30.90.80.100
. Para apuntar tu dominio al balanceador de cargas, crea un registro A
mediante tu servicio de registro de dominio. Si agregaste varios dominios a tu certificado SSL, debes agregar un registro A
para cada uno, que apunte a la dirección IP del balanceador de cargas. Por ejemplo, para crear registros A
para 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 Agrega, modifica y borra registros.
Prueba el tráfico enviado a las instancias
Ahora que el servicio de balanceo de cargas está en ejecución, puedes enviar tráfico a la regla de reenvío y ver cómo este se dispersa en las diferentes instancias.
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas.
- Haz clic en el balanceador de cargas que acabas de crear.
En la sección Backend, confirma que las VM estén en buen estado. La columna En buen estado debe estar propagada, de modo que se indique que ambas VM están en buen estado (
2/2
). Si no ves esto, vuelve a cargar la página. Puede tomar unos minutos que la consola de Google Cloud indique que las VM están en buen estado. Si los backends no se muestran en buen estado después de unos minutos, revisa la configuración del firewall y la etiqueta de red asignada a tus VM de backend.- Para HTTPS, si usas un certificado administrado por Google, confirma que el estado de tu recurso de certificado sea ACTIVO. Para obtener más información, consulta Estado de los recursos de certificado SSL administrado por Google.
- Después de que la consola de Google Cloud muestre que las instancias de backend están en buen estado, puedes probar tu balanceador de cargas con un navegador web en
https://IP_ADDRESS
(ohttp://IP_ADDRESS
). ReemplazaIP_ADDRESS
por la dirección IP del balanceador de cargas. - Si usaste un certificado autofirmado para las pruebas de HTTPS, el navegador mostrará una advertencia. Debes indicar de manera explícita a tu navegador que acepte un certificado autofirmado.
- El navegador debe procesar una página con contenido que muestre el nombre de la instancia que entregó la página, junto con su zona (por ejemplo,
Page served from: lb-backend-example-xxxx
). Si el navegador no renderiza esta página, revisa las opciones de configuración que aparecen en esta guía.
gcloud
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Después de unos minutos, puedes ejecutar el siguiente comando de curl
para probar la configuración.
curl http://IP_ADDRESS
O
curl https://HOSTNAME
¿Qué sigue?
- A fin de configurar un redireccionamiento de HTTP a HTTPS para el balanceador de cargas de aplicaciones clásico, consulta Configura un redireccionamiento de HTTP a HTTPS para balanceadores de cargas de aplicaciones clásicos.
- Si quieres ver un ejemplo complejo con IPv6 y balanceo de cargas multirregión, consulta Configura un balanceador de cargas de HTTPS.
- Limpia la configuración del balanceador de cargas.
- Para habilitar IAP, consulta Habilita IAP en el balanceador de cargas de aplicaciones externo.
- A fin de usar un módulo de Terraform, consulta Ejemplos de módulos de Terraform para balanceadores de cargas de aplicaciones externos.