NEGs sin servidor te permiten utilizar aplicaciones sin servidor de Google Cloud con balanceo de carga HTTP y HTTPS externos. Después de configurar un balanceador de carga con el backend de NEG sin servidor, las solicitudes al balanceador de carga se enrutan al backend de la aplicación sin servidor.
Si quieres obtener más información sobre los NEGs sin servidor, consulta la descripción general de NEGs sin servidor.
Antes de empezar
- Despliega un servicio de App Engine, Cloud Functions o Cloud Run.
- Si aún no lo has hecho, instala el SDK de Google Cloud.
- Configura los permisos.
- Añade un recurso de certificado SSL.
Desplegar un servicio de App Engine, Cloud Functions o Cloud Run
En estas instrucciones, se presupone que ya tienes un servicio Cloud Run, Cloud Functions o App Engine en ejecución.
En el ejemplo de esta página, hemos incluido el inicio rápido de Cloud Run para desplegar 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 carga HTTP o HTTPS externo que use un backend de NEG sin servidor para dirigir las solicitudes a este servicio.
Si todavía no has desplegado una aplicación sin servidor o si quieres probar una NEG sin servidor con una aplicación de ejemplo, prueba con una de las siguientes guías de inicio rápido. Puedes crear una aplicación sin servidor en cualquier región, pero deberás usar la misma región más adelante para crear el NEG y el balanceador de carga sin servidor.
Cloud Run
Para crear una aplicación Hello World sencilla, empaquétala en una imagen de contenedor y, luego, despliega la imagen de contenedor en Cloud Run. Consulta la guía de inicio rápido: compilación y despliegue.
Si ya has subido un contenedor de muestra a Container Registry, consulta la guía de inicio rápido sobre cómo desplegar un contenedor de ejemplo prediseñado.
Cloud Functions
Consulta Cloud 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 el SDK de Google Cloud
Instala la herramienta de línea de comandos gcloud
. Consulta la información general sobre gcloud para ver información conceptual sobre la herramienta e instalación.
Si no has ejecutado la herramienta de línea de comandos gcloud
anteriormente, ejecuta primero gcloud init
para inicializar tu directorio de gcloud.
Configurar permisos
Para seguir esta guía, debes crear un NEG sin servidor y crear un balanceador de carga HTTP(S) externo en un proyecto. Debes ser propietario o editor del proyecto, o debes tener los siguientes roles de gestión de identidades y accesos de Compute Engine:
Tarea | Rol obligatorio |
---|---|
Crear balanceadores de carga y componentes de red | Administrador de red |
Crear y modificar grupos de puntos de conexión de red | Administrador de instancias de Compute |
Crear y modificar certificados SSL | Administrador de seguridad |
Reservar 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 usan para llegar a tu balanceador de carga.
Consola
- Ve a la página de direcciones IP externas de la consola de Google Cloud.
Ir a la página Direcciones IP externas - Haz clic en Reservar dirección estática para reservar una dirección IPv4.
- Asigne un Nombre de
example-ip
. - Configure el nivel de red como Premium.
- Configura IPv4 (IP de IP) como IPv4.
- En Tipo, seleccione Global.
- Haz clic en Reservar.
gcloud
gcloud compute addresses create example-ip \ --ip-version=IPV4 \ --global
Anota la dirección IPv4 que se ha reservado:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Crear un recurso de certificado SSL
Para crear un balanceador de carga HTTPS, se debe añadir un recurso de certificado SSL a la interfaz del balanceador de carga. Crea un recurso de certificado SSL mediante un certificado SSL gestionado por Google o un certificado SSL autogestionado.
Certificados gestionados por Google. 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 y los registros DNS de ese dominio para que se dé de alta el certificado. Si aún no tienes un dominio, puedes obtener uno en Google Domains. Además, deberás actualizar el registro DNS A del dominio para que apunte a la dirección IP del balanceador de carga creada en el paso anterior (
example-ip
). Para obtener instrucciones detalladas, consulta Usar Certificados gestionados por Google.Certificados con firma automática. Si no quieres configurar un dominio en este momento, puedes usar un certificado SSL con firma automática para realizar pruebas.
En este ejemplo se da por hecho que ya has creado un recurso de certificado SSL.
Si quieres probar este proceso sin crear un recurso de certificado SSL (o un dominio requerido por los certificados gestionados por Google), puedes seguir las instrucciones de esta página para configurar una carga HTTP. .
Crear el balanceador de carga HTTP o HTTPS externo
En el siguiente diagrama, el balanceador de carga utiliza un backend de NEG sin servidor para dirigir las solicitudes a un servicio de Cloud Run sin servidor. En este ejemplo, hemos usado la guía de inicio rápido de Cloud Run para desplegar un servicio de Cloud Run.Como las comprobaciones del estado no son compatibles con los servicios de backend con backends de NEG sin servidor, no necesitas crear una regla de cortafuegos que permita las comprobaciones del estado si el balanceador de carga solo tiene backends de NEG sin servidor.
Consola
Asignar un nombre al balanceador de carga
- Ve a la página Balanceo de carga de la consola de Google Cloud.
Ir a la página Balanceo de carga - En Balanceo de carga de HTTP y HTTPS, haz clic en Iniciar configuración.
- En Solo en Internet o en uso interno, selecciona Desde Internet a mis máquinas virtuales.
- Haz clic en Continuar.
- En el campo Nombre del balanceador de carga, introduce
serverless-lb
. - No cierres la ventana para continuar.
Configurar los servicios de backend
- Haz clic en Configuración de backend.
- En el menú desplegable Crear o seleccionar un servicio de backend, mantén el cursor del ratón sobre Servicios de backend y selecciona Crear un backend servicio.
- Introduzca un nombre.
- En Tipo de backend, selecciona Grupo de puntos de conexión de red sin servidor.
- No modifiques el Protocolo. Este parámetro se ignora.
- En la sección Backends, ve a la ventana Nuevo backend y selecciona Crear grupo de puntos de conexión de red sin servidor.
- Introduzca un nombre.
- En Región, selecciona us-central1. Luego, selecciona Cloud Run.
- Haz clic en Seleccionar el nombre del servicio.
- En el menú desplegable Servicio, selecciona el servicio de Cloud Run para el que quieres crear un balanceador de carga.
- Haz clic en Crear.
- En la ventana Nuevo backend, haz clic en Listo.
- Selecciona Habilitar Cloud CDN. Conservar la configuración predeterminada del modo de caché y de TTL.
- Haz clic en Crear.
Configurar reglas de host y emparejamientos de rutas
Las reglas de host y los comparadores de rutas son componentes de configuración de un mapa de URL del balanceador de carga HTTP o HTTPS externo.
- Haga clic en Reglas de host y ruta.
- Conservar los hosts y las rutas predeterminados. En este ejemplo, todas las solicitudes se envían al servicio de backend creado en el paso anterior.
Configurar el frontend
- Haz clic en Configuración de frontend.
- Introduzca un nombre.
Para crear un balanceador de carga HTTPS, debes tener un certificado SSL (
gcloud compute ssl-certificates list
). Te recomendamos que utilices un certificado gestionado por Google, tal como se describe. antes. Para configurar un balanceador de carga HTTP o HTTPS externo, rellena los campos como se indica a continuación.Verifique que se han configurado las siguientes opciones con estos valores:
Property Valor (escribe un valor o selecciona una opción tal y como se especifica) Protocolo HTTPS Nivel de servicio de red Premium Versión de IP IPv4 Dirección IP ejemplo-ip Puerto 443 Certificado Selecciona un certificado SSL que ya tengas o crea uno.
Para crear un balanceador de carga HTTPS, debes disponer de un recurso de certificado SSL que pueda usarse en el proxy HTTPS. Puedes crear un recurso de certificado SSL mediante un certificado SSL gestionado por Google o un certificado SSL autogestionado.
Para crear un certificado gestionado por Google, debes tener un dominio. El registro A del dominio debe resolverse en la dirección IP del balanceador de carga (en este ejemplo, example-ip). Te recomendamos que utilices certificados gestionados por Google porque Google Cloud obtiene, gestiona y renueva estos certificados automáticamente. Si no tienes ningún dominio, puedes utilizar un certificado SSL con firma automática para realizar pruebas.Haz clic en Listo.
Revisar la configuración
- Haga clic en Revisar y finalizar.
- Revise las reglas de backend, de host y ruta y de frontend.
- Haz clic en Crear.
- Espera a que se cree el balanceador de carga.
- Haz clic en el nombre del balanceador de carga (unless‐lb).
- Anota la dirección IP del balanceador de carga para la siguiente tarea. Se denomina
IP_ADDRESS
.
gcloud
- Crea una NEG sin servidor para tu aplicación sin servidor.
Para crear un NEG sin servidor con un servicio de Cloud Run, sigue estos pasos:
gcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME \ --region=us-central1 \ --network-endpoint-type=serverless \ --cloud-run-service=CLOUD_RUN_SERVICE_NAME
Para obtener más opciones, consulta la guía de referencia degcloud
degcloud compute network-endpoint-groups create
. - Crea un servicio de backend.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --global \ --enable-cdn \ --cache-mode=CACHE_MODE \ --custom-response-header='Cache-Status: {cdn_cache_status}' \ --custom-response-header='Cache-ID: {cdn_cache_id}'
Sustituye CACHE_MODE por uno de los siguientes:
CACHE_All_STATIC
(predeterminado): almacena automáticamente el contenido estático. Las respuestas marcadas como no almacenables en caché (directivasprivate
,no-store
ono-cache
en los encabezados de respuestaCache-Control
) no se almacenan en caché. Para almacenar contenido dinámico en caché, el contenido debe tener encabezados de almacenamiento en caché válidos. Este es el comportamiento predeterminado de todos los backends de nuevos habilitados de Cloud CDN.USE_ORIGIN_HEADERS
: requiere que el origen establezca encabezados de almacenamiento en caché válidos para almacenar en caché el contenido. Las respuestas sin estas cabeceras no se almacenan en caché de Google y requieren un viaje completo al origen de cada solicitud, lo que puede afectar al rendimiento y aumentar la carga en el servidor de origen. Este es el comportamiento predeterminado de todos los backends de Cloud CDN ya existentes.FORCE_CACHE_ALL
: almacena en caché todo el contenido, ignorando las directivasprivate
,no-store
ono-cache
de los encabezados de respuestaCache-Control
. Esto puede almacenar en caché contenido privado por usuario (identificable por usuarios). Solo debes habilitarlo en backends que no muestren contenido privado o dinámico, como segmentos de Cloud Storage.
Para obtener información sobre las directivas de caché que entiende Cloud CDN y qué no almacena en caché, consulta los artículos Contenido almacenable en caché y Contenido no almacenable en caché.
- Añade la NEG sin servidor como 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 URL para dirigir las solicitudes entrantes al servicio de backend:
gcloud compute url-maps create URL_MAP_NAME \ --default-service BACKEND_SERVICE_NAME
Esta asignación de URL de ejemplo solo apunta a un servicio de backend que representa una única aplicación sin servidor, por lo que no necesitamos configurar reglas de host ni emparejamientos de rutas. Si tienes más de un servicio de backend, puedes utilizar reglas de host para dirigir las solicitudes a diferentes servicios según el nombre del host y puedes configurar emparejamientos de rutas para dirigir solicitudes a diferentes servicios según la ruta de la solicitud.
-
Para crear un balanceador de carga HTTPS, debes tener un recurso de certificado SSL que se utilizará en el proxy de destino HTTPS. Puedes crear un recurso de certificado SSL mediante un certificado SSL gestionado por Google o 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 ningún dominio, puedes utilizar un certificado SSL con firma automática para realizar pruebas.
Para crear un recurso de certificado SSL gestionado por Google:
gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAIN
Para crear un recurso de certificado SSL autogestionado:
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.
Para un balanceador de carga HTTPS, crea un proxy de destino HTTPS. El proxy es la parte del balanceador de carga que contiene el certificado SSL del balanceo de carga HTTPS, así que también se carga 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 global para dirigir las solicitudes entrantes al proxy.
Para un balanceador de carga HTTPS:
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --address=example-ip \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --global \ --ports=443
Actualizar los registros DNS de tu dominio para usar la dirección IP del balanceador de carga
Si aún no lo has hecho, actualiza el registro DNS A o AAAA de tu dominio para que apunte a la dirección IP del balanceador de carga para que el tráfico que se envíe a las URL de dominios personalizados se enruta a través del balanceador de carga.
Por ejemplo, si tienes un dominio personalizado de example.com
y todos los servicios se han asignado a este dominio, debes actualizar el registro DNS A o AAAA de example.com
para que apunte al balanceador de carga Dirección IP.
Antes de actualizar los registros DNS, puedes probar tu configuración de forma local forzando la resolución de DNS local del dominio personalizado en la dirección IP del balanceador de carga. Para realizar las pruebas de forma local, modifica el archivo /etc/hosts/
de tu máquina local para que apunte a example.com
a la dirección IP del balanceador de carga, o utiliza la marca curl --resolve
para forzar curl
para usar la dirección IP del balanceador de carga de la solicitud.
Cuando el registro DNS de example.com
resuelve la dirección IP del balanceador de carga HTTPS, las solicitudes enviadas a example.com
empiezan a enrutarse a través del balanceador de carga. El balanceador de carga los envía al servicio de backend correspondiente según su mapa de URL. Además, si el servicio de backend está configurado con una máscara de URL, la NEG sin servidor usa la máscara para dirigir la solicitud al servicio de Cloud Run, Cloud Functions o App Engine adecuado.
Si utilizas certificados gestionados por Google, las migraciones de servicios a un balanceador de carga HTTP(S) externo pueden causar periodos de inactividad, que generalmente tardan menos de una hora. Esto se debe a que el certificado SSL de tu balanceador de carga HTTP o HTTPS externo no se aprovisionará hasta que actualices los registros DNS para que apunten a la dirección IP del balanceador de carga.
Probar el balanceador de carga
Ahora que ya has configurado tu balanceador de carga, ya puedes empezar a enviar tráfico a la dirección IP del balanceador de carga. Si has configurado un dominio, también puedes enviar tráfico al nombre de dominio. Sin embargo, la propagación de DNS puede tardar en completarse, por lo que puedes empezar usando la dirección IP para hacer las pruebas.
- Ve a la página Balanceo de carga de la consola de Google Cloud.
Ir a la página Balanceo de carga - Haz clic en el balanceador de carga que acabas de crear.
- Anota la dirección IP del balanceador de carga.
Puedes probar un balanceador de carga HTTPS a través de
https://IP_ADDRESS
en un navegador web. SustituyeIP_ADDRESS
por la dirección IP del balanceador de carga. Se te debería redirigir a la página principal del serviciohelloworld
.Si eso no funciona y estás utilizando un certificado gestionado por Google, confirma que el estado del recurso de certificado sea ACTIVE. Para obtener más información, consulta el artículo sobre el estado de los recursos de certificado SSL gestionados por Google.
Si has utilizado un certificado con firma automática para realizar pruebas, el navegador mostrará una advertencia. Debes indicar explícitamente al navegador que acepte un certificado con firma automática. Haga clic en la advertencia para ver la página real.
Para verificar las respuestas de la caché, utiliza curl desde la línea de comandos de tu máquina local. Sustituye IP_ADDRESS por la dirección IPv4 del balanceador de carga.
curl -v -o/dev/null https://IP_ADDRESS
Si utilizas un certificado gestionado por Google, prueba el dominio que dirige a la dirección IP del balanceador de carga. Por ejemplo:
curl -v -o/dev/null -k -s 'https://DOMAIN:443' --connect-to DOMAIN:443:IP_ADDRESS:443
Si utilizas un certificado con firma automática, también deberás especificar la marca
-k
. La opción curl-k
permite que curl funcione si tienes un certificado con firma automática. Solo debes usar el parámetro-k
para probar tu propio sitio web. En circunstancias normales, un certificado válido es una medida de seguridad importante y no se deben ignorar las advertencias sobre el certificado.El resultado debería contener los encabezados personalizados
Cache-ID
yCache-Status
que hayas configurado para indicar si la respuesta se ha servido desde la caché:HTTP/2 200 cache-status: hit cache-id: SEA-b9fa975e
El resultado contiene los encabezados de respuesta que indican que había un resultado de caché, lo que significa que el recurso estático de la aplicación sin servidor se ha servido al usuario desde una caché perimetrales de Cloud CDN.
El encabezado
cache-status
indica el valor dedisabled
para las respuestas que no se almacenan en caché en Cloud CDN. Para las respuestas almacenadas en la memoria caché, el valor del encabezadocache-status
eshit
,miss
orevalidated
.
Inhabilitar Cloud CDN
Consola
Inhabilitar Cloud CDN en un solo servicio de backend
- En la consola de Google Cloud, ve a la página de Cloud CDN.
- A la derecha de la fila de origen, haz clic en Menú y, a continuación, selecciona Editar.
- Desmarca las casillas de los servicios de backend que quieras dejar de usar Cloud CDN.
- Haz clic en Update (Actualizar).
Eliminar Cloud CDN de todos los servicios de backend de un origen
- En la consola de Cloud, ve a la página de Cloud CDN.
- En el lado derecho de la fila de origen, haz clic en Menú y, a continuación, selecciona Quitar.
- Para confirmar la acción, haz clic en Eliminar.
gcloud
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --no-enable-cdn
Inhabilitar Cloud CDN no anula ni elimina las cachés. Si desactivas Cloud CDN y lo vuelves a activar, es posible que se almacenen en caché o la totalidad del contenido en caché. Para evitar que las páginas se utilicen en las cachés, debes validarlo.
Siguientes pasos
- Consulta la documentación de Cloud CDN para obtener más información sobre los modos de caché y determinar la caché de tus respuestas.