Use mapas de URLs

Este guia mostra como configurar Google Cloud mapas de URLs. Um mapa de URLs é um conjunto de regras para encaminhar pedidos HTTP(S) recebidos para serviços de back-end específicos ou contentores de back-end. Um mapa de URLs mínimo corresponde a todos os caminhos de pedidos recebidos (/*).

Antes de seguir este guia, familiarize-se com os conceitos do mapa de URLs.

Os mapas de URLs são usados com os seguintes Google Cloud produtos:

Os mapas de URLs usados com balanceadores de carga de aplicações externos globais, balanceadores de carga de aplicações externos regionais, balanceadores de carga de aplicações internos e o Cloud Service Mesh também suportam várias funcionalidades avançadas de gestão de tráfego. Para mais informações, consulte o artigo Conceitos do mapa de URLs: Gestão avançada de tráfego.

Predefinições do mapa de URLs

Os mapas de URLs têm dois valores predefinidos, conforme descrito na tabela seguinte.

Tipo predefinido Definição Significado
Predefinição do mapa de URLs gcloud compute url-maps create

--default-service | --default-backend-bucket

O serviço de back-end ou o contentor de back-end predefinido especificado é usado se nenhuma das regras de anfitrião ou dos correspondentes de caminho corresponder ao URL recebido.
Predefinição do localizador de caminhos gcloud compute url-maps add-path-matcher

--default-service | --default-backend-bucket

O serviço de back-end predefinido especificado ou o contentor de back-end é usado se o caminho do URL corresponder a um matcher de caminho, mas nenhum dos --path-rules especificados corresponder.

Regras de anfitrião

Uma regra de anfitrião define um conjunto de anfitriões para fazer a correspondência com os pedidos.

Numa regra de anfitrião, o nome do anfitrião tem de ser um nome de domínio totalmente qualificado (FQDN). O nome do anfitrião não pode ser um endereço IPv4 ou IPv6. Por exemplo:

  • Funciona: example.com
  • Funciona: web.example.com
  • Funciona: *.example.com
  • Não funciona: 35.244.221.250

Configure mapas de URLs

Um mapa de URLs pode enviar tráfego para serviços de back-end ou contentores de back-end. Os contentores de back-end não são suportados com balanceadores de carga de aplicações externos regionais e balanceadores de carga de aplicações internos.

Consola

Para adicionar um mapa de URLs através da consola Google Cloud , siga os passos seguintes:

  1. Aceda à página Equilíbrio de carga.

    Aceda a Balanceamento de carga

  2. Clique no Nome de um balanceador de carga.
  3. Na página Detalhes do equilibrador de carga, clique em Editar para o equilibrador de carga selecionado.
  4. Selecione Regras de anfitriões e caminhos.
  5. Clique em Adicionar regra de anfitrião e caminho.
  6. Preencha o campo Anfitrião, o campo Caminhos ou ambos, e selecione um serviço de back-end ou um contentor de back-end.

    1. Introduza um nome de anfitrião totalmente qualificado, por exemplo, web.example.com.
    2. Introduza o caminho, por exemplo, /video.
    3. Na página Regras de anfitrião e caminho, no menu Back-ends, selecione um serviço de back-end disponível ou um contentor de back-end.
  7. Procure a marca de verificação azul à esquerda de Regras de anfitrião e caminho e clique no botão Atualizar.

gcloud

Para adicionar um mapa de URLs através da Google Cloud CLI, use o comando url-maps create:

gcloud compute url-maps create URL_MAP_NAME \
   (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \
   [--description DESCRIPTION] \
   [--global | --region=REGION]

Para balanceadores de carga de aplicações externos regionais e balanceadores de carga de aplicações internos, certifique-se de que inclui a flag --region quando criar o mapa de URLs.

Para criar um correspondente de caminho, use o comando gcloud compute url-maps add-path-matcher:

gcloud compute url-maps add-path-matcher URL_MAP_NAME \
   (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \
   --path-matcher-name PATH_MATCHER \
   [--path-rules="PATH=SERVICE or BUCKET"]

Este comando requer um serviço de back-end predefinido ou um contentor de back-end para o qual possa enviar pedidos não correspondentes. A flag --path-rules define mapeamentos entre caminhos de pedidos e serviços de back-end ou contentores. O exemplo seguinte encaminha os caminhos de pedido /video/ e /video/* para o serviço de back-end video-service:

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

Para criar uma regra de anfitrião, use o comando gcloud compute url-maps add-host-rule:

gcloud compute url-maps add-host-rule URL_MAP_NAME \
    --hosts=[HOSTS] --path-matcher-name=PATH_MATCHER

Por exemplo, o valor --hosts corresponde a pedidos em relação a www.example.com e a qualquer subdomínio de altostrat.com:

--hosts=[*.altostrat.com,www.example.com]

Para alterar o serviço predefinido ou o contentor predefinido de um mapa de URLs, use o 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 ...]

Terraform

Para criar um mapa de URLs global, use o recurso google_compute_url_map.

# url map
resource "google_compute_url_map" "default" {
  name            = "http-lb"
  default_service = google_compute_backend_bucket.default.id
}

Para criar um mapa de URLs regional, use o recurso google_compute_region_url_map.

resource "google_compute_region_url_map" "default" {
  name            = "regional-l7-xlb-map"
  region          = "us-west1"
  default_service = google_compute_region_backend_service.default.id
}

Valide a configuração do mapa de URLs

Antes de implementar um mapa de URLs, certifique-se de que valida a configuração do mapa de URLs para garantir que o mapa está a encaminhar pedidos para os back-ends adequados conforme previsto. Pode fazê-lo adicionando testes à configuração do mapa de URLs. Pode experimentar diferentes regras de mapeamento de URLs e executar quantos testes forem necessários para ter a certeza de que o mapa encaminha o tráfego adequadamente quando é implementado. Além disso, se forem necessárias alterações às regras no futuro, pode testá-las antes de implementar a nova configuração.

Use o comando gcloud compute url-maps validate para validar a configuração do mapa de URLs. Este comando apenas testa a configuração fornecida. Independentemente de os testes serem aprovados ou reprovados, não são guardadas alterações no mapa de URLs implementado. Este comportamento é diferente de outros comandos de mapeamento de URLs (edit e import), que também executam os mesmos testes, mas guardam efetivamente a nova configuração se os testes forem aprovados. Quando quiser testar uma nova configuração de encaminhamento sem fazer alterações ao mapa de URLs implementado, use o comando validate.

O comando validate permite-lhe testar configurações de rotas avançadas, como o encaminhamento com base em cabeçalhos e parâmetros de consulta, redirecionamentos de HTTP para HTTPS e reescritas de URLs.

Consola

Não pode usar a Google Cloud consola para validar a configuração do mapa de URLs. Em alternativa, use gcloud ou a API REST.

gcloud

Para validar a configuração do mapa de URLs, use o comando gcloud compute url-maps validate.

Para o balanceador de carga de aplicações externo global:

gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --global

Para o balanceador de carga de aplicações clássico:

gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE \
    --load-balancing-scheme=EXTERNAL \
    --global
  • PATH_TO_URL_MAP_CONFIG_FILE: substitua por um caminho para o ficheiro que contém a configuração do mapa de URLs para validação.

Valide as alterações ao mapa de URLs de um equilibrador de carga existente

Se tiver um equilibrador de carga existente que precise de alterações ao mapa de URLs, pode testar essas alterações de configuração antes de as publicar.

  1. Exporte o mapa de URLs existente do equilibrador de carga para um ficheiro YAML.

    gcloud compute url-maps export URL_MAP_NAME \
       --destination PATH_TO_URL_MAP_CONFIG_FILE \
       --global
    
  2. Edite o ficheiro YAML com a nova configuração. Por exemplo, se quiser editar um balanceador de carga de aplicações externo e enviar todos os pedidos com o caminho /video para um novo serviço de back-end denominado video-backend-service, pode adicionar testes à configuração do mapa de URLs da seguinte forma:

    Configuração do mapa de URLs existente com um único web-backend-service predefinido:

     kind: compute#urlMap
     name: URL_MAP_NAME
     defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     

    Configuração do mapa de URLs editada com o matcher de caminhos adicionado e testes para o serviço de back-end web-backend-service predefinido e o novo video-backend-service:

     kind: compute#urlMap
     name: URL_MAP_NAME
     defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     hostRules:
     - hosts:
       - '*'
       pathMatcher: pathmap
     pathMatchers:
     - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
       name: pathmap
       pathRules:
       - paths:
         - /video
         - /video/*
         service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
     tests:
     - description: Test routing to existing web service
       host: foobar
       path: /
       service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     - description: Test routing to new video service
       host: foobar
       path: /video
       service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
    
  3. Valide a nova configuração.

    gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE
    

    Se todos os testes forem aprovados com êxito, deve ver uma mensagem de êxito, como:

    Successfully validated [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_CONFIG_FILE_NAME]
    

    Se os testes falharem, é apresentada uma mensagem de erro. Faça as correções necessárias ao ficheiro de configuração do mapa de URLs e tente validar novamente.

    Error: Invalid value for field 'urlMap.tests': ''.
    Test failure: Expect URL 'HOST/PATH' to map to service 'EXPECTED_BACKEND_SERVICE', but actually mapped to 'ACTUAL_BACKEND_SERVICE'.
    
  4. Depois de saber que a nova configuração funciona e não afeta a configuração existente, pode importá-la para o mapa de URLs. Tenha em atenção que este passo também implementa o mapa de URLs com a nova configuração.

    gcloud compute url-maps import URL_MAP_NAME \
       --source PATH_TO_URL_MAP_CONFIG_FILE \
       --global
    

Adicione testes a um mapa de URLs

Pode adicionar testes de configuração a um mapa de URLs para garantir que o mapa de URLs encaminha pedidos para os serviços de back-end ou os contentores de back-end conforme previsto.

Esta secção descreve como adicionar testes a um mapa de URLs que já foi implementado. Se quiser testar novas alterações a um mapa de URLs sem implementar realmente o mapa, consulte o artigo Valide a configuração do mapa de URLs.

Quando edita o mapa de URLs, os testes são executados e é apresentada uma mensagem de erro se um teste falhar:

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

A adição de testes a mapas de URLs é opcional.

Consola

Para executar testes a partir da Google Cloud consola:

  1. Aceda à página Equilíbrio de carga.

    Aceda a Balanceamento de carga

  2. Clique no Nome de um balanceador de carga.
  3. Na página Detalhes do equilibrador de carga, clique em Editar para o equilibrador de carga selecionado.
  4. Clique em Regras de encaminhamento. Para um balanceador de carga de aplicações clássico, trata-se de regras de anfitriões e caminhos.
  5. Clique em Mostrar testes de configuração.
  6. Clique em Adicionar teste de configuração. Adicione os seguintes URLs de teste e back-ends:
    • Test host and path 1 example.com e Backend www-service.
    • Testar anfitrião e caminho 2 example.net e Back-end www-service.
    • Test host and path 3 example.net/web e Backend www-service.
    • Test host and path 4 example.com/videos e Backend video-service.
    • Test host and path 5 example.com/videos/browse e Backend video-service.
    • Test host and path 6 example.net/static e Backend static-service.
    • Test host and path 7 example.net/static/images e Backend static-service.
  7. Procure a marca de verificação azul à esquerda de Regras de encaminhamento e clique no botão Atualizar. Para um balanceador de carga de aplicações clássico, procure a marca de verificação azul junto a Regras de anfitrião e caminho.

gcloud

Para adicionar testes ao seu mapa de URLs através da Google Cloud CLI, use o comando gcloud compute url-maps edit:

gcloud compute url-maps edit URL_MAP_NAME

Esta ação inicia um editor de texto. Para balanceadores de carga de aplicações externos, os testes têm de usar o seguinte formato:

  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

Tenha em atenção que, se não especificar um anfitrião numa regra de anfitrião, os URLs de todos os anfitriões (tanto example.com como example.net) podem corresponder. Se tiver regras de anfitrião, tem de criar regras que correspondam a example.com e example.net.

Liste mapas de URLs

Consola

Não pode listar todos os seus mapas de URLs na Google Cloud consola.

gcloud

Para apresentar uma lista de mapeamentos de URLs através da CLI Google Cloud, use o comando url-maps list.

gcloud compute url-maps list

Obtenha informações sobre um mapa de URLs

Consola

Para obter informações sobre um mapa de URLs, siga estes passos:

  1. Aceda à página Equilíbrio de carga.

    Aceda a Balanceamento de carga

  2. Clique no Nome de um balanceador de carga.
  3. Na página Detalhes do equilibrador de carga, clique em Editar para o equilibrador de carga selecionado.
  4. Veja as Regras de anfitriões e caminhos.

gcloud

Para obter informações sobre um único mapa de URLs através da Google Cloud CLI, use o comando url-maps describe.

gcloud compute url-maps describe URL_MAP_NAME

Elimine um mapa de URLs

Só pode eliminar um mapa de URLs depois de eliminar todos os proxies de destino que fazem referência ao mesmo. Para mais informações, consulte o artigo Eliminar um proxy de destino.

Consola

Para eliminar um mapa de URLs, siga estes passos:

  1. Aceda à página Equilíbrio de carga.

    Aceda a Balanceamento de carga

  2. Clique no Nome de um balanceador de carga.
  3. Na página Detalhes do equilibrador de carga, clique em Editar para o equilibrador de carga selecionado.
  4. Na página Detalhes do equilibrador de carga, veja as Regras de anfitrião e caminho.
  5. Clique no "X" à direita de um mapa de URLs para o eliminar. O mapa de URLs desaparece.
  6. Procure a marca de verificação azul à esquerda de Regras de anfitrião e caminho e clique no botão Atualizar.

gcloud

Para eliminar um mapa de URLs através da Google Cloud CLI, use o comando url-maps delete. Antes de poder eliminar um mapa de URLs, tem de eliminar todos os proxies HTTP de destino que referenciam o mapa de URLs.

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

Elimine um Path Matcher

Consola

Para eliminar um correspondente de caminho, siga estes passos:

  1. Aceda à página Equilíbrio de carga.

    Aceda a Balanceamento de carga

  2. Clique no Nome de um balanceador de carga.
  3. Na página Detalhes do equilibrador de carga, clique em Editar para o equilibrador de carga selecionado.
  4. Selecione Regras de anfitriões e caminhos.
  5. No campo Caminhos de um mapa de URLs existente, clique no "x" no nome do correspondente de caminhos.
  6. Procure a marca de verificação azul à esquerda de Regras de anfitrião e caminho e clique no botão Atualizar.

gcloud

Para eliminar um correspondente de caminho, use o comando gcloud compute url-maps remove-path-matcher:

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

Elimine uma regra de anfitrião

Consola

Para eliminar uma regra de anfitrião, siga estes passos:

  1. Se ainda não estiver na página Regras de anfitrião e caminho, aceda à página Equilíbrio de carga.

    Aceda a Balanceamento de carga

  2. Clique no Nome de um balanceador de carga.
  3. Na página Detalhes do equilibrador de carga, clique em Editar para o equilibrador de carga selecionado.
  4. Selecione Regras de anfitriões e caminhos.
  5. No campo Anfitriões de um mapeamento de URL existente, clique no "x" no nome do anfitrião.
  6. Procure a marca de verificação azul à esquerda de Regras de anfitrião e caminho e clique no botão Atualizar.

gcloud

Para eliminar uma regra de anfitrião do mapa de URLs, use o comando gcloud compute url-maps remove-host-rule:

gcloud compute url-maps remove-host-rule URL_MAP_NAME --host=HOST

Por exemplo, para remover uma regra de anfitrião que contenha o anfitrião altostrat.com de um mapa de URLs denominado my-map, executaria o seguinte comando:

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

Guias de gestão de tráfego

Nem todas as funcionalidades do mapa de URLs estão disponíveis para todos os produtos. Os mapas de URLs são usados com balanceadores de carga para suportar várias funcionalidades avançadas de gestão de tráfego, nem todas as quais são suportadas no balanceador de carga da aplicação clássico.

Use a tabela seguinte para saber mais sobre as funcionalidades do mapa de URLs para gestão de obras.

Produto Funcionalidades do mapa de URLs e guias de gestão de tráfego
Balanceador de carga de aplicações externo global Funcionalidades do balanceador de carga: encaminhamento e gestão de tráfego

Vista geral da gestão de tráfego

Configurar a gestão de tráfego

Configurar um redirecionamento de URL

Configurar um redirecionamento de HTTP para HTTPS

Nome do anfitrião e caminho

Pedidos de planeamento de trajeto

Cookies

Balanceador de carga de aplicações clássico Funcionalidades do balanceador de carga: encaminhamento e gestão de tráfego

Vista geral da gestão de tráfego

Configurar um redirecionamento de URL

Configurar um redirecionamento de HTTP para HTTPS

Nome do anfitrião e caminho

Encaminhamento baseado em cabeçalhos e parâmetros de consulta

Balanceador de carga de aplicações externo regional Funcionalidades do balanceador de carga: encaminhamento e gestão de tráfego

Vista geral da gestão de tráfego

Configurar a gestão de tráfego

Configurar um redirecionamento de URL

Configurar um redirecionamento de HTTP para HTTPS

Nome do anfitrião e caminho

Pedidos de planeamento de trajeto

Cookies

Balanceador de carga de aplicações interno Funcionalidades do balanceador de carga: encaminhamento e gestão de tráfego

Vista geral da gestão de tráfego

Configurar a gestão de tráfego

Configurar redirecionamentos de URL

Configurar redirecionamentos de HTTP para HTTPS

Cookies

Nome do anfitrião e caminho

Cloud Service Mesh Funcionalidades do Cloud Service Mesh: encaminhamento e gestão de tráfego

Vista geral da gestão avançada de tráfego

Configurar a gestão avançada de tráfego

Referência da API e da CLI gcloud

Além da Google Cloud consola, pode usar a API e a CLI gcloud para criar mapas de URLs.

API

Para ver descrições das propriedades e dos métodos disponíveis quando trabalha com mapas de URLs através da API REST, consulte o seguinte:

Produto Documentação da API
Balanceador de carga de aplicações externo urlMaps
Balanceador de carga de aplicações interno regionUrlMaps
Cloud Service Mesh urlMaps

CLI gcloud

Para a CLI do Google Cloud na CLI do Google Cloud, consulte o seguinte:

  • Global: --global
  • Regional: --region=[REGION]

Para uma gestão avançada do tráfego, use ficheiros YAML e importe-os com o comando gcloud compute url-maps import.

O que se segue?