En este ejemplo se muestra cómo reescribir la ruta especificada en una solicitud de un balanceador de carga de aplicación clásico.
Para configurar la gestión del tráfico de los balanceadores de carga de aplicación externos globales y regionales, consulta las siguientes páginas:
- Configurar la gestión del tráfico para un balanceador de carga de aplicación externo global
- Configurar la gestión del tráfico de un balanceador de carga de aplicación externo regional
Antes de empezar
Consulta información sobre la reescritura de URLs.
Consulta información sobre las mapas de URLs en general y los matchers de rutas en particular.
En el ejemplo de reescritura de URL se da por hecho que ya ha creado su balanceador de carga de aplicación externo siguiendo los pasos que se indican en el artículo Configurar un balanceador de carga con segmentos de Cloud Storage.
En ese ejemplo se explica cómo crear dos recursos:
http://IP_ADDRESS/never-fetch/three-cats.jpg
http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
Donde
/never-fetch/three-cats.jpg
se almacena en/cats
, que es el servicio predeterminado, y/love-to-fetch/two-dogs.jpg
se almacena en/dogs
.En este punto, el mapa de URLs tiene el siguiente aspecto:
gcloud compute url-maps describe http-lb
creationTimestamp: '2020-10-13T11:18:10.561-07:00' defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats fingerprint: MKfYsObzqgw= hostRules: - hosts: - '*' pathMatcher: path-matcher-1 id: '1420501688756228493' kind: compute#urlMap name: test-bucket pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats name: path-matcher-1 pathRules: - paths: - /love-to-fetch/* service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/http-lb
Modificar el mapa de URLs
En este ejemplo, se reescribe la URL /love-to-fetch/
para que los usuarios puedan acceder a la imagen two-dogs.jpg
con esta URL simplificada:
http://IP_ADDRESS/two-dogs.jpg
Para ello, modifica el mapa de URLs del balanceador de carga de la siguiente manera:
Consola
Editar un balanceador de carga
- Ve a la página Balanceo de carga de la Google Cloud consola.
Ir a la página Balanceo de carga - Haz clic en
http-lb
. - Haz clic en Editar .
- Mantén la ventana abierta para continuar.
Cambiar las reglas de host y ruta
- En la columna de la izquierda de la pantalla, haga clic en Reglas de host y ruta.
- Selecciona Regla de host y ruta avanzada (redirección de URL, reescritura de URL).
- Haga clic en la fila que contiene la regla de ruta no predeterminada. En este caso, la fila que tiene un asterisco (
*
) para todos los hosts. - Haz clic en el icono del lápiz
/love-to-fetch/* Route traffic to a single backend: dogs
.
de la fila - En Rutas, elimina
/love-to-fetch/*
y añade/*
. - En Acción, selecciona Dirigir tráfico hacia un solo backend.
- Haz clic en Acción complementaria (reescritura de URL).
- Deja en blanco el campo Reescritura de host.
- En Reescritura de prefijo de ruta, introduce
/love-to-fetch/
. - En Backend, selecciona
dogs
. - Haz clic en Guardar.
Haz clic en Listo. La nueva regla de host y ruta tiene el siguiente aspecto:
Rutas Acción Backend Sin coincidencia (predeterminado) Dirigir tráfico hacia un solo backend gatos /* Dirigir tráfico hacia un solo backend perros Si todo es correcto, haz clic en Actualizar para actualizar tu balanceador de carga HTTP.
gcloud
Crea un archivo YAML
/tmp/http-lb.yaml
y sustituye PROJECT_ID por el ID de tu proyecto.Cuando un usuario solicita la ruta
/*
, esta se reescribe en el backend a la ubicación real del contenido, que es/love-to-fetch/*
.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats hostRules: - hosts: - '*' pathMatcher: path-matcher-1 name: http-lb pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats name: path-matcher-1 pathRules: - paths: - /* routeAction: urlRewrite: pathPrefixRewrite: /love-to-fetch/ service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs tests: - description: Test routing to backend bucket, dogs host: example.com path: /love-to-fetch/test service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs
Valida el mapa de URLs.
gcloud compute url-maps validate --source /tmp/http-lb.yaml
Si las pruebas se superan y el comando muestra un mensaje de éxito, guarde los cambios en el mapa de URLs.
Actualiza el mapa de URLs.
gcloud compute url-maps import http-lb \ --source /tmp/http-lb.yaml \ --global
Pruebas
Anota la dirección IPv4 que se ha reservado:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Después de esperar varios minutos a que se propaguen los cambios, puedes probar esta configuración.
En la línea de comandos, ejecuta el siguiente comando curl:
curl http://IP_ADDRESS/two-dogs.jpg
En un navegador, abre http://IP_ADDRESS/two-dogs.jpg
.