Configurar la reescritura de URL para un balanceador de carga de aplicación clásico

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:

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

  1. Ve a la página Balanceo de carga de la Google Cloud consola.
    Ir a la página Balanceo de carga
  2. Haz clic en http-lb.
  3. Haz clic en Editar .
  4. Mantén la ventana abierta para continuar.

Cambiar las reglas de host y ruta

  1. En la columna de la izquierda de la pantalla, haga clic en Reglas de host y ruta.
  2. Selecciona Regla de host y ruta avanzada (redirección de URL, reescritura de URL).
  3. 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.
  4. Haz clic en el icono del lápiz de la fila /love-to-fetch/* Route traffic to a single backend: dogs.
  5. En Rutas, elimina /love-to-fetch/* y añade /*.
  6. En Acción, selecciona Dirigir tráfico hacia un solo backend.
  7. Haz clic en Acción complementaria (reescritura de URL).
  8. Deja en blanco el campo Reescritura de host.
  9. En Reescritura de prefijo de ruta, introduce /love-to-fetch/.
  10. En Backend, selecciona dogs.
  11. Haz clic en Guardar.
  12. 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

  13. Si todo es correcto, haz clic en Actualizar para actualizar tu balanceador de carga HTTP.

gcloud

  1. 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
    
  2. 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.

  3. 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.

Siguientes pasos