En esta página, se muestra cómo crear un balanceador de cargas de aplicaciones externo para enrutar solicitudes a backends sin servidores. El término “sin servidores” hace referencia a los siguientes productos de procesamiento sin servidores:
- App Engine
- Cloud Run Functions
- Cloud Run
La integración de balanceadores de cargas de aplicaciones externos con la API Gateway permite que los backends sin servidores aprovechen todas las funciones de Cloud Load Balancing. Si deseas configurar un balanceador de cargas de aplicaciones externo para enrutar el tráfico a una API Gateway, consulta la guía para comenzar a usar un balanceador de cargas de aplicaciones externo para API Gateway. La compatibilidad del balanceador de cargas de aplicaciones externo con la API Gateway se encuentra en Vista previa.
Los NEG sin servidores te permiten usar apps deGoogle Cloud sin servidores con balanceadores de cargas de aplicaciones externos. Después de configurar un balanceador de cargas con el backend de NEG sin servidores, las solicitudes al balanceador de cargas se enrutan al backend de la app sin servidores.
Para obtener más información sobre los NEG sin servidores, consulta la descripción general de los NEG sin servidores.
Antes de comenzar
- Implementa un servicio de App Engine, Cloud Run Functions o Cloud Run.
- Si aún no lo hiciste, instala Google Cloud CLI.
- Configura permisos.
- Agrega un recurso de certificado SSL.
Implementa un servicio de App Engine, Cloud Run Functions o Cloud Run
En las instrucciones de esta página, se supone que ya tienes un servicio de Cloud Run, Cloud Run Functions o App Engine en ejecución.
En el ejemplo de esta página, se usa la guía de inicio rápido
de Python de Cloud Run para implementar un servicio
de Cloud Run en la región us-central1. En el resto de esta página, se muestra cómo configurar
un balanceador de cargas de aplicaciones externo que usa un backend de NEG sin servidores para enrutar las solicitudes a
este servicio.
Si aún no implementaste una app sin servidores o si quieres probar un NEG sin servidores con una app de muestra, usa una de las siguientes guías de inicio rápido. Puedes crear una app sin servidores en cualquier región, pero debes usar la misma región más adelante para crear el NEG sin servidores y el balanceador de cargas.
Cloud Run
Para crear una aplicación Hello World sencilla, empaquetarla en una imagen de contenedor y, luego, implementarla en Cloud Run, consulta Guía de inicio rápido: Crea e implementa.
Si ya subiste un contenedor de muestra a Container Registry, consulta Guía de inicio rápido: Implementa un contenedor de muestra ya compilado.
Cloud Run Functions
Consulta Cloud Run Functions: Guía de inicio rápido de Python.
App Engine
Consulta las siguientes guías de inicio rápido de App Engine para Python 3:
Instala Google Cloud CLI
Instala Google Cloud CLI. Consulta Descripción general de gcloud para obtener información conceptual y saber cómo instalar la herramienta.
Si no ejecutaste la gcloud CLI antes, primero ejecuta
gcloud init para inicializar tu directorio de gcloud.
Configura permisos
Para seguir esta guía, debes crear un NEG sin servidores y un balanceador de cargas de HTTP(S) externo en un proyecto. Debes ser propietario o editor de un proyecto o tener las siguientes funciones de IAM de Compute Engine:
| Tarea | Rol requerido |
|---|---|
| Crear balanceador de cargas y componentes de herramientas de redes | Administrador de redes |
| Crear y modificar los NEG | Administrador de instancias de Compute |
| Crear y modificar certificados SSL | Administrador de seguridad |
Opcional: Usa direcciones de BYOIP
Puedes proporcionar tus propias direcciones IP (BYOIP) para importar tus propias direcciones públicas a Google Cloud y, así, usarlas con recursos de Google Cloud . Por ejemplo, si importas tus propias direcciones IPv4, puedes asignar una a la regla de reenvío cuando configures tu balanceador de cargas. Cuando sigas las instrucciones de este documento para crear el balanceador de cargas, brinda la dirección de BYOIP como la dirección IP.
Para obtener más información sobre el uso de BYOIP, consulta Usa tus propias direcciones IP.
Reserva una dirección IP externa
Ahora que tus servicios están en funcionamiento, configura una dirección IP externa estática global que tus clientes usen para llegar a tu balanceador de cargas.
Consola
En la consola de Google Cloud , ve a la página Direcciones IP externas.
Haz clic en Reservar dirección IP externa estática.
En Nombre, ingresa
example-ip.En Nivel de servicio de red, selecciona Premium.
En Versión de IP, selecciona IPv4.
En Tipo, selecciona Global.
Haz clic en Reservar.
gcloud
gcloud compute addresses create EXAMPLE_IP \
--network-tier=PREMIUM \
--ip-version=IPV4 \
--global
Toma nota de la dirección IPv4 que se reservó:
gcloud compute addresses describe EXAMPLE_IP \
--format="get(address)" \
--global
Reemplaza EXAMPLE_IP por el nombre de la dirección IP.
Crea un recurso de certificado SSL
Si quieres crear un balanceador de cargas HTTPS, debes agregar un recurso de certificado SSL al frontend del balanceador de cargas. Crea un recurso de certificado SSL con un certificado SSL administrado por Google o uno autoadministrado.
Certificados administrados por Google: Se recomienda usar certificados administrados por Google, ya que Google Cloud los obtiene, administra y renueva de manera automática. Si quieres crear un certificado administrado por Google, debes tener un dominio y los registros DNS para ese dominio con el objetivo de que se aprovisione el certificado.
Además, deberás actualizar el registro A del DNS del dominio para que apunte a la dirección IP del balanceador de cargas que se creó en el paso anterior. Si tienes varios dominios en un certificado administrado por Google, debes actualizar los registros DNS para todos los dominios y subdominios con el objetivo de que apunten a la dirección IP del balanceador de cargas. Para obtener instrucciones detalladas, consulta Usa certificados administrados por Google.
Certificados autofirmados: Si no deseas configurar un dominio en este momento, puedes usar un certificado SSL autofirmado para realizar una prueba.
En este ejemplo, se supone que ya creaste un recurso de certificado SSL.
Si quieres probar este proceso sin crear un recurso de certificado SSL (o un dominio requerido por los certificados administrados por Google), puedes seguir las instrucciones de esta página para configurar un balanceador de cargas HTTP en su lugar.
Crea el balanceador de cargas
En el siguiente diagrama, el balanceador de cargas usa un backend de NEG sin servidores para dirigir las solicitudes a un servicio de Cloud Run sin servidores. En este ejemplo, usamos la guía de inicio rápido de Python de Cloud Run para implementar un servicio de Cloud Run.
Debido a que las verificaciones de estado no admiten los servicios de backend con backends de NEG sin servidores, no necesitas crear una regla de firewall que permita verificaciones de estado si el balanceador de cargas solo tiene backends de NEG sin servidores.
Consola
Selecciona el tipo de balanceador de cargas
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 para uso interno, selecciona Orientado al público (externo) y haz clic en Siguiente.
- En Implementación global o de una sola región, selecciona Ideal 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
- Para el nombre del balanceador de cargas, ingresa
serverless-lb. - Mantén la ventana abierta para continuar.
Configuración de frontend
- Haz clic en Configuración de frontend.
- En Nombre, ingresa un nombre.
-
Si quieres crear un balanceador de cargas HTTPS, debes tener
un certificado SSL
(
gcloud compute ssl-certificates list).Recomendamos usar un certificado administrado por Google, como se describió antes.
- Haz clic en Listo.
Para configurar un balanceador de cargas de aplicaciones externo, completa los campos como se muestra a continuación.
Verifica que las siguientes opciones estén configuradas con estos valores:
| Propiedad | Valor (escribe un valor o selecciona una opción como se especifica) |
|---|---|
| Protocolo | HTTPS |
| Nivel de servicio de red | Premium |
| Versión de IP | IPv4 |
| Dirección IP | example-ip |
| Puerto | 443 |
| Certificado | Selecciona un certificado SSL existente o crea uno nuevo. Si quieres crear un balanceador de cargas HTTPS, debes tener un recurso de certificado SSL para usar en el Proxy HTTPS. Puedes crear un recurso de certificado SSL con uno administrado por Google o uno autoadministrado. Para crear un certificado administrado por Google, debes tener un dominio. El registro A del dominio debe resolverse en la dirección IP del balanceador de cargas que creaste antes en este procedimiento. Se recomienda usar certificados administrados por Google, ya que Google Cloud los obtiene, administra y renueva de manera automática. Si no tienes un dominio, puedes usar un certificado SSL autofirmado para las pruebas. |
| Opcional: Habilita el redireccionamiento de HTTP a HTTPS |
Usa esta casilla de verificación para habilitar los redireccionamientos HTTP a HTTPS.
Si habilitas esta casilla de verificación, se creará un balanceador de cargas HTTP parcial adicional que usa la misma dirección IP que tu balanceador de cargas HTTPS y redirecciona las solicitudes HTTP 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. |
Configuración de backend
- Haz clic en Configuración de backend.
- En la lista Servicios y buckets de backend, haz clic en Crear un servicio de backend.
- En Nombre, ingresa un nombre.
- En Tipo de backend, selecciona Grupo de extremos de red sin servidores.
- Deja Protocolo sin modificar. Este parámetro se ignora.
- En la sección Backends, para Nuevo backend, selecciona Crear grupo de extremos de red sin servidores.
- En Nombre, ingresa un nombre.
- Haz clic en Crear.
- En la sección Nuevo backend, haz clic en Listo.
- Selecciona Habilitar Cloud CDN.
- Opcional: Modifica la configuración del modo de almacenamiento en caché y del TTL.
- Haz clic en Crear.
Reglas de enrutamiento
Las reglas de enrutamiento determinan cómo se dirige el tráfico. Para configurar el enrutamiento, deberás configurar reglas de host y comparadores de rutas de acceso, que son componentes de configuración de un mapa de URLs del balanceador de cargas de aplicaciones externo.
-
Haz clic en Reglas de host y ruta.
- Conserva los hosts y las rutas de acceso predeterminados. Para este ejemplo, todas las solicitudes se envían al servicio de backend que creaste en el paso anterior.
Revisa la configuración
- Haz clic en Revisión y finalización.
- Revisa todos los parámetros de configuración.
- Opcional: Haz clic en Código equivalente si deseas 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.
- Haz clic en el nombre del balanceador de cargas (serverless-lb).
- Anota la dirección IP del balanceador de cargas para la siguiente tarea. Se hace
referencia a ella como
IP_ADDRESS.
gcloud
- Crea un NEG sin servidores para tu app sin servidores.
Si deseas ver más opciones, consulta la guía de referencia de
gcloudparagcloud compute network-endpoint-groups create. - Crea un servicio de backend.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global \ --enable-cdn \ --cache-mode=CACHE_MODE \ --custom-response-header='Cache-Status: {cdn_cache_status}' \ --custom-response-header='Cache-ID: {cdn_cache_id}'Para establecer el modo de almacenamiento en caché, reemplaza CACHE_MODE por uno de los siguientes valores:
CACHE_All_STATIC(predeterminado): Almacena en caché el contenido estático de forma automática.USE_ORIGIN_HEADERS: Necesita que se configuren, en el origen, encabezados de almacenamiento en caché válidos para el contenido de la caché.FORCE_CACHE_ALL: Almacena en caché todo el contenido, sin importar las directivasprivate,no-storeono-cacheen los encabezados de respuestaCache-Control.
Para obtener información sobre lo que Cloud CDN no almacena en caché y las directivas de caché que entiende, consulta Contenido que puede almacenarse en caché y Contenido que no puede almacenarse en caché.
- Agrega el NEG sin servidores como un backend al servicio de backend:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --global \ --network-endpoint-group=SERVERLESS_NEG_NAME \ --network-endpoint-group-region=us-central1 - 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_NAMEEste mapa de URLs de ejemplo solo se orienta a un servicio de backend que representa una sola app sin servidores, por lo que no es necesario configurar reglas de host ni comparadores de rutas de acceso. Si tienes más de un servicio de backend, puedes usar reglas de host para dirigir las solicitudes a diferentes servicios según el nombre de host y configurar comparadores de rutas de acceso para dirigir solicitudes a diferentes servicios según la ruta de acceso de la solicitud.
-
Si quieres crear un balanceador de cargas HTTPS, debes tener un
recurso de
certificado SSL para usar en el Proxy HTTPS de destino.
Puedes crear un recurso de certificado
SSL con uno administrado por Google o
uno autoadministrado. Se recomienda usar certificados administrados
por Google, ya que Google Cloud los obtiene, administra y renueva
de manera automática.
Para crear un certificado administrado por Google, debes tener un dominio. Si no tienes un dominio, puedes usar un certificado SSL autofirmado para realizar pruebas.
Si deseas crear un recurso de certificado SSL administrado por Google, haz lo siguiente: Si deseas crear un recurso de certificado SSL autoadministrado, haz lo siguiente:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAINgcloud 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 al mapa de URLs.
Para un balanceador de cargas HTTPS, crea un Proxy HTTPS de destino. El proxy es la parte del balanceador de cargas que contiene el certificado SSL para el balanceo de cargas HTTPS, por lo que también debes cargar el certificado en este paso.
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 enrutar las solicitudes entrantes al proxy.
Para un balanceador de cargas HTTPS, haz lo siguiente:
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=EXAMPLE_IP \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --global \ --ports=443
Conecta tu dominio al balanceador de cargas
Después de crear el balanceador de cargas, toma nota de la dirección IP
asociada: por ejemplo, 30.90.80.100. Para apuntar tu dominio hacia el
balanceador de cargas, crea un registro A a través de 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, si deseas
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 balanceador de cargas
Ahora que ya configuraste el balanceador de cargas, puedes comenzar a enviar tráfico a la dirección IP del balanceador de cargas. Si configuraste un dominio, también puedes enviar tráfico al nombre de dominio. Sin embargo, la propagación de DNS puede llevar un tiempo en completarse, por lo que puedes comenzar a usar la dirección IP para realizar pruebas.
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.
Toma nota de la Dirección IP del balanceador de cargas.
En el caso de un balanceador de cargas HTTPS, puedes probar tu balanceador de cargas con un navegador web en
https://IP_ADDRESS. ReemplazaIP_ADDRESSpor la dirección IP del balanceador de cargas. Deberías dirigirte a la página principal del serviciohelloworld.
Si eso no funciona y usas un certificado administrado por Google, confirma que el estado del recurso de certificado sea ACTIVO. Para obtener más información, consulta Estado de los recursos de certificado SSL administrado por Google.
Si usaste un certificado autofirmado para las pruebas, el navegador mostrará una advertencia. Debes indicar de manera explícita a tu navegador que acepte un certificado autofirmado. Haz clic en la advertencia para ver la página real.Para verificar las respuestas almacenadas en caché, usa curl desde la línea de comandos de la máquina local. Reemplaza IP_ADDRESS por la dirección IPv4 del balanceador de cargas.
Si usas un certificado administrado por Google, prueba el dominio que apunta a la dirección IP del balanceador de cargas. Por ejemplo:
curl -v -o/dev/null https://IP_ADDRESS
Si usas un certificado autofirmado, también debes especificar la marca
-k. Por ejemplo:curl -v -o/dev/null -k -s 'https://DOMAIN:443' --connect-to DOMAIN:443:IP_ADDRESS:443
La opción
-kde curl permite que curl funcione si tienes un certificado autofirmado. Solo debes usar el parámetro-kpara probar tu propio sitio. En circunstancias normales, un certificado válido es una medida de seguridad importante y no se deben ignorar sus advertencias.El resultado debe contener los encabezados personalizados
Cache-IDyCache-Statusque configuraste para indicar si la respuesta se entregó desde la caché:HTTP/2 200 cache-status: hit cache-id: SEA-b9fa975e
El resultado contiene los encabezados de respuesta que indican que hubo un acierto de caché, lo que significa que el recurso estático de la app sin servidores se entregó al usuario desde una caché perimetral de Cloud CDN.
El encabezado
cache-statusindica el valordisabledpara las respuestas que no se almacenan en caché en Cloud CDN. Para las respuestas almacenadas en caché, el valor del encabezadocache-statuseshit,missorevalidated.
Inhabilita Cloud CDN
Consola
Inhabilita Cloud CDN para un solo servicio de backend
En la consola de Google Cloud , ve a la página Cloud CDN.
En el lado derecho de la fila de origen, haz clic en Menú y, luego, selecciona Editar.
Desmarca las casillas de verificación de los servicios de backend que deseas que dejen de usar Cloud CDN.
Haz clic en Actualizar.
Quita Cloud CDN de todos los servicios de backend de un origen
En la consola de Google Cloud , ve a la página Cloud CDN.
En el lado derecho de la fila de origen, haz clic en Menú y, luego, selecciona Quitar.
Para confirmar la acción, haz clic en Quitar.
gcloud
gcloud compute backend-services update BACKEND_SERVICE_NAME
--no-enable-cdn
Inhabilitar Cloud CDN no invalida ni borra definitivamente las memorias caché. Si desactivas Cloud CDN y vuelves a activarlo, es probable que la mayor parte del contenido almacenado en caché, o todo ese contenido, aún siga almacenado en caché. Para evitar que las memorias caché usen el contenido, debes invalidarlo.
Próximos pasos
- Consulta la documentación de Cloud CDN para obtener más información sobre los modos de caché y determinar la capacidad de almacenamiento en caché de las respuestas.