Os balanceadores de carga de aplicativo externos com o Identity-Aware Proxy (IAP) são compatíveis com os seguintes tipos de back-end:
- Grupos de instâncias
- Grupos de endpoints de rede (NEGs) zonais
- NEGs sem servidor: um ou mais serviços do Cloud Run
- NEGs da Internet , para endpoints que estão fora do Google Cloud (também conhecidos como origens personalizadas)
- NEGs de conectividade híbrida, para endpoints que se estendem além do Google Cloud, como data centers locais e outras nuvens públicas que podem ser acessadas usando a conectividade híbrida.
- NEG do Private Service Connect,
endpoint que é resolvido em um dos seguintes:
- Um endpoint de API regional gerenciado pelo Google
- Um serviço gerenciado publicado usando o Private Service Connect
Para conceitos gerais, consulte a Visão geral do balanceador de carga de aplicativo externo.
Se você já é usuário do balanceador de carga de aplicativo clássico, consulte a Visão geral da migração ao planejar uma nova implantação com o balanceador de carga de aplicativo externo global.
Topologias do balanceador de carga
Para um balanceador de carga HTTPS, crie a configuração mostrada no diagrama a seguir.
Para um balanceador de carga HTTP, crie a configuração mostrada no diagrama a seguir.
A sequência de eventos nos diagramas é a seguinte:
- Um cliente envia uma solicitação 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 a solicitação para o proxy HTTPS de destino.
Para um balanceador de carga HTTP, a regra de encaminhamento direciona a solicitação para o proxy HTTP de destino.
O proxy de destino usa a regra no mapa de URLs para determinar que o único serviço de back-end receba todas as solicitações.
O balanceador de carga determina que o serviço de back-end tenha apenas um grupo de instâncias e direciona a solicitação para uma instância de máquina virtual (VM) nesse grupo.
A VM exibe o conteúdo solicitado pelo usuário.
Antes de começar
Conclua as etapas a seguir antes de criar o balanceador de carga.
Configurar um recurso de certificado SSL
Para um balanceador de carga HTTPS, crie um recurso de certificado SSL, conforme descrito a seguir:
Recomendamos o uso de um certificado gerenciado pelo Google.
Este exemplo pressupõe que você já tenha um recurso de certificado SSL chamado
www-ssl-cert
.
Configurar permissões
Para concluir as etapas neste guia, é preciso ter permissão para criar instâncias do Compute Engine, regras de firewall e endereços IP reservados em um projeto. Você precisa ter um papel de proprietário ou editor do projeto ou os seguintes papéis do IAM do Compute Engine.
Tarefa | Papel necessário |
---|---|
Criar instâncias | Administrador de instâncias |
Adicionar e remover regras de firewall | Administrador de segurança |
Criar componentes do balanceador de carga | Administrador de rede |
Criar um projeto (opcional) | Criador do projeto |
Para mais informações, consulte estes guias:
Configurar a rede e as sub-redes
Para criar o exemplo de rede e sub-rede, siga estas etapas.
Console
No Console do Google Cloud, acesse a página Redes VPC.
Clique em Criar rede VPC.
Digite um Nome para a rede.
Em Modo de criação da sub-rede, escolha Personalizado.
Na seção Nova sub-rede, configure os seguintes campos:
- Forneça um Nome para a sub-rede.
- Selecione uma Região.
- Em Tipo de pilha de IP, selecione IPv4 (pilha única).
- Digite um Intervalo de endereço IP. Esse é o intervalo IPv4 principal da sub-rede.
Clique em Concluído.
Para adicionar uma sub-rede em uma região diferente, clique em Adicionar sub-rede e repita as etapas 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 back-ends:
gcloud compute networks subnets create SUBNET \ --network=NETWORK \ --stack-type=IPV4_ONLY \ --range=10.1.2.0/24 \ --region=REGION
Substitua:
NETWORK
: um nome para a rede VPC.SUBNET
: um nome para a sub-rede.REGION
: o nome da região.
Criar um grupo gerenciado de instâncias
Para configurar um balanceador de carga com um back-end do Compute Engine, suas VMs precisam estar em um grupo de instâncias. Neste guia, descrevemos como criar um grupo de instâncias gerenciadas usando VMs do Linux com o Apache em execução para, em seguida, configurar o balanceamento. Um grupo gerenciado de instâncias cria cada uma das instâncias gerenciadas com base nos modelos de instância que você especifica.
O grupo gerenciado de instâncias 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 exibem os próprios nomes de host.
Antes de criar um grupo gerenciado de instâncias, crie um modelo de instância.
Console
Para oferecer suporte ao tráfego IPv4, siga estas etapas:
No Console do Google Cloud, acesse a página Modelos de instância.
Clique em Criar modelo de instância.
Em Nome, insira
lb-backend-template
.Verifique se o disco de inicialização está definido como uma imagem Debian. Por exemplo, Debian GNU/Linux 10 (buster). Estas instruções usam comandos que estão disponíveis apenas no Debian, como
apt-get
.Expanda Opções avançadas.
Expanda Rede e configure os seguintes campos:
- Em Tags de rede, insira
allow-health-check
. - Na seção Interfaces de rede, clique em
- Rede:
NETWORK
- Sub-rede:
SUBNET
- Tráfego IPv4: IPv4 (pilha única)
Editar e faça as
seguintes alterações:
- Rede:
- Clique em Concluído.
- Em Tags de rede, insira
Expanda Gerenciamento. No campo Script de inicialização, digite o script a seguir:
#! /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 aceitar 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 recurso google_compute_instance_template
.
Crie o grupo gerenciado de instâncias e selecione o modelo de instância.
Console
No Console do Google Cloud, acesse a página Grupos de instâncias.
Clique em Criar grupo de instâncias.
À esquerda, escolha Novo grupo gerenciado de instâncias (sem estado).
Em Nome, insira
lb-backend-example
.Em Local, selecione Única zona.
Em Região, selecione a região de sua preferência.
Em Zona, selecione uma zona.
Em Modelo de instância, selecione o modelo de instância
lb-backend-template
.Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias para o 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 gerenciado de instâncias 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 gerenciado de instâncias, use o recurso google_compute_instance_group_manager
.
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Como adicionar uma porta nomeada ao grupo de instâncias
Para o grupo de instâncias, defina um serviço HTTP e associe um nome à porta relevante. O serviço de balanceamento de carga encaminha o tráfego para a porta nomeada. Para mais informações, consulte Portas nomeadas.
Console
No Console do Google Cloud, acesse a página Grupos de instâncias.
Clique em lb-backend-example.
Na página Visão geral do grupo de instâncias, clique em Editar
.Na seção Mapeamento de porta, clique em Adicionar porta.
- Para o nome da porta, insira
http
. Como número de porta, insira80
.
- Para o nome da porta, insira
Clique em Salvar.
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 na
amostra de grupo de instâncias gerenciadas.
Configurar uma regra de firewall
Neste exemplo, você criará a regra de firewall fw-allow-health-check
.
Essa é uma regra de entrada que permite o tráfego dos sistemas de verificação de
integridade do Google Cloud (130.211.0.0/22
e 35.191.0.0/16
). Este exemplo usa a
tag de destino allow-health-check
para identificar as VMs.
Console
No Console do Google Cloud, acesse a página políticas de Firewall.
Clique em Criar regra de firewall para criar a regra.
Em Nome, insira
fw-allow-health-check
.Selecione uma rede.
Em Destinos, selecione Tags de destino especificadas.
Preencha o campo Tags de destino com
allow-health-check
.Defina Filtro de origem como Intervalos IPv4.
Defina Intervalos IPv4 de origem como
130.211.0.0/22
e35.191.0.0/16
.Em Protocolos e portas, selecione Portas e protocolos especificados.
Marque a caixa de seleção TCP e digite
80
para os números de porta.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 Comandos básicos do Terraform.
Reservar um endereço IP externo
Agora que suas instâncias estão funcionando, configure um endereço IP externo, estático e global que seus clientes possam usar para alcançar seu balanceador de carga.
Console
No console do Google Cloud, acesse a página Endereços IP externos.
Para reservar um endereço IPv4, clique em Reservar endereço IP estático externo.
Em Nome, insira
lb-ipv4-1
.Defina o Nível de serviço de rede como Premium.
Defina Versão IP como IPv4.
Configure Tipo como Global.
Clique em Reservar.
gcloud
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Anote o 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 Comandos básicos do Terraform.
Configurar o balanceador de carga
Neste exemplo, você está usando HTTPS (front-end) entre o cliente e o balanceador de carga. Para HTTPS, você precisa de um ou mais recursos de certificado SSL para configurar o proxy. Recomendamos o uso de um certificado gerenciado pelo Google.
Mesmo se você estiver usando HTTPS no front-end, poderá usar HTTP no back-end. O Google criptografa automaticamente o tráfego entre os Google Front Ends (GFEs) e seus back-ends que residem em redes VPC do Google Cloud.
Console
Iniciar a configuração
No console do Google Cloud, acesse a página Balanceamento de carga.
- Clique em Criar balanceador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicativo (HTTP/HTTPS) e clique em Próxima.
- Em Voltado ao público ou interno, selecione Voltado ao público (externo) e clique em Próxima.
- Em Implantação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Próxima.
- Em Geração do balanceador de carga, selecione Balanceador de carga de aplicativo clássico e clique em Próxima.
- Clique em Configurar.
Configuração básica
No campo Nome do balanceador de carga, insira algo como web-map-https
ou web-map-http
.
Configuração de front-end
- Clique em Configuração de front-end.
- Defina Protocolo como HTTPS.
- Selecione
IPv4
para o tráfego IPv4. Defina o endereço IP comolb-ipv4-1
, que você criou antes. - Defina a Porta como 443.
- Clique em Certificado e selecione seu certificado SSL principal.
- Opcional: crie uma política de SSL:
- Na lista Política de SSL, selecione Criar uma política.
- Defina o nome da política de SSL como
my-ssl-policy
. - Em Versão mínima de TLS, selecione TLS 1.0.
- Em Perfil, selecione Moderno. Serão exibidos Recursos ativados e Recursos desativados.
- Clique em Salvar.
-
Opcional: marque a caixa de seleção Ativar redirecionamento HTTP para HTTPS para ativar redirecionamentos.
Marcar essa caixa de seleção cria um balanceador de carga HTTP parcial extra que usa o mesmo endereço IP que o balanceador de carga HTTPS e redireciona as solicitações HTTP recebidas para o front-end HTTPS do balanceador de carga.
Essa caixa de seleção poderá ser marcada somente quando o protocolo HTTPS estiver selecionado e um endereço IP reservado for utilizado.
- Clique em Concluído.
Configuração de back-end
- Clique em Configuração de back-end.
- Em Criar ou selecionar serviços e buckets de back-end, clique em Serviços de back-end > Criar um serviço de back-end.
- Adicione um nome para o serviço de back-end, como
web-backend-service
. - Em Protocolo, selecione HTTP.
- Em Porta nomeada, insira
http
. - Em Back-ends > Novo back-end >
Grupo de instâncias, selecione o grupo de instâncias,
lb-backend-example
. - Em Número da porta, insira
80
. - Mantenha as outras configurações padrão.
- Em Verificação de integridade, selecione Criar uma verificação
de integridade e adicione um nome para ela, como
http-basic-check
. - Defina o protocolo como HTTP e clique em Salvar.
-
Opcional: configure uma política de segurança de back-end padrão. A política de segurança padrão limita o tráfego acima de um limite configurado pelo usuário. Para mais informações sobre as políticas de segurança padrão, consulte a Visão geral de limitação de taxa.
- Para desativar a política de segurança padrão do Google Cloud Armor, selecione
None
no menu da lista de políticas de segurança do back-end. - Na seção Segurança, selecione Política de segurança padrão.
- No campo Nome da política, aceite o nome gerado automaticamente ou insira um nome para a política de segurança.
- No campo Contagem de solicitações, aceite a contagem de solicitações padrão
ou insira um número inteiro entre
1
e10,000
. - No campo Intervalo, selecione um intervalo.
- No campo Aplicar na chave, escolha um dos seguintes valores: Todos, Endereço IP ou Endereço IP X-Forwarded-For. Para mais informações sobre essas opções, consulte Identificar clientes para a limitação de taxa.
- Para desativar a política de segurança padrão do Google Cloud Armor, selecione
- Mantenha as outras configurações padrão.
- Clique em Criar.
Regras de host e caminho
Em Regras de host e caminho, mantenha as configurações padrão.
Revisar e finalizar
- Clique em Analisar e finalizar.
- Revise suas configurações do balanceador de carga.
- Opcional: clique em Código equivalente para conferir a solicitação da API REST que será usada para criar o balanceador de carga.
- Clique em Criar.
Aguarde o balanceador de carga ser criado.
Se você tiver criado um balanceador de carga HTTPS e marcado a caixa de seleção Ativar redirecionamento HTTP para HTTPS, você também verá um balanceador de carga HTTP criado com um sufixo -redirect.
- Clique no nome do balanceador de carga.
- Na tela Detalhes do balanceador de carga, anote o IP:Porta do balanceador de carga.
gcloud
- Crie uma verificação de integridade.
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 seu grupo de instâncias como back-end do 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
- No caso de HTTP, crie um mapa de URL a fim de encaminhar as solicitações recebidas para o serviço de back-end
padrão.
gcloud beta compute url-maps create web-map-http \ --default-service web-backend-service
- Para HTTPS, crie um mapa de URLs para encaminhar as solicitações recebidas para o
serviço de back-end padrão.
gcloud beta compute url-maps create web-map-https \ --default-service web-backend-service
Configurar um front-end HTTPS
Pule esta seção para balanceadores de carga HTTP.
- Para HTTPS, crie o recurso de certificado SSL global, conforme mostrado nas seções a seguir:
- Como criar um recurso de certificado SSL gerenciado pelo Google
- Como criar um recurso de certificado SSL autogerenciado
No caso de HTTPS, crie um proxy HTTPS de destino a fim de encaminhar solicitações ao mapa de URL. O proxy é a parte do balanceador de carga HTTPS que armazena o certificado SSL associado a ele. Portanto, nesta etapa, também é possível carregar o certificado.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map=web-map-https \ --ssl-certificates=www-ssl-cert
- No caso de HTTPS, crie uma regra de encaminhamento global a fim de encaminhar as solicitações recebidas ao
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 de SSL global e anexe-a ao proxy HTTPS.
Para criar uma política de SSL global: Para anexar a política de 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
Configurar um front-end HTTP
Pule esta seção para balanceadores de carga HTTPS.
- Para HTTP, crie um proxy HTTP de destino para encaminhar solicitações ao mapa de URLs.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http
- No caso de HTTP, crie uma regra de encaminhamento global a fim de encaminhar as solicitações recebidas ao
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 integridade, 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 balanceador de carga de aplicativo externo global com o recurso de gerenciamento de tráfego avançado. Para criar um balanceador de carga de aplicativo clássico, altereload_balancing_scheme
paraEXTERNAL
antes de executar o script. -
Para criar o mapa de URL, 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 balanceador de carga de aplicativo externo global com o recurso de gerenciamento de tráfego avançado. Para criar um balanceador de carga de aplicativo clássico, altereload_balancing_scheme
paraEXTERNAL
antes de executar o script.
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Ativar o IAP no balanceador de carga externo do aplicativo
Observação: o IAP não é compatível com o Cloud CDN.É possível configurar o IAP para ser
ativado ou desativado (padrão). Se ativado, você precisa fornecer valores para
oauth2-client-id
e oauth2-client-secret
.
Para ativar o IAP, atualize o serviço de back-end
para incluir a sinalização --iap=enabled
com o oauth2-client-id
e
oauth2-client-secret
.
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --iap=enabled,oauth2-client-id=ID,oauth2-client-secret=SECRET \ --global
Se preferir, ative o IAP para um recurso do Compute Engine usando o console do Google Cloud, a gcloud CLI ou a API do Google Cloud.
Como conectar seu domínio ao balanceador de carga
Após a criação do balanceador de carga, anote o endereço IP associado a
ele, por exemplo, 30.90.80.100
. Para apontar seu domínio para o
balanceador de carga, crie um registro A
usando o serviço de registro de domínio. Se
você adicionou vários domínios ao certificado SSL, adicione um registro A
para cada um deles, todos apontando para o endereço IP do balanceador de carga. Por exemplo, para
criar registros 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 você usa o Cloud DNS como provedor de DNS, consulte Adicionar, modificar e excluir registros.
Testar o tráfego enviado às suas instâncias
Agora que o serviço de balanceamento de carga está em execução, é possível enviar o tráfego para a regra de encaminhamento e observar como ele será distribuído em várias instâncias.
Console
No Console do Google Cloud, acesse a página Balanceamento de carga.
- Clique no balanceador de carga que você acabou de criar.
Na seção Back-end, confirme se as VMs estão íntegras. A coluna Integridade deve estar preenchida, indicando que ambas as VMs estão íntegras (
2/2
). Caso contrário, primeiro tente recarregar a página. Pode levar alguns instantes para o Console do Google Cloud indicar que as VMs estão íntegras. Se os back-ends não aparecerem íntegros depois de alguns minutos, revise a configuração do firewall e a tag de rede atribuída às suas VMs de back-end.- No caso de HTTPS, se você usa um certificado gerenciado pelo Google, confirme se o status do recurso do certificado é "ATIVO". Para mais informações, consulte Status do recurso de certificado SSL gerenciado pelo Google.
- Depois que o Console do Google Cloud mostrar que as instâncias de back-end estão
íntegras, teste o balanceador de carga com um navegador da Web acessando
https://IP_ADDRESS
(ouhttp://IP_ADDRESS
). SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. - Caso você tenha usado um certificado autoassinado durante o teste de HTTPS, o navegador exibirá um aviso. É preciso conceder permissão explícita para que seu navegador aceite um certificado autoassinado.
- Seu navegador deve renderizar uma página que mostre o nome da
instância que a exibiu e a zona (por exemplo,
Page served from: lb-backend-example-xxxx
). Caso seu navegador não renderize essa página, revise as configuração mostradas neste guia.
gcloud
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Após alguns minutos, é possível testar a configuração executando o seguinte
comando curl
.
curl http://IP_ADDRESS
-OU-
curl https://HOSTNAME
A seguir
- Leia sobre como ativar o Cloud Load Balancing para o GKE.
- Saiba mais sobre grupos de instâncias.
- Leia sobre balanceamento de carga e escalonamento.