Esta página inclui dois exemplos para o balanceador de carga de aplicações clássico:
- Configure o encaminhamento baseado em parâmetros de consulta
- Configure o encaminhamento baseado em cabeçalhos HTTP
Para configurar a gestão de tráfego para o balanceador de carga de aplicações externo global e o balanceador de carga de aplicações externo regional, consulte as seguintes páginas:
- Configure a gestão de tráfego para o equilibrador de carga de aplicações externo global
- Configure a gestão de tráfego para o balanceador de carga de aplicações externo regional
Antes de começar
- Leia a vista geral da gestão de tráfego para balanceadores de carga de aplicações externos.
- Familiarize-se com a API URL map.
Configure o encaminhamento baseado em parâmetros de consulta
Este exemplo demonstra a utilização de parâmetros de consulta para fazer testes A/B através da correspondência na string de consulta.
Adicione dois grupos de instâncias de back-end
Para que o encaminhamento seja útil, tem de ter vários back-ends.
Para configurar dois back-ends, as VMs têm de estar em dois grupos de instâncias. Este guia descreve como criar grupos de instâncias geridos com VMs Linux que têm o Apache em execução e, em seguida, configurar o equilíbrio de carga.
Os grupos de instâncias geridos fornecem VMs que executam os servidores de back-end de um balanceador de carga HTTP externo. Para fins de demonstração, os back-ends publicam os respetivos nomes de anfitriões.
Para simplificar, os backends residem na mesma região. Se quiser uma configuração de várias regiões, tem de ter uma configuração de modelo de instância para a segunda região.
Consola
Crie um modelo de instância. Na Google Cloud consola, aceda à página Modelos de instâncias.
- Clique em Criar modelo de instância.
- Em Nome, introduza
lb-backend-template
. - Certifique-se de que o Disco de arranque está definido para uma imagem Debian, como
Debian GNU/Linux 12 (bookworm). Estas instruções usam comandos que só estão disponíveis no Debian, como
apt-get
. - Clique em Opções avançadas.
- Clique em Rede e configure o seguinte campo:
- Para etiquetas de rede, introduza
allow-health-check
.
- Para etiquetas de rede, introduza
Clique em Gestão. Introduza o seguinte script no campo Script de arranque.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Clique em Criar.
Crie um grupo de instâncias gerido. Aceda à página Grupos de instâncias na Google Cloud consola.
- Clique em Criar grupo de instâncias.
- Selecione Novo grupo de instâncias gerido (sem estado). Para mais informações, consulte o artigo Grupos de instâncias geridos sem estado ou com estado.
- Em Nome, introduza
first-example-ig
. - Em Localização, selecione Zona única.
- Em Região, selecione a sua região preferida. Este exemplo usa
us-east1
. - Para Zona, selecione
us-east1-b
. - Em Modelo de instância, selecione o modelo de instância
lb-backend-template
. - Em Número máximo de instâncias, introduza
2
. - Em Modo de ajuste automático de escala, selecione
Off:do not autoscale
. - Clique em Criar.
Crie outro grupo de instâncias geridas como este. Atribua o nome second-example-ig
ao segundo modelo e baseie-o no modelo lb-backend-template
.
gcloud
Crie um modelo de instância.
gcloud compute instance-templates create lb-backend-template \ --region=us-east1 \ --network=default \ --subnet=default \ --tags=allow-health-check \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Crie o primeiro grupo de instâncias geridas com base no modelo.
gcloud compute instance-groups managed create first-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-b
Crie o segundo grupo de instâncias geridas com base no modelo.
gcloud compute instance-groups managed create second-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-c
Configurar uma regra de firewall
Neste exemplo, cria a regra de firewall fw-allow-health-check
.
Esta é uma regra de entrada que permite o tráfego dos sistemas de verificação de estado (130.211.0.0/22
e 35.191.0.0/16
). Este exemplo usa a etiqueta de destino allow-health-check
para identificar as VMs. Google Cloud
Consola
- Na Google Cloud consola, aceda à página Políticas de firewall.
Aceder a Políticas de firewall - Clique em Criar regra de firewall para criar a segunda regra de firewall:
- Introduza um Nome de
fw-allow-health-check
. - Em Rede, selecione
Default
. - Em Segmentações, selecione Etiquetas de segmentação especificadas.
- Preencha o campo Etiquetas alvo com
allow-health-check
. - Defina o Filtro de origem como Intervalos IPv4.
- Defina os Intervalos IPv4 de origem como
130.211.0.0/22
e35.191.0.0/16
. - Em Protocolos e portas, selecione Protocolos e portas especificados.
- Selecione a caixa de verificação TCP e introduza
80
para os números das portas. - Clique em Criar.
gcloud
gcloud compute firewall-rules create fw-allow-health-check \ --network=default \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp
Reservar um endereço IP externo
Agora que as suas instâncias estão em funcionamento, configure um endereço IP externo estático global que os seus clientes usam para aceder ao balanceador de carga.
Consola
- Aceda à página Endereços IP externos na Google Cloud consola.
Aceda à página Endereços IP externos - Clique em Reservar endereço estático para reservar um endereço IPv4.
- Atribua um Nome de
lb-ipv4-1
. - Defina o nível da rede como Padrão.
- Defina a versão do IP como IPv4.
- Defina o Tipo como Global.
- Clique em Reservar.
- Certifique-se de que o Tipo está definido como Global.
- Clique em Reservar.
gcloud
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Tome nota do endereço IPv4 que foi reservado:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Configurar os back-ends do balanceador de carga
Consola
A consola Google Cloud não é atualmente suportada para configurar o encaminhamento baseado em cabeçalhos e parâmetros. Em alternativa, use gcloud
ou a API.
gcloud
- Crie uma verificação de funcionamento.
gcloud compute health-checks create http http-basic-check \ --port 80
- Crie o primeiro serviço de back-end.
-
Para um Application Load Balancer externo global, use o comando da CLI gcloud com
load-balancing-scheme=EXTERNAL_MANAGED
. Esta definição oferece capacidade de gestão avançada do tráfego. - Para um balanceador de carga de aplicações clássico, use
load-balancing-scheme=EXTERNAL
.
gcloud compute backend-services create service-a \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol HTTP \ --health-checks http-basic-check \ --global
-
Para um Application Load Balancer externo global, use o comando da CLI gcloud com
- Crie o segundo serviço de back-end.
gcloud compute backend-services create service-b \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol HTTP \ --health-checks http-basic-check \ --global
- Adicione o primeiro grupo de instâncias como o back-end do primeiro serviço de back-end.
gcloud compute backend-services add-backend service-a \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=first-example-ig \ --instance-group-zone=us-east1-b \ --global
- Adicione o segundo grupo de instâncias como back-end ao segundo serviço de back-end.
gcloud compute backend-services add-backend service-b \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=second-example-ig \ --instance-group-zone=us-east1-c \ --global
Criar o mapa de URLs
Consola
A consola Google Cloud não é atualmente suportada para configurar o encaminhamento baseado em cabeçalhos e parâmetros. Em alternativa, use gcloud
ou a API.
gcloud
Crie um ficheiro YAML
/tmp/web-map-http.yaml
. SubstituaPROJECT_ID
pelo ID do seu projeto.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a hostRules: - hosts: - '*' pathMatcher: path-matcher-1 name: web-map-http pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a name: path-matcher-1 routeRules: - matchRules: - prefixMatch: / queryParameterMatches: - name: ABTest exactMatch: A priority: 0 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - matchRules: - prefixMatch: / queryParameterMatches: - name: ABTest exactMatch: B priority: 1 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/web-map-http tests: - description: Test routing for query ABTest with A host: example.com path: /?ABTest=A service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a expectedOutputUrl: http://example.com/?ABTest=A - description: Test routing for query ABTest with B host: example.com path: /?ABTest=B service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b expectedOutputUrl: http://example.com/?ABTest=B
Valide o mapa de URLs.
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Se os testes forem aprovados e o comando gerar uma mensagem de êxito, guarde as alterações no mapa de URLs.
Atualize o mapa de URLs.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Criar o proxy de destino e a regra de encaminhamento
Consola
A consola Google Cloud não é atualmente suportada para configurar o encaminhamento baseado em cabeçalhos e parâmetros. Em alternativa, use gcloud
ou a API.
gcloud
- Crie um proxy HTTP de destino para encaminhar pedidos para o seu mapa de URLs.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map web-map-http
- Crie uma regra de encaminhamento global para encaminhar pedidos recebidos para o proxy.
-
Para um Application Load Balancer externo global, use o comando da CLI gcloud com
load-balancing-scheme=EXTERNAL_MANAGED
. Esta definição oferece capacidade de gestão avançada do tráfego. - Para um balanceador de carga de aplicações clássico, use
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
-
Para um Application Load Balancer externo global, use o comando da CLI gcloud com
Testes
Tome nota do endereço IPv4 que foi reservado:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Teste esta configuração executando o seguinte comando:
curl http://IP_ADDRESS?ABTest=A
curl http://IP_ADDRESS?ABTest=B
Num navegador, abra
http://IP_ADDRESS?ABTest=A
e
http://IP_ADDRESS?ABTest=B
.
Configure o encaminhamento baseado em cabeçalhos HTTP
Este exemplo demonstra como adicionar e remover cabeçalhos HTTP para fazer um encaminhamento inteligente.
Antes de começar
Pode usar um Application Load Balancer externo existente ou criar um novo.
Pode usar esta funcionalidade com qualquer um dos tipos de back-end suportados. Este exemplo pressupõe que está a usar VMs num grupo de instâncias.
Para configurar um equilibrador de carga simples, consulte o exemplo baseado em parâmetros de consulta acima.
Atualizar o mapa de URLs
Consola
A consola Google Cloud não é atualmente suportada para configurar o encaminhamento baseado em cabeçalhos e parâmetros. Em alternativa, use gcloud
ou a API.
gcloud
Este exemplo demonstra a utilização de cabeçalhos de pedidos HTTP para fazer testes A/B através da correspondência com valores nos cabeçalhos HTTP do pedido.
Crie um ficheiro YAML
/tmp/web-map-http.yaml
. SubstituaPROJECT_ID
pelo ID do seu projeto.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a kind: compute#urlMap name: web-map-http hostRules: - hosts: - '*' pathMatcher: path-matcher-1 pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a name: path-matcher-1 routeRules: - matchRules: - prefixMatch: / headerMatches: - headerName: ABTest exactMatch: A priority: 0 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - matchRules: - prefixMatch: / headerMatches: - headerName: ABTest exactMatch: B priority: 1 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b tests: - description: Test routing for query ABTest with A host: example.com path: / headers: - name: ABTest value: A service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - description: Test routing for query ABTest with B host: example.com path: / headers: - name: ABTest value: B service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b
Valide o mapa de URLs.
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Se os testes forem aprovados e o comando gerar uma mensagem de êxito, guarde as alterações no mapa de URLs.
Atualize o mapa de URLs.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Testes
Usando o endereço IPv4 do equilibrador de carga associado, teste esta configuração executando o seguinte comando:
curl http://IP_ADDRESS -H "ABTest: A"
curl http://IP_ADDRESS -H "ABTest: B"