Configure a reescrita de URLs para um balanceador de carga de aplicações clássico

Este exemplo demonstra a reescrita do caminho especificado num pedido para um Application Load Balancer clássico.

Para configurar a gestão de tráfego para balanceadores de carga de aplicações externos globais e balanceadores de carga de aplicações externos regionais, consulte as seguintes páginas:

Antes de começar

  • Leia acerca das reescritas de URLs.

  • Leia acerca dos mapas de URLs em geral e, em particular, dos correspondentes de caminhos.

  • O exemplo de reescrita de URL pressupõe que já criou o seu balanceador de carga da aplicação externo seguindo os passos descritos no artigo Configurar um balanceador de carga com contentores do Cloud Storage.

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

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

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

    Neste ponto, o mapa de URLs tem o seguinte aspeto:

    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 o mapa de URLs

Neste exemplo, reescreve o URL /love-to-fetch/ para que os utilizadores possam aceder à imagem two-dogs.jpg com este URL simplificado:

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

Para tal, modifique o mapa de URLs do balanceador de carga da seguinte forma:

Consola

Edite o seu equilibrador de carga

  1. Aceda à página Balanceamento de carga na Google Cloud consola.
    Aceda à página Balanceamento de carga
  2. Clique em http-lb.
  3. Clique em Editar .
  4. Mantenha a janela aberta para continuar.

Altere as regras de anfitrião e caminho

  1. Na coluna do lado esquerdo do ecrã, clique em Regras de anfitrião e caminho.
  2. Selecione Regra avançada de anfitrião e caminho (redirecionamento de URL, reescrita de URL).
  3. Clique na linha que contém a regra de caminho não predefinida, neste caso, a linha que tem um asterisco (*) para todos os anfitriões.
  4. Clique no ícone de lápis na linha /love-to-fetch/* Route traffic to a single backend: dogs.
  5. Em Caminhos, elimine /love-to-fetch/* e adicione /*.
  6. Em Ação, selecione Encaminhar tráfego para um único back-end.
  7. Clique em Ação do suplemento (reescrita do URL).
  8. Deixe a opção Reescrita do anfitrião em branco.
  9. Em Reescrita do prefixo do caminho, introduza /love-to-fetch/.
  10. Em Backend, selecione dogs.
  11. Clique em Guardar.
  12. Clique em Concluído. A nova regra de anfitrião e caminho tem o seguinte aspeto:

    Caminhos Ação Back-end
    Qualquer não correspondência (predefinição) Encaminhe tráfego para um único back-end gatos
    /* Encaminhe tráfego para um único back-end cães

  13. Se tudo parecer correto, clique em Atualizar para atualizar o seu equilibrador de carga HTTP.

gcloud

  1. Crie um ficheiro YAML /tmp/http-lb.yaml, certificando-se de que substitui PROJECT_ID pelo ID do seu projeto.

    Quando um utilizador pede o caminho /*, o caminho é reescrito no back-end para a localização 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. Valide o mapa de URLs.

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

    Se os testes forem aprovados e o comando gerar uma mensagem de êxito, guarde as alterações no mapa de URLs.

  3. Atualize o mapa de URLs.

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

Testes

Tome nota do endereço IPv4 que foi reservado:

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

Depois de aguardar vários minutos para que as alterações se propaguem, pode testar esta configuração.

Na linha de comandos, execute o seguinte comando curl:

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

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

O que se segue?