Puedes usar un backend externo cuando el contenido se aloja de forma local o en otra nube. El backend externo te permite entregar el contenido de Cloud CDN de Google.
En este documento, se explica el proceso de configuración de objetos almacenamiento, como Amazon Simple Storage Service (Amazon S3) o Azure Blob Storage, como un para Cloud CDN. Los backends externos y Cloud CDN funcionan en conjunto con un balanceador de cargas de aplicaciones externo.
Arquitectura
Para crear el backend externo, crea un grupo de extremos de red de Internet (NEG) que apunte al servicio de almacenamiento de terceros como backend para el balanceador de cargas. Los NEG de Internet se usan para backends externos.
Para configurar el bucket de almacenamiento de terceros como backend, debes hacer lo siguiente:
- Prepara el bucket de almacenamiento de terceros para que entregue contenido.
- Crea un NEG de Internet que use el FQDN del bucket.
- Configura el balanceador de cargas de aplicaciones externo con el NEG de Internet como backend.
- Prueba la configuración
Prepara el bucket para entregar contenido
Antes de comenzar la configuración en Google Cloud, asegúrate de que el bucket esté configurado correctamente. En estas instrucciones, se da por sentado que usas un bucket de Amazon S3 y tener los permisos necesarios para realizar cambios en el bucket de Amazon S3 y los objetos.
Asegúrate de que Bucket de Amazon S3 y sus objetos son públicos o que hayas configurado autenticación de origen privado para el bucket de Amazon S3.
Asegúrate de que el contenido cumpla con los requisitos de capacidad de almacenamiento en caché que se mencionan en Contenido que se puede almacenar en caché. Si necesitas agregar metadatos de objetos, consulta la base de conocimiento de AWS. Por ejemplo, Editar metadatos de objetos.
Necesitarás el extremo del bucket de Amazon S3 (el FQDN) cuando lo configures el NEG de Internet. Para obtener la información del extremo, sigue las instrucciones proporcionadas en la base de conocimiento de AWS, por ejemplo, Accede a un bucket. También puedes obtener la URL del extremo de Amazon S3 desde la página de descripción general del objeto.
Crea un NEG de Internet que use el nombre de host del bucket
Para simplificar, en este ejemplo se usa el FQDN backend.example.com
. Asegúrate de reemplazar esto con el FQDN de tu bucket de almacenamiento externo, que podría ser similar a http://unique-name-bucket.s3-us-west-1.amazonaws.com/
.
En esta guía se usa un ejemplo para describir los aspectos básicos del uso de un servidor backend (a veces llamado origen personalizado) en un balanceador de cargas de aplicaciones externo. Un backend externo es un extremo externo a Google Cloud. Cuando usas un backend externo con en un balanceador de cargas de aplicaciones externo, puedes mejorar el rendimiento Almacenamiento en caché de Cloud CDN.
En la guía, se explica cómo configurar un balanceador de cargas de aplicaciones externo global con un
Es un servicio de backend con Cloud CDN habilitado que se conecta mediante proxy a un
servidor de backend externo en backend.example.com
.
En el ejemplo, el balanceador de cargas acepta solicitudes HTTPS de clientes y enviar estas solicitudes como HTTPS al backend externo. En este ejemplo, se supone que que el backend externo admita HTTPS.
Otras opciones serían configurar un balanceador de cargas para que acepte HTTP o HTTPS y usar HTTPS cuando se envían solicitudes mediante proxy al backend externo.
En esta guía, se presupone que ya configuraste un balanceador de cargas y que agregas un nuevo backend externo. Para obtener más información, consulta Configura un balanceador de cargas de aplicaciones clásico con un grupo de instancias administrado backend.
En la figura 1, se muestra una arquitectura de ejemplo.
En el diagrama, www.example.com
tiene un frontend de balanceador de cargas con la dirección IP 120.1.1.1
. Cuando hay un error de caché, el usuario solicita
/cart/id/1223515
se recuperan del backend externo a través de HTTPS. El resto del tráfico entrante se dirige al servicio de backend de Google Cloud con las VM de Compute Engine o al bucket de backend, según el mapa de URL.
Antes de comenzar
Antes de seguir con esta guía, familiarízate con lo siguiente:
Descripción general de los grupos de extremos de red de Internet, lo que incluye las limitaciones.
Permisos
Para seguir esta guía, debes crear un extremo de red de Internet. de aplicaciones (NEG) y crear o modificar un balanceador de cargas de aplicaciones externo en un proyecto. Debes ser propietario o editor, o debes tener ambos siguientes roles de IAM de Compute Engine.
Tarea | Función requerida |
---|---|
Crear y modificar componentes del balanceador de cargas | Administrador de redes |
Crear y modificar los NEG | Administrador de instancias de Compute |
Configura un balanceador de cargas con un backend externo
En esta sección, se muestra cómo configurar y probar un NEG de Internet.
Descripción general de la configuración
La configuración de un NEG de Internet implica hacer lo siguiente:
- Definir el extremo de Internet en un NEG de Internet
- Agregar un NEG de Internet como el backend de un servicio de backend
- Definir a qué tráfico de usuarios se asignará este servicio de backend mediante la configuración el mapa de URL del balanceador de cargas de aplicaciones externo.
- Permite mostrar los rangos 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 compara cada solicitud con el mapa de URL a fin de determinar el servicio de backend apropiado para la solicitud.
- Para los backends externos, el proxy de destino debe ser
TargetHttpProxy
oTargetHttpsProxy
. En este ejemplo, se usaTargetHttpsProxy
. - En el servicio de backend, Cloud CDN habilitado (opcional) permite almacenar en caché y entregar respuestas desde las cachés de Cloud CDN.
- En este ejemplo, se incluye un
personalizado
encabezado, que es obligatorio cuando el backend externo espera un
un valor particular para el encabezado
Host
de la solicitud HTTP.
La configuración se verá de la siguiente manera.
Crea el NEG y el extremo de Internet
Console
- En la consola de Google Cloud, ve a la página Grupos de extremos de red.
- Haz clic en Crear un grupo de extremos de red.
- Ingresa el nombre del grupo de extremos de red:
example-fqdn-neg
. - En Tipo de grupo de extremos de red, selecciona Grupo de extremos de red (Internet).
- En Puerto predeterminado, ingresa
443
. - En Nuevo extremo de red, selecciona Nombre y puerto de dominio completamente calificados.
- En el FQDN, ingresa
backend.example.com
. - En Tipo de puerto, selecciona Predeterminado y verifica que el Número de puerto sea
443
. - Haz clic en Crear.
gcloud
Crea un NEG de Internet y establece
--network-endpoint-type
comointernet-fqdn-port
(el nombre de host y el puerto en el que se encuentra el backend externo):gcloud compute network-endpoint-groups create example-fqdn-neg \ --network-endpoint-type="internet-fqdn-port" --global
Agrega el extremo al NEG. Si no se especifica un puerto, la selección se establece de forma predeterminada en el puerto
80
(HTTP) o443
(HTTPS; HTTP/2), según el protocolo configurado en el servicio de backend. Asegúrate de incluir la marca--global
.gcloud compute network-endpoint-groups update example-fqdn-neg \ --add-endpoint="fqdn=backend.example.com,port=443" \ --global
Enumera el NEG de Internet creado:
gcloud compute network-endpoint-groups list --global
Resultado:
NAME LOCATION ENDPOINT_TYPE SIZE example-fqdn-neg global INTERNET_FQDN_PORT 1
Enumera el extremo dentro del NEG:
gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \ --global
Resultado:
INSTANCE IP_ADDRESS PORT FQDN backend.example.com
Agrega un backend externo a un balanceador de cargas
En el siguiente ejemplo, se actualiza un balanceador de cargas existente.
En el balanceador de cargas existente, el servicio predeterminado es un servicio de Google Cloud. El ejemplo modifica el mapa de URL existente mediante la incorporación de un comparador de rutas de acceso que envía todas las solicitudes de cart/id/1223515
al servicio de backend images
, que está asociado con el NEG de Internet.
Console
Crea el servicio de backend y agrega el NEG de Internet
- En la consola de Google Cloud, ve a la página Balanceo de cargas.
- Para agregar el servicio de backend a un balanceador de cargas existente, selecciona tu balanceador de cargas de aplicaciones clásico, Menú, y, luego, selecciona Editar.
- Haga clic en Configuración de backend.
- En la sección Servicios de backend y de buckets de backend, selecciona Crea un servicio de backend.
- Configura el nombre del servicio de backend como
images
. - En Tipo de backend, selecciona Grupo de extremos de red de Internet.
- Selecciona el protocolo que quieres usar desde el balanceador de cargas al NEG de Internet. Para este ejemplo, selecciona HTTPS.
- En Nuevo backend > Grupo de extremos de red de Internet, selecciona
example-fqdn-neg
y, luego, haz clic en Listo. - Selecciona Habilitar Cloud CDN.
- Opcional: Modifica la configuración del modo de almacenamiento en caché y de TTL.
- En Configuración avanzada, en Encabezados de solicitud personalizados, haz clic en Agregar encabezado.
- En Nombre del encabezado, ingresa
Host
. - En Valor de encabezado, ingresa
backend.example.com
.
- En Nombre del encabezado, ingresa
- Haz clic en Crear.
- Mantén la ventana abierta para continuar.
Conecta el servicio de backend a un mapa de URL existente
- Haz clic en Reglas de host y ruta.
- La primera fila o filas tienen servicios de Google Cloud en la columna derecha, y una de ellas ya se propagó con la regla predeterminada
Any unmatched (default)
para hosts y Rutas. - Asegúrate de que exista una fila con
images
seleccionado en la columna de la derecha. Si no existe, haz clic en Agregar regla de host y de ruta y seleccionaimages
. Propaga los otros campos de la siguiente manera:- En Hosts, ingresa
*
. - En Rutas, ingresa
/cart/id/1223515
.
- En Hosts, ingresa
Revisa y finaliza
- Haz clic en Revisar y finalizar.
- Compara tu configuración con lo que pretendías crear.
- Si todo parece correcto, haz clic en Actualizar.
gcloud
Crea un servicio de backend nuevo para el NEG:
gcloud compute backend-services create images \ --global \ --enable-cdn \ --cache-mode=CACHE_MODE \ --protocol=HTTP2
Para establecer el modo de almacenamiento en caché, reemplaza CACHE_MODE por uno de los siguientes valores:
CACHE_ALL_STATIC
: almacena en caché estática automáticamente. contenidoUSE_ORIGIN_HEADERS
(predeterminado): requiere que el origen establezca válido almacenar encabezados en caché para almacenar contenido en cachéFORCE_CACHE_ALL
: Almacena en caché todo el contenido, ignorando cualquierprivate
. Directivasno-store
ono-cache
en la respuestaCache-Control
encabezados
Configura el servicio de backend para agregar 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 agregar 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
Conecta el servicio de backend nuevo con el mapa de URL del balanceador de cargas mediante la creación de una regla coincidente nueva 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
Reemplaza lo siguiente:
EXAMPLE_URL_MAP
: El nombre del mapa de URL existenteGCP_SERVICE_EXAMPLE
: El nombre de un servicio de backend predeterminado existenteCUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE
: El nombre de esta regla de ruta de acceso nueva/CART/ID/1223515
: La rutaIMAGES
: El nombre del nuevo servicio de backend con el NEG de Internet conectado
Incluye los rangos de IP necesarios en la lista de entidades permitidas
Para permitir que un balanceador de cargas de aplicaciones externo envíe solicitudes a tu NEG de Internet, debes
consultar el registro TXT _cloud-eoips.googleusercontent.com
de DNS 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
El resultado contiene dos rangos de IP, como se muestra a continuación:
34.96.0.0/20
34.127.192.0/18
Toma nota de los rangos de IP y asegúrate de que tu firewall o la lista de control de acceso (LCA) a la nube permitan estos rangos.
Para obtener más información, consulta Autentica solicitudes.
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 balanceador de cargas de aplicaciones externo
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.
Si creaste un balanceador de cargas HTTP, puedes probar tu balanceador de cargas. a través de un navegador web en
http://IP_ADDRESS
. ReemplazaIP_ADDRESS
por la dirección IP del balanceador de cargas. Deberías dirigirte a la página principal del serviciohelloworld
.Si creaste un balanceador de cargas HTTPS, puedes probarlo a través de un navegador web en
https://IP_ADDRESS
. ReemplazaIP_ADDRESS
por 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 la página sobre el estado del recurso del certificado SSL que administra Google.
Como alternativa, puedes usar
curl
desde la línea de comandos de tu máquina local. ReemplazaIP_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 -s 'https://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
Opcional: Si usas un dominio personalizado, es posible que debas esperar a que se propague la configuración de DNS actualizada. Luego, prueba el dominio (por ejemplo,
backend.example.com
) en el navegador web.Para obtener ayuda con la solución de problemas, consulta la sección Soluciona problemas con el backend externo y el NEG de Internet.
Prueba Cloud CDN
Prueba 1: alcanza el extremo del bucket directamente
En esta prueba, se usan los comandos time
y wget
de una VM. En el ejemplo, se descarga /cart/id/1223515/image.jpg
del bucket backend.example.com
.
En el resultado, puede ver que la solicitud general tarda 780 ms. Este es el momento de recuperar una imagen de 3.3 MB directamente en Amazon S3.
time wget backend.example.com/cart/id/1223515/image.jpg
--2020-06-26 18:22:46-- backend.example.com/cart/id/1223515/image.jpg Resolving backend.example.com (backend.example.com)... 52.219.120.233 Connecting to backend.example.com (backend.example.com)|52.219.120.233|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3447106 (3.3M) [image/jpeg] Saving to: '/cart/id/1223515/image.jpg.47' /cart/id/1223515/image.jpg.47 100%[==============================================================================================================================================>] 3.29M 6.25MB/s in 0.5s 2020-06-26 18:22:47 (6.25 MB/s) - '/cart/id/1223515/image.jpg.47' saved [3447106/3447106] real 0m0.780s user 0m0.003s sys 0m0.012s
Prueba 2: primera solicitud a través de Cloud CDN
Esta prueba usa la dirección IP del balanceador de cargas para recuperar el archivo /cart/id/1223515/image.jpg
. Debido a que esta es la primera solicitud, debería ser un error y Cloud CDN debe recuperar la imagen del origen, que es Amazon S3. En el resultado, puedes ver que la solicitud tardó en 844 ms.
time wget http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg
--2020-06-26 18:19:27-- http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg Connecting to LOAD_BALANCER_IP_ADDRESS:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3447106 (3.3M) [image/jpeg] Saving to: '/cart/id/1223515/image.jpg.44' /cart/id/1223515/image.jpg.44 100%[==============================================================================================================================================>] 3.29M 8.23MB/s in 0.4s 2020-06-26 18:19:28 (8.23 MB/s) - '/cart/id/1223515/image.jpg.44' saved [3447106/3447106] real 0m0.844s user 0m0.003s sys 0m0.012s
Prueba 3: segunda solicitud a través de CDN
Haremos una solicitud más con esta IP del balanceador de cargas. Esta vez, debemos recibir una respuesta almacenada en caché, por lo que debería ser más rápida que las primeras 2 pruebas.
Estamos usando la misma IP de balanceo de cargas LOAD_BALANCER_IP_ADDRESS. En el resultado, podemos ver que la solicitud tardó solo 18 ms.
time wget http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg
--2020-06-26 18:19:29-- http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg Connecting to LOAD_BALANCER_IP_ADDRESS:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3447106 (3.3M) [image/jpeg] Saving to: '/cart/id/1223515/image.jpg.45' /cart/id/1223515/image.jpg.45 100%[==============================================================================================================================================>] 3.29M --.-KB/s in 0.008s 2020-06-26 18:19:29 (423 MB/s) - '/cart/id/1223515/image.jpg.45' saved [3447106/3447106] real 0m0.018s user 0m0.001s sys 0m0.010s
Verifica mediante registros
Los registros de Cloud CDN están asociados con el balanceador de cargas de aplicaciones externo al que Los backends habilitados para Cloud CDN están conectados. Con los registros, puedes verificar si una solicitud es un acierto o un error. Puedes obtener más información sobre los registros de Cloud CDN en Visualiza registros.
Limitaciones
El bucket de terceros y los objetos deben ser públicos. Como alternativa, puedes mantener el bucket y los objetos privados si configuras autenticación de origen privado. Los backends externos no admiten otros métodos para la autenticación de contenido, como URLs firmadas o cookies firmadas.
Cuando se usa un servicio de backend externo que espera un valor particular el encabezado
Host
de la solicitud HTTP, debes configurar el servicio de backend para Configura el encabezadoHost
con el valor esperado. Si no configuras una cuenta encabezado de la solicitud, un servicio de backend conserva el encabezadoHost
que que se usa para conectarse al balanceador de cargas de aplicaciones externo de Google Cloud. Para información general sobre encabezados personalizados, consulta Configura encabezados de solicitud personalizados. Para ver un ejemplo específico, consulta Configura un balanceador de cargas con un backend externo.
¿Qué sigue?
- Para verificar si Cloud CDN entrega respuestas desde la caché, consulta Registros y métricas de almacenamiento en caché.
- Para saber qué contenido se puede almacenar en caché o no, consulta el Descripción general del almacenamiento en caché.
- Para encontrar puntos de presencia de GFE, consulta Ubicaciones de caché.