Conceitos de mapa de URL

Os balanceadores de carga baseados em HTTP(S) do Google Cloud Platform usam um mapa de URL para direcionar solicitações recebidas para serviços de back-end e (somente para balanceadores de carga HTTP(S) externos) intervalos de back-end.

Todo balanceador de carga baseado em HTTP(S) criado por você precisa ter um mapa de URL. Ao criar um balanceador de carga baseado em HTTP(S) usando o Console do GCP, o nome do balanceador de carga e do mapa de URL dele é o mesmo. Cada mapa de URL direciona o tráfego para um serviço ou intervalo de back-end padrão. Além desse padrão, é possível direcionar o tráfego para diferentes serviços e intervalos de back-end com base no nome do host selecionado e na parte do caminho de um URL.

Por exemplo, é possível direcionar as solicitações de https://example.com/video para um serviço de back-end, as solicitações de https://example.com/audio para outro serviço de back-end e as solicitações de https://example.com/images para um intervalo de back-end do Cloud Storage, tudo em um único mapa de URL e balanceador de carga HTTP(S).

Antes de ler isto, familiarize-se com os conceitos gerais sobre balanceamento de carga HTTP(S):

Neste documento, descrevemos como os mapas de URL funcionam com balanceadores de carga HTTP(S). O Traffic Director, que é o plano de controle de tráfego totalmente gerenciado do GCP para malhas de serviço, usa mapas de URL e aceita mais parâmetros de configuração. Consulte a Documentação do Traffic Director para mais informações sobre esses parâmetros.

Sobre mapas de URL

Quando uma solicitação chega ao balanceador de carga, ele a direciona para um serviço de back-end específico ou para um intervalo de back-end com base nas configurações de um mapa de URL.

Por exemplo, digamos que você tenha a seguinte configuração:

  • Um endereço IP. Todas as solicitações à sua organização vão para o mesmo endereço IP e o mesmo balanceador de carga. O tráfego é direcionado para diferentes serviços de back-end com base no URL da solicitação.
  • Dois domínios
    • example.net, que hospeda os vídeos de treinamento
    • example.org, que hospeda o site da sua organização
  • Quatro conjuntos de servidores
    • Um hospeda o site da sua organização (serviço de back-end: org-site)
    • Um hospeda o site de vídeo de treinamento geral (serviço de back-end: video-site)
    • Um hospeda vídeos de treinamento em alta definição (HD, na sigla em inglês) (serviço de back-end: video-hd)
    • Um hospeda vídeos de treinamento de definição padrão (SD, na sigla em inglês) (serviço de back-end: video-sd)

Você quer que o seguinte aconteça:

  • Solicitações para example.org (ou qualquer domínio diferente de ) para acessar o serviço de back-end org-site
  • Solicitações para example.net que não correspondem a caminhos mais específicos para acessar o serviço de back-end video-site
  • Solicitações para example.net/video/hd/* para acessar o serviço de back-end video-hd
  • Solicitações para example.net/video/sd/* para acessar o serviço de back-end video-sd
Exemplo de configuração de serviço (clique para ampliar)
Exemplo de configuração de serviço (clique para ampliar)

É possível criar um mapa de URL para essa configuração. Na próxima seção, descrevemos alguns dos componentes do mapa de URL com que você trabalhará.

Componentes do mapa de URL

Um mapa de URL é um recurso de configuração do GCP que direciona solicitações de URLs para serviços ou intervalos de back-end. Ele faz isso usando o nome do host e as partes do caminho de cada URL processado:

  • Nome do host: parte do nome de domínio de um URL. Por exemplo, a parte do nome do host do URL http://example.net/video/hd é example.net.
  • Caminho: parte de um URL após o nome do host. Por exemplo, a parte do caminho do URL http://example.net/video/hd é /video/hd.

Você controla quais serviços ou intervalos de back-end recebem solicitações de entrada usando os seguintes parâmetros de configuração do mapa de URL:

Fluxo básico do mapa de URL (clique para ampliar)
Fluxo básico do mapa de URL (clique para ampliar)
  • Serviço padrão ou intervalo de back-end padrão: ao criar um mapa de URL, você precisa especificar um serviço ou intervalo de back-end padrão, mas não ambos. Esse padrão representa o serviço ou intervalo de back-end para onde o GCP direcionará as solicitações de URLs com qualquer nome de host, salvo se houver uma regra de host aplicável.

  • Regra de host: direciona as solicitações enviadas para um ou mais nomes de host associados a uma única correspondência de caminho. A parte do nome do host de um URL corresponde exatamente ao conjunto de nomes de host configurados da regra de host. Para direcionar solicitações de http://example.net/video/hd para uma correspondência de caminho, você precisa de uma única regra de host que inclua, no mínimo, o nome de host example.net. Essa mesma regra de host também pode processar solicitações de outros nomes de host, mas isso as direciona para a mesma correspondência de caminho. Se você precisar direcionar solicitações para diferentes correspondências de caminho, use regras de host distintas. Duas regras de host em um mapa de URL não podem incluir o mesmo nome de host. É possível corresponder todos os nomes de host especificando o caractere curinga * na regra de host. Por exemplo, para os URLs http://example.org, http://example.net/video/hd e http://example.com/audio, é possível corresponder os três nomes de host example.org, example.net e example.com especificando * na regra de host. Também é possível corresponder um nome de host parcial com o caractere curinga *. Por exemplo, uma regra de host *.example.net corresponde aos dois nomes de host, foo.example.net e bar.example.net.

  • Correspondência de caminho: parâmetro de configuração referenciado por uma regra de host. Define o relacionamento entre a parte do caminho de um URL e o serviço ou intervalo de back-end que deve exibir a solicitação. Uma correspondência de caminho consiste em dois elementos:

    • Serviço padrão da correspondência de caminho ou intervalo de back-end padrão da correspondência de caminho: para cada correspondência de caminho, é necessário especificar pelo menos um serviço ou intervalo de back-end padrão, mas não ambos. Esse padrão representa o serviço ou intervalo de back-end para onde o GCP direcionará solicitações de URLs com nomes de host que correspondem a uma regra de host associada à correspondência de caminho e com caminhos de URL que não correspondem a qualquer regra de caminho na correspondência de caminho.

    • Regras de caminho: para cada correspondência de caminho, é possível especificar uma ou mais regras de caminho. Elas são pares de chave-valor que mapeiam um caminho de URL para um único serviço ou intervalo de back-end. Na seção seguinte, Ordem de operações, veja mais informações sobre como as regras de caminho funcionam.

Ordem de operações

Para um determinado nome de host e caminho em um URL solicitado, o GCP usa o procedimento a seguir para direcionar a solicitação ao serviço ou intervalo de back-end correto, conforme configurado no mapa de URL:

  • Se o mapa de URL não contiver uma regra de host para o nome de host do URL, o GCP direcionará as solicitações para o serviço ou intervalo de back-end padrão do mapa de URL, dependendo de qual você definiu.

  • Se o mapa de URL contiver uma regra de host que inclua o nome de host do URL, a correspondência de caminho referenciada por essa regra de host será consultada:

    • Se a correspondência de caminho contiver uma regra de caminho que corresponda exatamente ao caminho do URL, o GCP direcionará as solicitações para o serviço ou intervalo de back-end dessa regra de caminho.

    • Se a correspondência de caminho não contiver uma regra de caminho que corresponda exatamente ao caminho do URL, mas que contenha uma regra de caminho terminada em /* com um prefixo que corresponda à seção mais longa do caminho do URL, o GCP direcionará as solicitações ao serviço ou intervalo de back-end dessa regra de caminho. Por exemplo, para o mapa de URL que contém duas regras de correspondência de caminho, /video/hd/movie1 e /video/hd/*, se o URL contiver o caminho exato /video/hd/movie1, ele será correspondido a essa regra de caminho.

    • Se nenhuma das condições anteriores for verdadeira, o GCP direcionará as solicitações ao serviço ou intervalo de back-end padrão da correspondência de caminho, dependendo de qual deles você definiu.

Restrições da correspondência de caminho

As correspondências e regras de caminho têm as seguintes restrições:

  • Uma regra de caminho pode incluir apenas um caractere curinga (*) após um caractere de barra (/). Por exemplo, /videos/* e /videos/hd/* são válidos para regras de caminho, mas /videos* e /videos/hd* não.

  • As regras de caminho não usam correspondência de expressões regulares ou substrings. Por exemplo, regras de caminho para /videos/hd ou /videos/hd/* não se aplicam a um URL com o caminho /video/hd-abcd. No entanto, uma regra de caminho para /video/* se aplica a esse caminho.

  • As correspondências de caminho (e mapas de URL, em geral) não oferecem recursos que funcionam como as diretivas LocationMatch do Apache. Se você tem um aplicativo que gera caminhos de URL dinâmicos com um prefixo comum, como /videos/hd-abcd e /videos/hd-pqrs, e precisa enviar solicitações feitas a esses caminhos para diferentes serviços de back-end, talvez não seja possível fazer isso sem um mapa de URL. Para casos simples que contêm somente alguns URLs dinâmicos possíveis, talvez seja possível criar uma correspondência de caminho com o conjunto limitado de regras de caminho. Para casos mais complexos, será necessário fazer a correspondência com expressões regulares baseadas em caminhos em suas VMs de back-end.

Um nome de host só pode referenciar uma única regra de host, e uma regra de host só pode referenciar uma única correspondência de caminho. No entanto, uma única regra de host é capaz de processar vários nomes de host e uma única correspondência de caminho pode ser referenciada por várias regras de host. Consequentemente, cada URL único é direcionado a apenas um serviço ou intervalo de back-end:

  • O GCP usa a parte do nome de host de um URL para selecionar uma única regra de host e a correspondência de caminho referenciada.
  • Na correspondência de caminho, não é possível criar mais de uma regra para o mesmo caminho. Por exemplo, não é possível direcionar solicitações de /videos/hd para mais de um serviço ou intervalo de back-end. Observe que os serviços de back-end podem ter grupos de instâncias de back-end ou grupos de endpoints de rede de back-end em diferentes zonas e regiões, e é possível criar intervalos de back-end que usam classes de armazenamento multirregional.

Mapas e protocolos de URL

É possível usar os mesmos mapa de URL, regras de host e correspondência de caminho para processar solicitações HTTP e HTTPs enviadas por clientes, contanto que o mapa de URL seja referenciado por um proxy HTTP de destino e um proxy HTTPS de destino.

Os mapas de URL não fornecem redirecionamento de protocolo para conexões entre clientes e o balanceador de carga. Por exemplo, não é possível usar um mapa de URL para instruir os sistemas clientes a alternar de HTTP para HTTPS. É necessário implementar todo o redirecionamento de protocolos de clientes nas VMs de back-end.

Mapa de URL mais simples

O mapa de URL mais simples tem apenas um serviço ou intervalo de back-end padrão. Ele não contém regras de host nem correspondências de caminho. Todos os URLs solicitados são processados pelo serviço ou intervalo de back-end padrão, o que você definiu.

Se você definir um serviço de back-end padrão, o GCP direcionará as solicitações para os grupos de instâncias de back-end ou grupos de endpoints de rede de back-end dele, de acordo com a configuração do serviço de back-end.

Mapa de URL sem regras, exceto a padrão (clique para ampliar)
Mapa de URL sem regras, exceto a padrão (clique para ampliar)

Exemplo de mapa de URL

No exemplo a seguir, veja a ordem das operações de um mapa de URL. Para simplificar o conceito, ele usa apenas serviços de back-end. No entanto, é possível substituir por intervalos de back-end.

Nas etapas a seguir, você configura o mapa de URL para um balanceador de carga HTTP(S) do GCP. Consulte Como criar balanceamento de carga baseado em conteúdo e entre regiões para ver um exemplo de como criar outros componentes do balanceador de carga HTTP(S). Consulte Como configurar o balanceamento de carga de HTTP(S) interno para ver um exemplo de como criar um mapa de URL do balanceador de carga HTTP(S) interno e outros componentes.

Cada serviço de back-end discutido no exemplo a seguir tem um esquema de externo e usa o protocolo HTTP, HTTPS ou HTTP/2.

  1. Crie um mapa de URL para o balanceador de carga e especifique um serviço de back-end padrão. Nesse exemplo, criamos um mapa de URL denominado video-org-url-map que referencia um serviço de back-end denominado org-site.

    gcloud compute url-maps create video-org-url-map \
        --default-service=org-site
    
  2. Crie uma correspondência de caminho denominada video-matcher com as seguintes características:

    • O serviço de back-end padrão é video-site, um serviço de back-end atual.
    • Adicione regras de caminho que direcionem solicitações para o caminho de URL /video/hd exato ou o prefixo /video/hd/* do caminho de URL para um serviço de back-end atual denominado video-hd.
    • Adicione regras de caminho que direcionem solicitações para o caminho de URL /video/sd exato ou o prefixo /video/sd/* do caminho de URL para um serviço de back-end atual denominado video-sd.
    gcloud compute url-maps add-path-matcher video-org-url-map \
        --path-matcher-name=video-matcher \
        --default-service=video-site \
        --path-rules=/video/hd=video-hd,/video/hd/*=video-hd,/video/sd=video-sd,/video/sd/*=video-sd
    
  3. Crie uma regra de host para o nome de host example.net que faça referência à correspondência de caminho video-matcher.

    gcloud compute url-maps add-host-rule video-org-url-map \
        --hosts=example.net \
        --path-matcher-name=video-matcher
    

O mapa de URL video-org-url-map direciona os URLs solicitados para os back-ends da seguinte maneira:

Mapa de URL com uma regra de caminho, correspondências de caminho e uma regra de host (clique para ampliar)
Mapa de URL com uma regra de caminho, correspondências de caminho e uma regra de host (clique para ampliar)

O GCP processa solicitações de URLs de acordo com a tabela abaixo:

Nome do host Caminhos de URL Serviço de back-end selecionado Motivo da seleção
O nome de host
example.org e todos os outros nomes de host diferentes deexample.net
todos os caminhos org-site O nome de host não está em nenhuma regra de host do mapa de URL, portanto, a solicitação é direcionada para o serviço de back-end padrão do mapa de URL.
Nome de host:
example.net
/video
/video/examples
video-site A solicitação vai para o serviço de back-end padrão porque não há nenhuma regra de caminho para /video/ ou /video/*. A regra de host para example.net referencia uma correspondência de caminho, mas ela não tem nenhuma regra de caminho que se aplica a esses caminhos.
Nome de host:
example.net
/video/hd
/video/hd/movie1
/video/hd/movies/movie2
Outros URLs que começam com /video/hd/*
video-hd Uma regra de host para example.net referencia uma correspondência de caminho cujas regras de caminho direcionam solicitações para caminhos de URL que correspondem exatamente a /video/hd ou que começam com /video/hd/* para o serviço de back-end video-hd.
Nome de host:
example.net
/video/sd
/video/sd/show1
/video/sd/shows/show2
Outros URLs que começam com /video/sd/*
video-sd Uma regra de host para example.net referencia uma correspondência de caminho cujas regras direcionam solicitações para caminhos de URL que correspondem exatamente a /video/sd ou que começam com /video/sd/* para o serviço de back-end video-sd.

** Outras observações

Alguns recursos do mapa de URL descritos na Documentação do Traffic Director e na Documentação do balanceamento de carga HTTP(S) interno não estão disponíveis para os outros tipos de balanceadores de carga.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…