En este ejemplo, se muestra cómo reescribir la ruta de acceso especificada en una solicitud para un balanceador de cargas de aplicaciones clásico.
Si quieres configurar la administración del tráfico en los balanceadores de cargas de aplicaciones externos globales y los balanceadores de cargas de aplicaciones externos regionales, consulta las siguientes páginas:
- Configura la administración del tráfico en los balanceadores de cargas de aplicaciones externos globales
- Configura la administración del tráfico en los balanceadores de cargas de aplicaciones externos regionales
Antes de comenzar
Obtén información sobre las reescrituras de URL.
Obtén información sobre los mapas de URL en general y los comparadores de rutas de acceso en particular.
En el ejemplo de reescritura de URL, se supone que ya creaste un balanceador de cargas de aplicaciones externo mediante los pasos que se describen en Configura un balanceador de cargas con buckets de Cloud Storage.
Ese ejemplo te guía en la creación de dos recursos:
http://IP_ADDRESS/never-fetch/three-cats.jpg
http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
En estos casos,
/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 URL se ve de la siguiente manera:
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
Modifica el mapa de URL
En este ejemplo, reescribes la URL /love-to-fetch/
para que los usuarios puedan llegar a la imagen two-dogs.jpg
con esta URL simplificada:
http://IP_ADDRESS/two-dogs.jpg
Para ello, debes modificar el mapa de URL del balanceador de cargas de la siguiente manera:
Console
Edita tu balanceador de cargas
- Ve a la página Balanceo de cargas en la consola de Google Cloud.
Ir a la página Balanceo de cargas - Haz clic en
http-lb
. - Haz clic en Editar .
- Mantén la ventana abierta para continuar.
Cambia las reglas de host y ruta de acceso
- En la columna izquierda de la pantalla, haz clic en Reglas de host y ruta de acceso.
- Selecciona Regla avanzada de host y de ruta de acceso (redireccionamiento y reescritura de URL).
- Haz 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 ícono de lápiz
/love-to-fetch/* Route traffic to a single backend: dogs
.
para la fila - En Rutas de acceso, borra
/love-to-fetch/*
y agrega/*
. - En Acción, selecciona Enrutar el tráfico a un solo backend.
- Haz clic en Acción de complemento (reescritura de URL).
- Deja en blanco Reescritura del host.
- En Reescritura de prefijo de ruta de acceso, ingresa
/love-to-fetch/
. - En Backend, selecciona
dogs
. - Haz clic en Guardar.
Haz clic en Listo. La regla de host y ruta de acceso nueva se verá de la siguiente manera:
Rutas de acceso Acción Backend Cualquiera que no coincida (predeterminado) Enrutar el tráfico a un solo backend gatos /* Enrutar el tráfico a un solo backend perros Si todo parece correcto, haz clic en Actualizar para actualizar el balanceador de cargas de HTTP.
gcloud
Crea un archivo
/tmp/http-lb.yaml
YAML y asegúrate de reemplazar PROJECT_ID por el ID del proyecto.Cuando un usuario solicita el
/*
de la ruta de acceso, la ruta 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 URL.
gcloud compute url-maps validate --source /tmp/http-lb.yaml
Si las pruebas pasan y el comando genera un mensaje de éxito, guarda los cambios en el mapa de URL.
Actualiza el mapa de URL.
gcloud compute url-maps import http-lb \ --source /tmp/http-lb.yaml \ --global
Pruebas
Toma nota de la dirección IPv4 que se reservó:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Después de esperar varios minutos para que los cambios se propaguen, 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
.