Configurar a regravação de URL para um balanceador de carga de aplicativo clássico

Neste exemplo, demonstramos como reescrever o caminho especificado em uma solicitação de um balanceador de carga de aplicativo clássico.

Para configurar o gerenciamento de tráfego para balanceadores de carga de aplicativos externos e globais, consulte as seguintes páginas:

Antes de começar

  • Leia sobre substituições de URL.

  • Leia especificamente sobre mapas de URL em geral e correspondência de caminho.

  • O exemplo de regravação de URL pressupõe que você já tenha criado o balanceador de carga de aplicativo externo seguindo as etapas descritas em Como configurar um balanceador de carga com buckets do Cloud Storage.

    Esse exemplo mostra a criação de dois recursos:

    • http://IP_ADDRESS/never-fetch/three-cats.jpg
    • http://IP_ADDRESS/love-to-fetch/two-dogs.jpg

    Em que /never-fetch/three-cats.jpg está armazenado em /cats, que é o serviço padrão, e /love-to-fetch/two-dogs.jpg está armazenado em /dogs.

    Neste ponto, o mapa de URL fica assim:

    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
    

Como modificar o mapa de URL

Neste exemplo, você regrava o URL /love-to-fetch/ para que os usuários possam acessar a imagem two-dogs.jpg com este URL simplificado:

  • http://IP_ADDRESS/two-dogs.jpg

Para fazer isso, modifique o mapa de URL do balanceador de carga da seguinte maneira:

Console

Editar o balanceador de carga

  1. Acesse a página Balanceamento de carga no Console do Google Cloud.
    Acessar a página "Balanceamento de carga"
  2. Clique em http-lb.
  3. Clique em Editar .
  4. Mantenha a janela aberta para continuar.

Alterar as regras de host e caminho

  1. Na coluna à esquerda da tela, clique em Regras de host e de caminho.
  2. Selecione Regra avançada de host e caminho (redirecionar URL, reescrever URL).
  3. Clique na linha que contém a regra de caminho não padrão. Neste caso, a linha que tem um asterisco (*) para todos os hosts.
  4. Clique no ícone de lápis na linha /love-to-fetch/* Route traffic to a single backend: dogs.
  5. Em Caminhos, exclua /love-to-fetch/* e adicione /*.
  6. Em Ação, selecione Encaminhar o tráfego para um back-end único.
  7. Clique em Ação de complemento (regravação de URL).
  8. Deixe a opção Reescrever o host em branco.
  9. Em regravar prefixo do caminho, digite /love-to-fetch/.
  10. Em Back-end, selecione dogs.
  11. Clique em Salvar.
  12. Clique em Concluído. A nova regra de host e caminho é a seguinte:

    Caminhos Ação Back-end
    Todos sem correspondência (padrão) Encaminhar o tráfego para um back-end único gatos
    /* Encaminhar o tráfego para um back-end único cães

  13. Se tudo parecer certo, clique em Atualizar para atualizar o balanceador de carga HTTP.

gcloud

  1. Crie um arquivo YAML /tmp/http-lb.yaml, certificando-se de substituir PROJECT_ID pelo ID do projeto.

    Quando um usuário solicita o caminho /*, ele é reescrito no back-end para o local real do conteúdo, que é /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. Validar o mapa de URL.

    gcloud compute url-maps validate --source /tmp/http-lb.yaml
    

    Se os testes forem aprovados e o comando resultar em uma mensagem de êxito, salve as alterações no mapa de URL.

  3. Atualize o mapa de URL.

    gcloud compute url-maps import http-lb \
       --source /tmp/http-lb.yaml \
       --global
    

Teste

Anote o endereço IPv4 que foi reservado:

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Depois de esperar vários minutos até que as alterações se propaguem, teste essa configuração.

Na linha de comando, execute o seguinte comando curl:

curl http://IP_ADDRESS/two-dogs.jpg

Em um navegador, abra http://IP_ADDRESS/two-dogs.jpg.

A seguir