En esta guía se usa un ejemplo para describir los conceptos básicos del uso de un backend externo (a veces denominado origen personalizado) en un balanceador de carga de aplicación externo. Un backend externo es un endpoint que es externo a Google Cloud. Si usas un backend externo con un balanceador de carga de aplicación externo, puedes mejorar el rendimiento usando el almacenamiento en caché de Cloud CDN.
En la guía se explica cómo configurar un balanceador de carga de aplicación externo global con un servicio de backend habilitado para Cloud CDN que actúa como proxy de un servidor de backend externo en backend.example.com
.
En el ejemplo, el balanceador de carga acepta solicitudes HTTPS de los clientes y las proxyiza como HTTPS al backend externo. En este ejemplo se da por supuesto que el backend externo admite HTTPS.
Otra opción sería configurar un balanceador de carga para que acepte solicitudes HTTP o HTTPS y usar HTTPS al proxyizar solicitudes al backend externo.
En esta guía se da por hecho que ya ha configurado un balanceador de carga y que va a añadir un nuevo backend externo. Para obtener más información, consulta Configurar un balanceador de carga de aplicaciones clásico con un backend de grupo de instancias gestionado.
En la figura 1 se muestra una arquitectura de ejemplo.
En el diagrama, www.example.com
tiene un frontend de balanceador de carga con la dirección IP 120.1.1.1
. Cuando se produce un fallo de caché, las solicitudes de los usuarios de /cart/id/1223515
se obtienen del backend externo mediante HTTPS. Todo el resto del tráfico entrante se dirige al Google Cloud servicio de backend
con VMs de Compute Engine o al backend bucket, en función del mapa de URLs.
Antes de empezar
Antes de seguir esta guía, familiarízate con lo siguiente:
Descripción general de los grupos de puntos finales de red de Internet, donde se incluyen las limitaciones.
Permisos
Para seguir esta guía, debe crear un grupo de puntos finales de red (NEG) de Internet y crear o modificar un balanceador de carga de aplicaciones externo en un proyecto. Debes ser propietario o editor del proyecto, o bien tener los dos roles de gestión de identidades y accesos de Compute Engine siguientes.
Tarea | Rol necesario |
---|---|
Crear y modificar componentes de balanceadores de carga | Administrador de red |
Crear y modificar grupos de puntos de conexión de red | Administrador de instancias de Compute |
Configurar un balanceador de carga con un backend externo
En esta sección se explica cómo configurar y probar un NEG de Internet.
Descripción general de la configuración
Para configurar una NEG de Internet, debes hacer lo siguiente:
- Definir el endpoint de Internet en un NEG de Internet.
- Añadir un NEG de Internet como backend a un servicio de backend.
- Definir qué tráfico de usuarios se asignará a este servicio de backend configurando el mapa de URLs de tu balanceador de carga de aplicación externo.
- Incluir en la lista de permitidas los intervalos de IP necesarios.
En este ejemplo se crean los siguientes recursos:
- Una regla de reenvío con la dirección IP
120.1.1.1
dirige las solicitudes entrantes a un proxy de destino. - El
networkTier
de la regla de reenvío debe serPREMIUM
. - El proxy de destino comprueba cada solicitud con el mapa de URLs para determinar el servicio backend adecuado para la solicitud.
- En el caso de los backends externos, el proxy de destino debe ser
TargetHttpProxy
oTargetHttpsProxy
. En este ejemplo se usaTargetHttpsProxy
. - Si la CDN de Cloud está habilitada (opcional) en el servicio de backend, se pueden almacenar en caché y servir respuestas desde las cachés de Cloud CDN.
- En este ejemplo se incluye un encabezado personalizado, que es obligatorio cuando el backend externo espera un valor concreto para el encabezado
Host
de la solicitud HTTP.
La configuración es similar a la siguiente.
Crear el NEG y el endpoint de Internet
Consola
- En la Google Cloud consola, ve a la página Grupos de endpoints de red.
- Haz clic en Crear grupo de endpoints de red.
- Introduce el nombre del grupo de puntos finales de red:
example-fqdn-neg
. - En Tipo de grupo de puntos finales de red, selecciona Grupo de puntos finales de red (Internet).
- En Puerto predeterminado, introduce
443
. - En Nuevo endpoint de red, selecciona Nombre de dominio completo y puerto.
- En FQDN, introduce
backend.example.com
. - En Tipo de puerto, selecciona Predeterminado y comprueba que Número de puerto sea
443
. - Haz clic en Crear.
gcloud
Crea un NEG de Internet y asigna el valor
--network-endpoint-type
ainternet-fqdn-port
(el nombre de host y el puerto en los que se puede acceder a tu backend externo):gcloud compute network-endpoint-groups create example-fqdn-neg \ --network-endpoint-type="internet-fqdn-port" --global
Añade tu endpoint al NEG. Si no se especifica ningún puerto, se seleccionará el puerto
80
(HTTP) o443
(HTTPS; HTTP/2) de forma predeterminada, en función del protocolo configurado en el servicio de backend. Incluye la marca--global
:gcloud compute network-endpoint-groups update example-fqdn-neg \ --add-endpoint="fqdn=backend.example.com,port=443" \ --global
Lista la NEG de Internet creada:
gcloud compute network-endpoint-groups list --global
Resultado:
NAME LOCATION ENDPOINT_TYPE SIZE example-fqdn-neg global INTERNET_FQDN_PORT 1
Lista el endpoint de ese NEG:
gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \ --global
Resultado:
INSTANCE IP_ADDRESS PORT FQDN backend.example.com
Añadir un backend externo a un balanceador de carga
En el siguiente ejemplo se actualiza un balanceador de carga.
En el balanceador de carga, el servicio predeterminado es un servicio a Google Cloud. En el ejemplo se modifica el mapa de URLs añadiendo un comparador de rutas que envía todas las solicitudes de cart/id/1223515
al servicio de backend images
, que está asociado al NEG de Internet.
Consola
Crea el servicio de backend y añade el NEG de Internet
- En la Google Cloud consola, ve a la página Balanceo de carga.
- Para añadir el servicio backend a un balanceador de carga, selecciona el balanceador de carga de aplicación clásico, haz clic en Menú y, a continuación, selecciona Editar.
- Haz clic en Configuración de backend.
- En el menú Servicios y segmentos de backend, selecciona Crear un servicio de backend.
- Asigna el nombre
images
al servicio de backend. - En Tipo de backend, selecciona Grupo de endpoints de red de Internet.
- Selecciona el protocolo que quieras usar desde el balanceador de carga hasta el NEG de Internet. En este ejemplo, selecciona HTTPS.
- En Nuevo backend > Grupo de endpoints de red de Internet, selecciona
example-fqdn-neg
y, a continuación, haz clic en Hecho. - Selecciona Habilitar Cloud CDN.
- Opcional: Modifica los ajustes de modo de caché y TTL.
- En Configuraciones avanzadas, en Encabezados de solicitud personalizados,
haz clic en Añadir encabezado.
- En Nombre del encabezado, escribe
Host
. - En Valor del encabezado, introduce
backend.example.com
.
- En Nombre del encabezado, escribe
- Haz clic en Crear.
- Mantén la ventana abierta para continuar.
Asociar el servicio backend a un mapa de URLs
- Haz clic en Reglas de host y ruta.
- En la primera fila o filas, se muestran los servicios en la columna de la derecha y uno de ellos ya incluye la regla predeterminada
Any unmatched (default)
para Hosts y Paths. Google Cloud - Asegúrate de que haya una fila con
images
seleccionada en la columna de la derecha. Si no existe, haga clic en Añadir regla de host y ruta y seleccioneimages
. Rellena los demás campos de la siguiente manera:- En Hosts (Hosts), introduce
*
. - En Rutas, introduce
/cart/id/1223515
.
- En Hosts (Hosts), introduce
Revisar y finalizar
- Haz clic en Revisar y finalizar.
- Compara los ajustes con lo que querías crear.
- Si todo es correcto, haz clic en Actualizar.
gcloud
Crea un servicio de backend para el NEG:
gcloud compute backend-services create images \ --global \ --enable-cdn \ --cache-mode=CACHE_MODE \ --protocol=HTTP2
Define el modo de caché. Para ello, sustituye CACHE_MODE por uno de los siguientes valores:
CACHE_ALL_STATIC
: almacena en caché automáticamente el contenido estáticoUSE_ORIGIN_HEADERS
(predeterminado): requiere que el origen defina encabezados de almacenamiento en caché válidos para almacenar contenido en caché.FORCE_CACHE_ALL
: almacena en caché todo el contenido, ignorando las directivasprivate
,no-store
ono-cache
en los encabezados de respuestaCache-Control
Configura el servicio de backend para añadir el encabezado de solicitud personalizado
Host: backend.example.com
a la solicitud:gcloud compute backend-services update images \ --custom-request-header "Host: backend.example.com" --global
Usa el comando
backend-services add-backend
para añadir el NEG de Internet al servicio de backend:gcloud compute backend-services add-backend images \ --network-endpoint-group "example-fqdn-neg" \ --global-network-endpoint-group \ --global
Asocia el nuevo servicio de backend al mapa de URLs del balanceador de carga creando una regla de coincidencia para dirigir las solicitudes a ese backend:
gcloud compute url-maps add-path-matcher EXAMPLE_URL_MAP \ --default-service=GCP_SERVICE_EXAMPLE \ --path-matcher-name=CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE \ --backend-service-path-rules=/CART/ID/1223515=IMAGES
Haz los cambios siguientes:
EXAMPLE_URL_MAP
: el nombre de tu mapa de URLsGCP_SERVICE_EXAMPLE
: el nombre de un servicio de backend predeterminadoCUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE
: el nombre de esta nueva regla de ruta./CART/ID/1223515
: la rutaIMAGES
: el nombre del nuevo servicio de backend con el NEG de Internet adjunto
Incluye en la lista de permitidos los intervalos de IP necesarios.
Para permitir que un balanceador de carga de aplicaciones externo envíe solicitudes a tu NEG de Internet, debes consultar el registro TXT de DNS _cloud-eoips.googleusercontent.com
con una herramienta como dig
o nslookup
.
Por ejemplo, ejecuta el siguiente comando dig
:
dig TXT _cloud-eoips.googleusercontent.com | grep -Eo 'ip4:[^ ]+' | cut -d':' -f2
La salida contiene dos intervalos de IP, como se indica a continuación:
34.96.0.0/20
34.127.192.0/18
Anota los intervalos de IP y asegúrate de que tu cortafuegos o lista de control de acceso (LCA) de la nube permita estos intervalos.
Para obtener más información, consulta Autenticar solicitudes.
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 de aplicación externo
Ahora que has configurado el balanceador de carga, 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 pruebas.
En la Google Cloud consola, ve 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.
Si has creado un balanceador de carga HTTP, puedes probarlo con un navegador web en
http://IP_ADDRESS
. SustituyeIP_ADDRESS
por la dirección IP del balanceador de carga. Se te dirigirá a la página principal del serviciohelloworld
.Si has creado un balanceador de carga HTTPS, puedes probarlo con un navegador web en
https://IP_ADDRESS
. SustituyeIP_ADDRESS
por la dirección IP del balanceador de carga. Se te dirigirá a la página principal del serviciohelloworld
.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.
También puedes usar
curl
desde la línea de comandos de tu máquina local. SustituyeIP_ADDRESS
por la dirección IPv4 del balanceador de carga.Si usas un certificado gestionado por Google, prueba el dominio que apunta a la dirección IP del balanceador de carga. Por ejemplo:
curl -s 'https://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
Opcional: Si usas un dominio personalizado, puede que tengas que esperar a que se propaguen los ajustes de DNS actualizados. A continuación, prueba tu dominio (por ejemplo,
backend.example.com
) en el navegador web.Si necesitas ayuda para solucionar problemas, consulta el artículo Solucionar problemas de NEG y backend externo e Internet.
Inhabilitar Cloud CDN
Consola
En la Google Cloud consola, ve a la página Balanceo de carga.
Haga clic en el nombre del balanceador de carga que quiera modificar.
Haz clic en
Editar.Haz clic en Configuración de backend.
En el servicio de backend con el backend de NEG de Internet, haz clic en
Editar.Desmarque la casilla Habilitar Cloud CDN.
Para revisar los cambios, haz clic en Revisar y finalizar y, a continuación, en Actualizar.
gcloud
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --no-enable-cdn
Si inhabilita Cloud CDN, no se invalidarán ni se purgarán las cachés. Si desactivas Cloud CDN y lo vuelves a activar, es posible que la mayoría o todo tu contenido almacenado en caché siga en caché. Para evitar que las cachés usen el contenido, debes invalidarlo.
Siguientes pasos
- Para comprobar si Cloud CDN está sirviendo respuestas desde la caché, consulta Registros y métricas de almacenamiento en caché.
- Para saber qué contenido se puede almacenar en caché y cuál no, consulta el artículo Descripción general del almacenamiento en caché.
- Para encontrar puntos de presencia de GFE, consulta Ubicaciones de caché.