Para ver conceitos gerais, consulte a vista geral do balanceador de carga de aplicações externo.
Se for um utilizador existente do Application Load Balancer clássico, certifique-se de que revê a vista geral da migração quando planear uma nova implementação com o Application Load Balancer externo global.
Topologias de balanceadores de carga
Para um balanceador de carga HTTPS, cria a configuração apresentada no diagrama seguinte.
Para um balanceador de carga de HTTP, cria a configuração apresentada no diagrama seguinte.
A sequência de eventos nos diagramas é a seguinte:
- Um cliente envia um pedido de conteúdo para o endereço IPv4 externo definido na regra de encaminhamento.
Para um balanceador de carga HTTPS, a regra de encaminhamento direciona o pedido para o proxy HTTPS de destino.
Para um balanceador de carga HTTP, a regra de encaminhamento direciona o pedido para o proxy HTTP de destino.
O proxy de destino usa a regra no mapa de URLs para determinar que o serviço de back-end único recebe todos os pedidos.
O balanceador de carga determina que o serviço de back-end tem apenas um grupo de instâncias e direciona o pedido para uma instância de máquina virtual (VM) nesse grupo.
A MV publica o conteúdo pedido pelo utilizador.
Antes de começar
Conclua os passos seguintes antes de criar o equilibrador de carga.
Configure um recurso de certificado SSL
Para um balanceador de carga HTTPS, crie um recurso de certificado SSL, conforme descrito no seguinte artigo:
Recomendamos a utilização de um certificado gerido pela Google.
Este exemplo pressupõe que já tem um recurso de certificado SSL denominado
www-ssl-cert
.
Configure as autorizações
Para concluir os passos neste guia, tem de ter autorização para criar instâncias do Compute Engine, regras de firewall e endereços IP reservados num projeto. Tem de ter a função de proprietário ou editor do projeto, ou ter as seguintes funções do IAM do Compute Engine.
Tarefa | Função necessária |
---|---|
Crie instâncias | Administrador da instância |
Adicione e remova regras de firewall | Administrador de segurança |
Crie componentes do balanceador de carga | Administrador da rede |
Crie um projeto (opcional) | Project Creator |
Para mais informações, consulte os seguintes guias:
Configure a rede e as sub-redes
Para criar a rede e a sub-rede de exemplo, siga estes passos.
Consola
Na Google Cloud consola, aceda à página Redes VPC.
Clique em Criar rede de VPC.
Introduza um Nome para a rede.
Para o Modo de criação de sub-rede, escolha Personalizado.
Na secção Nova sub-rede, configure os seguintes campos:
- Indique um Nome para a sub-rede.
- Selecione uma região.
- Para o Tipo de pilha de IP, selecione IPv4 (pilha única).
- Introduza um intervalo de endereços IP. Este é o intervalo IPv4 principal para a sub-rede.
Clique em Concluído.
Para adicionar uma sub-rede numa região diferente, clique em Adicionar sub-rede e repita os passos anteriores.
Clique em Criar.
gcloud
Crie a rede VPC de modo personalizado:
gcloud compute networks create NETWORK \ --subnet-mode=custom
Na rede, crie uma sub-rede para os back-ends:
gcloud compute networks subnets create SUBNET \ --network=NETWORK \ --stack-type=IPV4_ONLY \ --range=10.1.2.0/24 \ --region=REGION
Substitua o seguinte:
NETWORK
: um nome para a rede da VPC.SUBNET
: um nome para a sub-rede.REGION
: o nome da região.
Crie um grupo de instâncias geridas
Para configurar um balanceador de carga com um back-end do Compute Engine, as VMs têm de estar num grupo de instâncias. Este guia descreve como criar um grupo de instâncias gerido com VMs Linux que têm o Apache em execução e, em seguida, configurar o equilíbrio de carga. Um grupo de instâncias geridas cria cada uma das respetivas instâncias geridas com base nos modelos de instâncias que especificar.
O grupo de instâncias gerido fornece VMs que executam os servidores de back-end de um balanceador de carga HTTP(S) externo. Para fins de demonstração, os back-ends servem os seus próprios nomes de anfitriões.
Antes de criar um grupo de instâncias gerido, crie um modelo de instância.
Consola
Para suportar o tráfego IPv4, siga estes passos:
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 o Debian GNU/Linux 10 (buster). Estas instruções usam comandos que só estão disponíveis no Debian, como
apt-get
.Expanda Opções avançadas.
Expanda Rede e configure os seguintes campos:
- Para etiquetas de rede, introduza
allow-health-check
. - Na secção Interfaces de rede, clique em
- Rede:
NETWORK
- Subnet:
SUBNET
- Tráfego IPv4: IPv4 (single-stack)
Editar e faça as
seguintes alterações:
- Rede:
- Clique em Concluído.
- Para etiquetas de rede, introduza
Expanda Gestão. No campo Script de arranque, introduza o seguinte 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
Clique em Criar.
gcloud
Para suportar o tráfego IPv4, execute o seguinte comando:
gcloud compute instance-templates create TEMPLATE_NAME \ --region=REGION \ --network=NETWORK \ --subnet=SUBNET \ --stack-type=IPV4_ONLY \ --tags=allow-health-check \ --image-family=debian-10 \ --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'
Terraform
Para criar o modelo de instância, use o google_compute_instance_template
recurso.
Crie o grupo de instâncias geridas e selecione o modelo de instância.
Consola
Na Google Cloud consola, aceda à página Grupos de instâncias.
Clique em Criar grupo de instâncias.
No lado esquerdo, escolha Novo grupo de instâncias gerido (sem estado).
Em Nome, introduza
lb-backend-example
.Em Localização, selecione Zona única.
Em Região, selecione a sua região preferida.
Para Zona, selecione uma zona.
Em Modelo de instância, selecione o modelo de instância
lb-backend-template
.Para o Modo de dimensionamento automático, selecione Ativado: adicionar e remover instâncias do grupo.
Defina o Número mínimo de instâncias como
2
e o Número máximo de instâncias como2
ou mais.Para criar o novo grupo de instâncias, clique em Criar.
gcloud
Crie o grupo de instâncias gerido com base no modelo.
gcloud compute instance-groups managed create lb-backend-example \ --template=TEMPLATE_NAME --size=2 --zone=ZONE_A
Terraform
Para criar o grupo de instâncias gerido, use o google_compute_instance_group_manager
recurso.
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Adicione uma porta com nome ao grupo de instâncias
Para o seu grupo de instâncias, defina um serviço HTTP e mapeie um nome de porta para a porta relevante. O serviço de balanceamento de carga encaminha o tráfego para a porta especificada. Para mais informações, consulte o artigo Portas com nome.
Consola
Na Google Cloud consola, aceda à página Grupos de instâncias.
Clique em lb-backend-example.
Na página Vista geral do grupo de instâncias, clique em
Editar.Na secção Mapeamento de portas, clique em Adicionar porta.
- Para o nome da porta, introduza
http
. Para o número da porta, introduza80
.
- Para o nome da porta, introduza
Clique em Guardar.
gcloud
Use o comando gcloud compute instance-groups
set-named-ports
.
gcloud compute instance-groups set-named-ports lb-backend-example \ --named-ports http:80 \ --zone ZONE_A
Terraform
O atributo named_port
está incluído no
exemplo de grupo de instâncias gerido.
Configure 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.
Clique em Criar regra de firewall para criar a regra de firewall.
Em Nome, introduza
fw-allow-health-check
.Selecione uma rede.
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, de seguida, escreva
80
para os números das portas.Clique em Criar.
gcloud
gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
Terraform
Para criar a regra de firewall, use o recurso google_compute_firewall
.
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Reserve 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
Na Google Cloud consola, aceda à página Endereços IP externos.
Para reservar um endereço IPv4, clique em Reservar endereço IP estático externo.
Em Nome, introduza
lb-ipv4-1
.Defina o Nível de serviço de rede como Premium.
Defina a versão do IP como IPv4.
Defina o Tipo 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
Terraform
Para reservar o endereço IP, use o recurso google_compute_global_address
.
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Configure o balanceador de carga
Neste exemplo, está a usar HTTPS (frontend) entre o cliente e o balanceador de carga. Para o HTTPS, precisa de um ou mais recursos de certificado SSL para configurar o proxy. Recomendamos a utilização de um certificado gerido pela Google.
Mesmo que esteja a usar HTTPS no frontend, pode usar HTTP no backend. A Google encripta automaticamente o tráfego entre os front-ends da Google (GFEs) e os seus back-ends que residem em Google Cloud redes VPC.
Consola
Selecione o tipo de balanceador de carga
Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique em Criar equilibrador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicações (HTTP/HTTPS) e clique em Seguinte.
- Para Público ou interno, selecione Público (externo) e clique em Seguinte.
- Para a Implementação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Seguinte.
- Para Geração do balanceador de carga, selecione Classic Application Load Balancer e clique em Seguinte.
- Clique em Configurar.
Configuração básica
Para o Nome do balanceador de carga, introduza algo como
web-map-https
ou web-map-http
.
Configuração do frontend
- Clique em Configuração do front-end.
- Defina o Protocolo como HTTPS.
- Selecione
IPv4
para tráfego IPv4. Defina o endereço IP paralb-ipv4-1
, que criou anteriormente. - Defina a Porta como 443.
- Clique em Certificado e selecione o seu certificado SSL principal.
- Opcional: crie uma política SSL:
- Na lista Política de SSL, selecione Criar uma política.
- Defina o nome da política SSL como
my-ssl-policy
. - Para Versão mínima de TLS, selecione TLS 1.0.
- Para Perfil, selecione Moderno. São apresentadas as Funcionalidades ativadas e as Funcionalidades desativadas.
- Clique em Guardar.
-
Opcional: selecione a caixa de verificação Ativar redirecionamento de HTTP para HTTPS
para ativar os redirecionamentos.
Selecione esta caixa de verificação para criar um balanceador de carga HTTP parcial adicional que usa o mesmo endereço IP que o seu balanceador de carga HTTPS e redireciona os pedidos HTTP recebidos para o frontend HTTPS do seu balanceador de carga.
Esta caixa de verificação só pode ser selecionada quando o protocolo HTTPS estiver selecionado e for usado um endereço IP reservado.
- Clique em Concluído.
Configuração do back-end
- Clique em Configuração de back-end.
- Em Serviços de back-end e contentores de back-end, selecione Criar um serviço de back-end.
- Adicione um nome para o seu serviço de back-end, como
web-backend-service
. - Aceda à secção Segurança e, de seguida, selecione Ativar
IAP para proteger o acesso às suas aplicações.
O Cloud CDN e o IAP não são compatíveis. Se tiver o Cloud CDN ativado e selecionar a ativação do IAP, o Cloud CDN é desativado automaticamente.
-
Opcional: configure uma política de segurança do back-end predefinida. A política de segurança predefinida limita o tráfego acima de um limite configurado pelo utilizador. Para mais informações sobre as políticas de segurança predefinidas, consulte a vista geral da limitação de taxa.
- Para desativar a política de segurança predefinida do Cloud Armor, selecione
None
na lista Política de segurança de back-end do Cloud Armor. - Para configurar a política de segurança predefinida do Cloud Armor, selecione Política de segurança predefinida na lista Política de segurança de back-end do Cloud Armor.
- No campo Nome da política, aceite o nome gerado automaticamente ou introduza um nome para a sua política de segurança.
- No campo Contagem de pedidos, aceite a contagem de pedidos predefinida ou introduza um número inteiro entre
1
e10,000
. - No campo Intervalo, selecione um intervalo.
- No campo Aplicar à chave, escolha um dos seguintes valores: Tudo, Endereço IP ou Endereço IP X-Forwarded-For. Para mais informações acerca destas opções, consulte o artigo Identificar clientes para a limitação de taxa.
- Para desativar a política de segurança predefinida do Cloud Armor, selecione
- Manter as outras predefinições.
- Clique em Criar.
Regras de anfitrião e caminho
Para Regras de caminhos e anfitriões, mantenha as predefinições.
Reveja e finalize
- Clique em Rever e finalizar.
- Reveja as definições de configuração do equilibrador de carga.
- Opcional: clique em Código equivalente para ver o pedido da API REST que vai ser usado para criar o balanceador de carga.
- Clique em Criar.
Aguarde a criação do balanceador de carga.
Se criou um balanceador de carga HTTPS e selecionou a caixa de verificação Ativar redirecionamento de HTTP para HTTPS, também vê um balanceador de carga HTTP criado com o sufixo -redirect.
- Clique no nome do balanceador de carga.
- No ecrã Detalhes do balanceador de carga, tome nota do IP:Porta do seu balanceador de carga.
gcloud
- Crie uma verificação de funcionamento.
gcloud compute health-checks create http http-basic-check \ --port 80
- Crie um serviço de back-end.
gcloud compute backend-services create web-backend-service \ --load-balancing-scheme=EXTERNAL \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
- Adicione o seu grupo de instâncias como back-end ao serviço de back-end.
gcloud beta compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=ZONE_A \ --global
- Para HTTP, crie um mapa de URLs para encaminhar os pedidos recebidos para o serviço de back-end predefinido.
gcloud beta compute url-maps create web-map-http \ --default-service web-backend-service
- Para HTTPS, crie um mapa de URLs para encaminhar os pedidos recebidos para o serviço de back-end predefinido.
gcloud beta compute url-maps create web-map-https \ --default-service web-backend-service
Configure um frontend HTTPS
Ignore esta secção para balanceadores de carga de HTTP.
- Para HTTPS, se ainda não o fez, crie o recurso de certificado SSL global, conforme mostrado nas secções seguintes:
- Criar um recurso de certificado SSL gerido pela Google
- Criar um recurso de certificado SSL autogerido
Para HTTPS, crie um proxy HTTPS de destino para encaminhar pedidos para o seu mapa de URLs. O proxy é a parte do balanceador de carga que contém o certificado SSL para um balanceador de carga HTTPS, pelo que também carrega o certificado neste passo.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map=web-map-https \ --ssl-certificates=www-ssl-cert
- Para HTTPS, crie uma regra de encaminhamento global para encaminhar pedidos recebidos para o proxy.
gcloud compute forwarding-rules create https-content-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
- Opcional: para HTTPS, crie uma política SSL global e anexe-a ao proxy HTTPS.
Para criar uma política SSL global: Para anexar a política SSL ao proxy HTTPS de destino global:gcloud compute ssl-policies create my-ssl-policy \ --profile MODERN \ --min-tls-version 1.0
gcloud compute target-https-proxies update https-lb-proxy \ --ssl-policy my-ssl-policy
Configure um front-end HTTP
Ignore esta secção para balanceadores de carga HTTPS.
- Para HTTP, 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
- Para HTTP, crie uma regra de encaminhamento global para encaminhar pedidos recebidos para o proxy.
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
-
Para criar a verificação de funcionamento, use o recurso
google_compute_health_check
. -
Para criar o serviço de back-end, use o recurso
google_compute_backend_service
.Este exemplo usa
load_balancing_scheme="EXTERNAL_MANAGED"
, que configura um Application Load Balancer externo global com a capacidade de gestão de tráfego avançada. Para criar um Application Load Balancer clássico, certifique-se de que altera o valor deload_balancing_scheme
paraEXTERNAL
antes de executar o script. -
Para criar o mapa de URLs, use o recurso
google_compute_url_map
. -
Para criar o proxy HTTP de destino, use o recurso
google_compute_target_http_proxy
. -
Para criar a regra de encaminhamento, use o recurso
google_compute_global_forwarding_rule
.Este exemplo usa
load_balancing_scheme="EXTERNAL_MANAGED"
, que configura um Application Load Balancer externo global com a capacidade de gestão de tráfego avançada. Para criar um Application Load Balancer clássico, certifique-se de que altera o valor deload_balancing_scheme
paraEXTERNAL
antes de executar o script.
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Associe o seu domínio ao balanceador de carga
Após a criação do balanceador de carga, tome nota do endereço IP associado ao balanceador de carga, por exemplo, 30.90.80.100
. Para direcionar o seu domínio para o
equilibrador de carga, crie um registo A
através do serviço de registo de domínios. Se
adicionou vários domínios ao seu certificado SSL, tem de adicionar um registo A
para cada um, todos a apontar para o endereço IP do equilibrador de carga. Por exemplo, para criar registos A
para www.example.com
e example.com
, use o seguinte:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Se usar o Cloud DNS como fornecedor de DNS, consulte o artigo Adicione, modifique e elimine registos.
Teste o tráfego enviado para as suas instâncias
Agora que o serviço de balanceamento de carga está em execução, pode enviar tráfego para a regra de encaminhamento e ver o tráfego disperso por diferentes instâncias.
Consola
Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique no balanceador de carga que acabou de criar.
Na secção Backend, confirme que as VMs estão em bom estado. A coluna Healthy deve estar preenchida, o que indica que ambas as VMs estão em bom estado (
2/2
). Se vir o contrário, experimente primeiro atualizar a página. A Google Cloud consola pode demorar alguns instantes a indicar que as VMs estão em bom estado. Se os back-ends não parecerem em bom estado após alguns minutos, reveja a configuração da firewall e a etiqueta de rede atribuída às VMs de back-end.- Para HTTPS, se estiver a usar um certificado gerido pela Google, confirme se o estado do recurso de certificado é ATIVO. Para mais informações, consulte o artigo Estado do recurso de certificado SSL gerido pela Google.
- Depois de a Google Cloud consola mostrar que as instâncias de back-end estão
em bom estado, pode testar o balanceador de carga através de um navegador de Internet acedendo a
https://IP_ADDRESS
(ouhttp://IP_ADDRESS
). SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. - Se usou um certificado autoassinado para testar o HTTPS, o navegador apresenta um aviso. Tem de instruir explicitamente o navegador para aceitar um certificado autoassinado.
- O navegador deve renderizar uma página com conteúdo que mostre o nome da instância que publicou a página, juntamente com a respetiva zona (por exemplo,
Page served from: lb-backend-example-xxxx
). Se o navegador não renderizar esta página, reveja as definições de configuração neste guia.
gcloud
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Após alguns minutos, pode testar a configuração executando o seguinte comando
curl
.
curl http://IP_ADDRESS
-OU-
curl https://HOSTNAME
O que se segue?
- Para configurar um redirecionamento de HTTP para HTTPS para o seu balanceador de carga de aplicações clássico, consulte o artigo Configurar um redirecionamento de HTTP para HTTPS para balanceadores de carga de aplicações clássicos
- Para um exemplo complexo com IPv6 e balanceamento de carga em várias regiões, consulte o artigo Configurar um balanceador de carga HTTPS.
- Limpe a configuração do balanceador de carga.
- Para ativar a IAP, consulte o artigo Ativar a IAP no Application Load Balancer externo.
- Para usar um módulo Terraform, consulte os exemplos de módulos Terraform para balanceadores de carga de aplicações externos.