Usa mapas de URL

Los balanceadores de cargas basados en HTTP(S) te permiten dirigir el tráfico a distintas instancias según la URL entrante. Por ejemplo, puedes enviar las solicitudes para http://www.example.com/audio a un servicio de backend que contenga instancias configuradas para entregar archivos de audio y las solicitudes para http://www.example.com/video a otro servicio de backend que contenga instancias configuradas para entregar archivos de video.

Configura mapas de URL

Consulta el recurso UrlMaps para obtener descripciones de las propiedades disponibles cuando trabajas con mapas de URL a través de GCP Console, la herramienta de línea de comandos de gcloud o la API de REST.

Agrega un mapa de URL

Console

Para agregar un mapa de URL con GCP Console, sigue estos pasos:

  1. Dirígete a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla Detalles del balanceador de cargas, haz clic en el lápiz de Editar correspondiente al balanceador de cargas seleccionado.
  4. Selecciona Reglas de host y ruta de acceso.
  5. Haz clic en Agregar regla de host y ruta de acceso.
  6. Completa el campo Host, el campo Rutas de acceso o ambos, y selecciona un servicio de backend o depósito de backend.
  7. Revisa que aparezca una marca de verificación azul a la izquierda de Reglas de host y ruta de acceso, y haz clic en el botón Actualizar.

gcloud

Para agregar un mapa de URL con la herramienta de línea de comandos de gcloud, usa el comando url-maps create:

gcloud compute url-maps create URL_MAP \
    --default-service BACKEND_SERVICE \
   [--description DESCRIPTION]

En el caso de los balanceadores de cargas HTTP(S) internos, asegúrate de incluir la marca --region cuando crees el mapa de URL.

Un mapa de URL recién creado coincide solo con una ruta, la predeterminada (/*). Este comparador de rutas de acceso predeterminado se crea automáticamente. Todo el tráfico que no coincida con una regla de host ni un comparador de rutas de acceso creado de forma manual se envía al servicio de backend predeterminado del mapa de URL.

Agrega un comparador de rutas de acceso

Un comparador de rutas de acceso mapea las rutas de solicitudes de HTTP(S) o prefijos de ruta de acceso (por ejemplo, /video) a servicios de backend. Todo el tráfico que coincide con la ruta de acceso especificada se procesa según las reglas del comparador. Si una ruta coincide con una regla, la solicitud se reenvía a los backends asociados con ella. Si una solicitud coincide con las reglas no path del comparador de rutas de acceso, la solicitud se reenvía al backend predeterminado del comparador.

Console

Para crear un comparador de rutas de acceso con GCP Console, sigue estos pasos:

  1. Si no estás en la pantalla Reglas de host y ruta de acceso, dirígete a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla Detalles del balanceador de cargas, haz clic en el lápiz de Editar correspondiente al balanceador de cargas seleccionado.
  4. En la pantalla Reglas de host y ruta de acceso, haz clic en Agregar regla de host y ruta de acceso o haz clic en un campo de Rutas de acceso existente.
  5. Ingresa la ruta que deseas configurar (por ejemplo, /video).
  6. Revisa que aparezca una marca de verificación azul a la izquierda de Reglas de host y ruta de acceso, y haz clic en el botón Actualizar.

gcloud

Para crear comparador de rutas de acceso con la herramienta de línea de comandos de gcloud, usa el comando gcloud compute url-maps add-path-matcher:

gcloud compute url-maps add-path-matcher URL_MAP \
   --default-service BACKEND_SERVICE \
   --path-matcher-name PATH_MATCHER \
   [--path-rules PATH=SERVICE]

Este comando requiere un servicio de backend predeterminado al que se envíen las solicitudes sin coincidencia. Si lo deseas, puedes usar la marca --path-rules para definir asignaciones entre rutas de solicitudes y servicios de backend. En el siguiente ejemplo, las rutas de solicitud /video/ y /video/* se enrutan al servicio de backend video-service:

  --path-rules "/video=video-service,/video/*=video-service"

Los comandos url-maps create y url-maps add-path-matcher tienen un parámetro --default-service. En create, el servicio predeterminado es el que se usa si ninguno de los comparadores de rutas de acceso coincide con la URL entrante. En add-path-matcher, el servicio predeterminado es el que se usa si la ruta coincide con el comparador de rutas, pero ninguna de las --path-rules coincide.

Borra un comparador de rutas

Console

Para borrar un comparador de rutas de acceso, sigue estos pasos:

  1. Dirígete a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla Detalles del balanceador de cargas, haz clic en el lápiz de Editar correspondiente al balanceador de cargas seleccionado.
  4. Selecciona Reglas de host y ruta de acceso.
  5. En el campo Rutas de acceso de un mapa de URL existente, haz clic en la "x" del nombre del comparador de rutas de acceso.
  6. Revisa que aparezca una marca de verificación azul a la izquierda de Reglas de host y ruta de acceso, y haz clic en el botón Actualizar.

gcloud

Para borrar un comparador de rutas de acceso, usa el comando gcloud compute url-maps remove-path-matcher:

 gcloud compute url-maps remove-path-matcher URL_MAP \
     [--path-matcher-name PATH_MATCHER]

Agrega una regla de host

Una vez que hayas creado uno o más comparadores de rutas de acceso, puedes definir una regla de host que envíe tráfico a un comparador de rutas específico según el componente de host de la solicitud.

Si especificas una regla de host en un mapa de URL, este busca coincidencias primero con la ruta de host. Si se detecta una coincidencia con la regla de host, luego se evalúa el comparador de rutas de acceso. Si no hay coincidencia con la regla de host, el tráfico se envía al servicio de backend predeterminado del mapa de URL y no se consulta ningún comparador de rutas de acceso.

Si creas una regla de host para * y otra para un host específico como example.com, una solicitud para example.com coincidirá con esa regla de host y todos los demás hosts coincidirán con la regla de *.

Si no especificas una regla de host, las URL de todos los hosts (por ejemplo, example.com y example.net) pueden coincidir con una ruta de acceso.

Si creas reglas de host individuales (por ejemplo, una regla para example.com y otra para example.net), debes crear reglas de ruta de acceso tanto para example.com como para example.net.

Console

Para crear una regla de host con GCP Console, sigue estos pasos:

  1. Si no estás en la pantalla Reglas de host y ruta de acceso, dirígete a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla Detalles del balanceador de cargas, haz clic en el lápiz de Editar correspondiente al balanceador de cargas seleccionado.
  4. En la pantalla Reglas de host y ruta de acceso, haz clic en Agregar regla de host y ruta de acceso o haz clic en un campo de Hosts existente.
  5. Ingresa un nombre de host completo (por ejemplo, web.example.com).
  6. Revisa que aparezca una marca de verificación azul a la izquierda de Reglas de host y ruta de acceso, y haz clic en el botón Actualizar.

gcloud

Para crear una regla de host mediante la herramienta de línea de comandos de gcloud, usa el comando gcloud compute url-maps add-host-rule:

  gcloud compute url-maps add-host-rule URL_MAP \
      --hosts HOSTS --path-matcher-name PATH_MATCHER

La marca --hosts define un conjunto de hosts con los que se deben comparar las solicitudes. Por ejemplo, el siguiente valor --hosts compararía las solicitudes con www.example.com y cualquier subdominio de google.com:

  --hosts *.google.com,www.example.com

Borra una regla de host

Console

Para borrar una regla de host, sigue estos pasos:

  1. Si no estás en la pantalla Reglas de host y ruta de acceso, dirígete a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla Detalles del balanceador de cargas, haz clic en el lápiz de Editar correspondiente al balanceador de cargas seleccionado.
  4. Selecciona Reglas de host y ruta de acceso.
  5. En el campo Hosts de un mapa de URL existente, haz clic en la "x" del nombre del host.
  6. Revisa que aparezca una marca de verificación azul a la izquierda de Reglas de host y ruta de acceso, y haz clic en el botón Actualizar.

gcloud

Para borrar una regla de host de tu mapa de URL, usa el comando gcloud compute url-maps remove-host-rule:

 gcloud compute url-maps remove-host-rule NAME --host HOST

Por ejemplo, para quitar una regla de host que contiene el host google.com de un mapa de URL llamado my-map, ejecuta el siguiente comando:

 gcloud compute url-maps remove-host-rule my-map --host google.com

Selecciona un servicio de backend

Console

Si deseas seleccionar un servicio de backend para un mapa de URL, sigue estos pasos:

  1. Si no estás en la pantalla Reglas de host y ruta de acceso, dirígete a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla Detalles del balanceador de cargas, haz clic en el lápiz de Editar correspondiente al balanceador de cargas seleccionado.
  4. En la pantalla Reglas de host y ruta de acceso, en el menú desplegable del campo Backends, selecciona un servicio de backend disponible.
  5. Revisa que aparezca una marca de verificación azul a la izquierda de Reglas de host y ruta de acceso, y haz clic en el botón Actualizar.

gcloud

Para seleccionar un servicio de backend con la herramienta de línea de comandos de gcloud, usa el comando url-maps set-default-service.

gcloud compute url-maps set-default-service URL_MAP_NAME
  (--default-backend-bucket=DEFAULT_BACKEND_BUCKET
    | --default-service=DEFAULT_SERVICE)[GCLOUD_WIDE_FLAG ...]

Prueba un mapa de URL

Si administras una gran cantidad de mapas de URL, es recomendable que agregues pruebas a cada archivo de mapa de URL para verificar que las reglas de host y ruta de acceso tengan el comportamiento previsto. Las reglas de host y ruta de acceso pueden contener comodines, y es posible que se produzcan superposiciones. Las pruebas son como pruebas de unidades. Garantizan que una solicitud a una URL específica se dirija al servicio de backend correcto.

Cuando editas tu mapa de URL, se ejecutan inmediatamente todas las pruebas y se verifican todas las reglas del mapa. Si se detecta un problema en alguna de las pruebas, se bloquea la creación del balanceador de cargas y se muestra un mensaje de error como el siguiente. Se muestran mensajes de error tanto para las pruebas de Console como para las pruebas de la línea de comandos de gcloud:

  Error: Invalid value for field 'urlMap.tests': ''.
  Test failure: Expect URL '' to map to service '', but actually mapped to ''.

Agregar pruebas a los mapas de URL es opcional.

Console

Para ejecutar pruebas desde GCP Console, haz lo siguiente:

  1. Dirígete a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla Detalles del balanceador de cargas, haz clic en el lápiz de Editar correspondiente al balanceador de cargas seleccionado.
  4. Haz clic en Reglas de host y ruta de acceso.
  5. Debajo de Reglas de host y ruta de acceso, haz clic en Mostrar pruebas de configuración.
  6. Haz clic en Agregar prueba de configuración y, luego, ingresa lo siguiente como URL de prueba y backends:
    • URL de prueba example.com y Backend www-service.
    • URL de prueba example.net y Backend www-service.
    • URL de prueba example.net/web y Backend www-service.
    • URL de prueba example.com/videos y Backend video-service.
    • URL de prueba example.com/videos/browse y Backend video-service.
    • URL de prueba example.net/static y Backend static-service.
    • URL de prueba example.net/static/images y Backend static-service.
  7. Revisa que aparezca una marca de verificación azul a la izquierda de Reglas de host y ruta de acceso, y haz clic en el botón Actualizar.

gcloud

Para agregar pruebas a tu mapa de URL con la herramienta de línea de comandos de gcloud, usa el comando gcloud compute url-maps edit:

  gcloud compute url-maps edit URL_MAP

Con esto, se abrirá un editor de texto. Para los balanceadores de cargas HTTP(S), tus pruebas deben utilizar el siguiente formato:

<pre>
tests:
  - host: example.com
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
  - host: example.net
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
  - host: example.com
    path: /videos
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
  - host: example.com
    path: /videos/browse
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
  - host: example.net
    path: /web
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
  - host: example.net
    path: /static
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service
  - host: example.net
    path: /static/images
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service</pre>

Para los balanceadores de cargas HTTP(S) internos, las URL de tu servicio deben apuntar a servicios de backend regionales. Por ejemplo:

https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/[REGION]/backendServices//www-service

Si no especificas un host en una regla, las URL de todos los hosts (tanto example.com como example.net) pueden coincidir. En cambio, si tienes reglas de host, debes crear reglas que coincidan tanto con example.com como con example.net.

Muestra mapas de URL

Console

En Console, solo puedes ver mapas de URL de un balanceador de cargas a la vez.

  1. Dirígete a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla Detalles del balanceador de cargas, haz clic en el lápiz de Editar correspondiente al balanceador de cargas seleccionado.
  4. Mira las Reglas de host y ruta de acceso.

gcloud

Para mostrar una lista de mapas de URL con la herramienta de línea de comandos de gcloud, usa el comando url-maps list.

gcloud compute url-maps list

Obtén información sobre un mapa de URL

Console

Para obtener información sobre un mapa de URL, sigue estos pasos:

  1. Dirígete a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla Detalles del balanceador de cargas, haz clic en el lápiz de Editar correspondiente al balanceador de cargas seleccionado.
  4. Mira las Reglas de host y ruta de acceso.

gcloud

Para obtener información sobre un solo mapa de URL con la herramienta de línea de comandos de gcloud, usa el comando url-maps describe.

gcloud compute url-maps describe URL_MAP

Borra un mapa de URL

Antes de que puedas borrar un mapa de URL, primero debes borrar cualquier proxy HTTP(S) de destino que haga referencia a ese mapa. Consulta cómo usar proxies de destino para obtener información sobre su eliminación.

Console

Para borrar un mapa de URL, sigue estos pasos:

  1. Dirígete a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla Detalles del balanceador de cargas, haz clic en el lápiz de Editar correspondiente al balanceador de cargas seleccionado.
  4. En la pantalla Detalles del balanceador de cargas, ve a las Reglas de host y ruta de acceso.
  5. Haz clic en la "X" que aparece a la derecha de un mapa de URL para borrarlo. El mapa de URL desaparecerá.
  6. Revisa que aparezca una marca de verificación azul a la izquierda de Reglas de host y ruta de acceso, y haz clic en el botón Actualizar.

gcloud

Para borrar un mapa de URL con la herramienta de línea de comandos de gcloud, usa el comando url-maps delete. Antes de que puedas borrar un mapa de URL, primero debes borrar cualquier proxy HTTP de destino que haga referencia a ese mapa.

gcloud compute url-maps delete URL_MAP [--quiet]

Trabaja con cachés de Cloud CDN

Cloud CDN admite la invalidación de objetos de mapa de URL especificados en cachés de Cloud CDN.

Para obtener más información, consulta la página sobre la invalidación de caché en Cloud CDN.

Pasos siguientes