Neste documento, mostramos um exemplo de configuração para definir um balanceador de carga de aplicativo externo global com back-ends de grupo de instâncias de VM em um ambiente de VPC compartilhada.
No primeiro exemplo, os componentes de front-end e back-end do balanceador de carga são criados em um projeto de serviço.
Se você não quiser usar uma rede VPC compartilhada, consulte Configurar um balanceador de carga de aplicativo externo global com back-ends de grupos de instâncias de VM.
Antes de começar
- Leia a visão geral da VPC compartilhada.
- Leia a Visão geral do balanceador de carga de aplicativo externo, incluindo a seção de arquitetura da VPC compartilhada.
Permissões necessárias
A configuração de um balanceador de carga em uma rede VPC compartilhada requer algumas configurações e provisionamento iniciais de um administrador. Após a configuração inicial, o proprietário de um projeto de serviço pode realizar uma das seguintes ações:
- Implantar todos os componentes e os back-ends do balanceador de carga em um projeto de serviço.
- Implante os componentes do back-end do balanceador de carga (serviço de back-end e back-ends) em projetos de serviço que podem ser referenciados por um mapa de URL em outro serviço ou projeto de host.
Esta seção resume as permissões necessárias para seguir este guia para configurar um balanceador de carga em uma rede VPC compartilhada.
Configurar VPC compartilhada
Os seguintes papéis são necessários para as seguintes tarefas:
- Executar tarefas administrativas únicas, como configurar a VPC compartilhada e ativar um projeto host.
- Executar tarefas administrativas que precisam ser repetidas sempre que você quiser integrar um novo projeto de serviço. Isso inclui anexar o projeto de serviço, provisionar e configurar recursos de rede e conceder acesso ao administrador do projeto de serviço.
Essas tarefas precisam ser executadas no projeto host da VPC compartilhada. Recomendamos que o administrador da VPC compartilhada também seja o proprietário do projeto host da VPC compartilhada. Isso concede automaticamente os papéis de administrador de rede e administrador de segurança.
Tarefa | Papel necessário |
---|---|
Configurar a VPC compartilhada, ativar o projeto host e conceder acesso aos administradores do projeto de serviço | Administrador de VPC compartilhada |
Criar sub-redes no projeto host da VPC compartilhada e conceder acesso aos administradores do projeto de serviço | Administrador de rede |
Adicionar e remover regras de firewall | Administrador de segurança |
Depois que as sub-redes são provisionadas, o proprietário do projeto de host precisa conceder o papel do usuário de rede no projeto de hosta qualquer pessoa (normalmente desenvolvedores, contas de serviço ou administradores do projeto de serviço) que precisa usar esses recursos.
Tarefa | Papel necessário |
---|---|
Usar redes e sub-redes VPC pertencentes ao projeto host | Usuário de rede |
Esse papel pode ser concedido no nível do projeto ou para sub-redes individuais. Recomendamos que você conceda o papel em sub-redes individuais. Conceder o papel no projeto fornece acesso a todas as sub-redes atuais e futuras na VPC do projeto host.
Implantar balanceador de carga e back-ends
Os administradores do projeto de serviço precisam dos seguintes papéis no projeto de serviço para criar recursos e back-ends de balanceamento de carga. Essas permissões são concedidas automaticamente ao proprietário ou editor do projeto de serviço.
Tarefa | Papel necessário |
---|---|
Criar componentes do balanceador de carga | Administrador de rede |
Criar instâncias | Administrador de instâncias |
Criar e modificar certificados SSL | Administrador de segurança |
Pré-requisitos
Nesta seção, você precisa executar as seguintes etapas:
- Como configurar a rede e as sub-redes no projeto host.
- Configure a VPC compartilhada no projeto host.
As etapas nesta seção não precisam ser realizadas sempre que você quiser criar um novo balanceador de carga. No entanto, é preciso garantir que você tenha acesso aos recursos descritos aqui antes de continuar criando o balanceador de carga.
Como configurar a rede e as sub-redes no projeto host
Você precisa de uma rede VPC compartilhada com uma sub-rede para os back-ends do balanceador de carga.Este exemplo usa a seguinte rede, região e sub-redes:
Rede: o nome da rede é
lb-network
.Sub-rede para back-ends do balanceador de carga. uma sub-rede chamada
lb-backend-subnet
na regiãous-west1
usa10.1.2.0/24
para o intervalo de IP primário.
Configurar a sub-rede para os back-ends do balanceador de carga
Essa etapa não precisa ser realizada sempre que você quiser criar um novo balanceador de carga. Você só precisa garantir que o projeto de serviço tenha acesso a uma sub-rede na rede VPC compartilhada.Todas as etapas nesta seção precisam ser realizadas no projeto host.
Console
- No Console do Google Cloud, acesse a página Redes VPC.
- Clique em Criar rede VPC.
- Em Nome, insira
lb-network
. Na seção Sub-redes:
- Defina o Modo de criação da sub-rede como Personalizado.
Na seção Nova sub-rede, insira as seguintes informações:
- Name:
lb-backend-subnet
Região:
us-west1
Intervalo de endereços IP:
10.1.2.0/24
- Name:
Clique em Concluído.
Clique em Criar.
gcloud
Crie uma rede VPC com o comando
gcloud compute networks create
:gcloud compute networks create lb-network --subnet-mode=custom
Crie uma sub-rede na rede
lb-network
, regiãous-west1
:gcloud compute networks subnets create lb-frontend-and-backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
Conceder aos administradores do projeto de serviço acesso à sub-rede de back-end
Os administradores de projetos de serviço exigem acesso à sub-redelb-backend-subnet
para que possam provisionar os back-ends do balanceador de carga.
Um administrador de VPC compartilhada precisa conceder acesso à sub-rede de back-end aos administradores (ou desenvolvedores que implantarão recursos e back-ends que usam a sub-rede) do projeto de serviço. Veja instruções em Administradores de projetos de serviço para algumas sub-redes.
Configurar regras de firewall no projeto host
Este exemplo usa as seguintes regras de firewall:fw-allow-health-check
. uma regra de entrada, aplicável às instâncias cuja carga está sendo balanceada, que permite todo o tráfego TCP dos sistemas de verificação de integridade do Google Cloud (em130.211.0.0/22
e35.191.0.0/16
). Este exemplo usa a tag de destinoload-balanced-backend
para identificar as instâncias às quais ela deve se aplicar.
Todas as etapas nesta seção precisam ser realizadas no projeto host.
Console
No Console do Google Cloud, acesse a página políticas de Firewall.
- Clique em Criar regra de firewall para criar a regra que permite as verificações de integridade do Google Cloud:
- Name:
fw-allow-health-check
- Rede:
lb-network
- Direção do tráfego: entrada
- Ação na correspondência: permitir
- Destinos: tags de destino especificadas
- Tags de meta:
load-balanced-backend
- Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem:
130.211.0.0/22
e35.191.0.0/16
- Protocolos e portas:
- Escolha Protocolos e portas especificados.
- Marque TCP e insira
80
como o número da porta.
Como prática recomendada, limite esta regra somente aos protocolos e portas que correspondem aos usados por sua verificação de integridade. Se você usar
tcp:80
para o protocolo e a porta, o Google Cloud poderá usar HTTP na porta80
para entrar em contato com suas VMs, mas não poderá usar HTTPS na porta443
para entrar em contato com elas. - Clique em Criar.
gcloud
Crie a regra de firewall
fw-allow-health-check
para permitir verificações de integridade do Google Cloud. Neste exemplo, todo o tráfego TCP de sondagens de verificação de integridade é permitido. No entanto, é possível configurar um conjunto mais restrito de portas para atender às suas necessidades.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=load-balanced-backend \ --rules=tcp
Configurar a VPC compartilhada no projeto host
Esta etapa envolve ativar um projeto host da VPC compartilhada, compartilhar sub-redes do projeto host e anexar projetos de serviço ao projeto host para que os projetos de serviço possam usar a rede VPC compartilhada. Para configurar a VPC compartilhada no projeto host, consulte as seguintes páginas:
O restante das instruções pressupõe que você já configurou a VPC compartilhada. Isso inclui a configuração de políticas do Cloud IAM para sua organização e a designação dos projetos host e de serviço.
Não continue até configurar a VPC compartilhada e ativar os projetos host e de serviço.
Configurar um balanceador de carga no projeto de serviço
Depois de configurar a rede VPC no projeto host e configurar a VPC compartilhada, é possível voltar sua atenção para o projeto de serviço, em que você precisa criar todos os componentes de balanceamento de carga (serviço de back-end), mapa de URL, proxy de destino e regra de encaminhamento) e os back-ends.
Esta seção pressupõe que você executou as etapas de pré-requisito descritas na seção anterior no projeto host. Nesta seção, os componentes de front-end e back-end do balanceador de carga, além dos back-ends, são criados em um projeto de serviço.
A figura a seguir descreve os componentes de um balanceador de carga de aplicativo externo global em um projeto de serviço, que é anexado ao projeto host em uma rede VPC compartilhada.
Essas etapas devem ser realizadas pelo administrador do projeto de serviço (ou um desenvolvedor que opere nele) e não exigem o envolvimento do administrador do projeto host. As etapas nesta seção são semelhantes às etapas padrão para configurar um balanceador de carga de aplicativo externo global.
No exemplo desta página, é definido explicitamente um endereço IP externo reservado para a regra de encaminhamento do balanceador de carga de aplicativo externo regional, em vez de um endereço IP externo temporário ser alocado. Como prática recomendada, reserve endereços IP para regras de encaminhamento.
Criar um back-end de grupo gerenciado de instâncias
O precursor da criação de um grupo de instâncias gerenciadas é a criação de um modelo de instância, que é um recurso que pode ser usado para criar instâncias de máquina virtual (VM, na sigla em inglês). O tráfego dos clientes é balanceado por carga para VMs em um grupo de instâncias. O grupo de instâncias gerenciadas fornece VMs que executam os servidores de back-end de um balanceador de carga de aplicativo externo. Neste tutorial, os back-ends disponibilizam seus próprios nomes de host.
Console
Criar um modelo de instância
No console do Google Cloud, acesse a página Modelos de instância do Compute Engine.
Clique em Criar modelo de instância.
Em Nome, insira
backend-template
.Na seção Disco de inicialização, verifique se o disco está definido como uma imagem do Debian, como Debian GNU/Linux 10 (buster). Clique em Alterar para mudar a imagem se necessário.
Expanda a seção Opções avançadas.
Abra a seção Rede e, no campo Tags de rede, insira
load-balanced-backend
.Em Interfaces de rede, selecione Redes compartilhadas comigo (do projeto host:
HOST_PROJECT_ID
).Na lista Sub-rede compartilhada, selecione a sub-rede
lb-backend-subnet
da redelb-network
.Abra a seção Gerenciamento e, no campo Automação, especifique o seguinte script de inicialização:
#! /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.
Criar um grupo gerenciado de instâncias
No console do Google Cloud, acesse a página Grupos de instâncias do Compute Engine.
Selecione Criar grupo de instâncias.
Nas opções, selecione Novo grupo gerenciado de instâncias (sem estado).
Para o nome do grupo de instâncias, insira
lb-backend
.Na lista Modelo de instância, selecione o modelo de instância
backend-template
que você criou na etapa anterior.Na seção Local, selecione Única zona e insira os seguintes valores:
Em Região, selecione
us-west1
.Em Zona, selecione
us-west1-a
.
Na seção Escalonamento automático, insira os seguintes valores:
Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias para o grupo.
Em Número mínimo de instâncias, selecione
2
.Em Número máximo de instâncias, selecione
3
.
Na seção Mapeamento de portas, clique em Adicionar porta e insira os seguintes valores:
Em Nome da porta, insira
http
.Em Número da porta, digite
80
.
Clique em Criar.
gcloud
Criar um modelo de instância:
gcloud compute instance-templates create backend-template \ --region=us-west1 \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-backend-subnet \ --tags=load-balanced-backend \ --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' \ --project=SERVICE_PROJECT_ID
Crie um grupo de instâncias gerenciadas e selecione o modelo de instância que você criou na etapa anterior:
gcloud compute instance-groups managed create lb-backend \ --zone=us-west1-a \ --size=2 \ --template=backend-template \ --project=SERVICE_PROJECT_ID
Como adicionar uma porta nomeada ao grupo de instâncias:
gcloud compute instance-groups set-named-ports lb-backend \ --named-ports=http:80 \ --zone=us-west1-a \ --project=SERVICE_PROJECT_ID
Criar uma verificação de integridade
As verificações de integridade são testes que confirmam a disponibilidade dos back-ends. Crie uma
verificação de integridade que use o protocolo HTTP e faça sondagens na porta 80
. Posteriormente, você anexará essa verificação de integridade ao serviço de back-end referenciado pelo balanceador de carga.
Console
No console do Google Cloud, acesse a página Verificações de integridade do Compute Engine.
Para o nome da verificação de integridade, insira
lb-health-check
.Defina o protocolo como HTTP.
Clique em Criar.
gcloud
Crie uma verificação de integridade HTTP.
gcloud compute health-checks create http lb-health-check \ --use-serving-port \ --project=SERVICE_PROJECT_ID
Reserve o endereço IP do balanceador de carga
Reserve um endereço IP externo estático global que possa ser atribuído à regra de encaminhamento do balanceador de carga.
Console
No console do Google Cloud, acesse a página Endereços IP da VPC.
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
Crie um endereço IP externo estático global.
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global --project=SERVICE_PROJECT_ID
Configurar um recurso de certificado SSL
Para um balanceador de carga que usa HTTPS como o protocolo de solicitação e resposta, crie um recurso de certificado SSL, conforme descrito nos recursos a seguir:
Recomendamos o uso de um certificado gerenciado pelo Google.
Neste exemplo, presumimos que você tenha criado um certificado SSL chamado lb-ssl-cert
. O certificado SSL é anexado ao proxy de destino que você criará em uma das etapas a seguir.
Configurar o balanceador de carga
Nesta seção, mostramos como criar os seguintes recursos para um balanceador de carga de aplicativo externo global:
- Serviço de back-end com um grupo de instâncias gerenciadas como o back-end
- Mapa de URL
- Certificado SSL (obrigatório apenas para HTTPS)
- Proxy de destino
- Regra de encaminhamento
Neste exemplo, é possível usar HTTP ou HTTPS como protocolo de solicitação e resposta entre o cliente e o balanceador de carga. Para HTTPS, você precisa de um recurso de certificado SSL para configurar o proxy. Recomendamos o uso de um certificado gerenciado pelo Google.
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 externo global e clique em Próxima.
- Clique em Configurar.
Configuração básica
- No nome do balanceador de carga, insira
l7-xlb-shared-vpc
.
Configurar o front-end do balanceador de carga
Para tráfego HTTP:
Clique em Configuração de front-end.
No nome do balanceador de carga, digite
http-fw-rule
.Em Protocolo, selecione HTTP.
Configure Versão IP como IPv4.
Em Endereço IP, selecione
lb-ipv4-1
, que é o endereço IP que você reservou anteriormente.Defina a Porta como
80
para permitir o tráfego HTTP.Para concluir a configuração do front-end, clique em Concluído .
Verifique se há uma marca de seleção azul ao lado de Configuração do front-end antes de continuar.
Para tráfego HTTPS:
Clique em Configuração de front-end.
No nome do balanceador de carga, digite
https-fw-rule
.Em Protocolo, selecione HTTPS.
Configure Versão IP como IPv4.
Em Endereço IP, selecione
lb-ipv4-1
, que é o endereço IP que você reservou anteriormente.Defina a Porta como
443
para permitir o tráfego HTTP.Na lista Certificado, selecione o certificado SSL que você criou.
Para concluir a configuração do front-end, clique em Concluído .
Verifique se há uma marca de seleção azul ao lado de Configuração do front-end antes de continuar.
Configure o back-end
Clique em Configuração de back-end.
No menu Serviços e buckets de back-end, clique em Criar um serviço de back-end.
Para o nome do serviço de back-end, insira
lb-backend-service
.Em Tipo de back-end, selecione Grupo de instâncias.
Defina Protocolo como HTTP.
No campo Porta nomeada, insira
http
. Esse é o mesmo nome de porta inserido ao criar o grupo gerenciado de instâncias.Para adicionar back-ends ao serviço de back-end, faça o seguinte:
Na seção Back-ends, defina o Grupo de instâncias como
lb-backend
, que é o grupo de instâncias gerenciadas criado em uma etapa anterior.Em Números de portas, insira
80
.Para adicionar o back-end, clique em Concluído. .
Para adicionar uma verificação de integridade, na lista Verificação de integridade, selecione
lb-health-check
, que é a verificação de integridade criada anteriormente.Para criar o serviço de back-end, clique em Criar.
Verifique se há uma marca de seleção azul ao lado de Configuração do back-end antes de continuar.
Configurar as regras de roteamento
- Clique em Regras de roteamento. Verifique se
lb-backend-service
é o serviço de back-end padrão para qualquer host e caminho sem correspondência.
Saiba mais sobre gerenciamento de tráfego em Como configurar o gerenciamento de tráfego.
Revise e finalize a configuração
Clique em Analisar e finalizar.
Revise o Front-end e o Back-end do balanceador de carga para garantir que ele esteja configurado como desejado.
Clique em Criar e aguarde o balanceador de carga ser criado.
gcloud
Crie um serviço de back-end para distribuir o tráfego entre os back-ends:
gcloud compute backend-services create lb-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=lb-health-check \ --global \ --project=SERVICE_PROJECT_ID
Adicione seu grupo de instâncias como back-end do serviço de back-end:
gcloud compute backend-services add-backend lb-backend-service \ --instance-group=lb-backend \ --instance-group-zone=us-west1-a \ --global \ --project=SERVICE_PROJECT_ID
Crie um mapa de URL para encaminhar solicitações recebidas para o serviço de back-end :
gcloud compute url-maps create lb-map \ --default-service=lb-backend-service \ --global \ --project=SERVICE_PROJECT_ID
Criar um proxy de destino.
Para tráfego HTTP, crie um proxy HTTP de destino para encaminhar solicitações ao mapa de URL:
gcloud compute target-http-proxies create http-proxy \ --url-map=lb-map \ --global \ --project=SERVICE_PROJECT_ID
Para tráfego HTTPS, crie um proxy HTTPS de destino para encaminhar solicitações ao mapa de URL. O proxy é a parte do balanceador de carga que armazena o certificado SSL de um balanceador de carga HTTPS. Portanto, nesta etapa, também é possível carregar o certificado SSL.
gcloud compute target-https-proxies create https-proxy \ --url-map=lb-map \ --ssl-certificates=lb-ssl-cert --global \ --project=SERVICE_PROJECT_ID
Crie uma regra de encaminhamento.
Para o tráfego HTTP, crie uma regra de encaminhamento global para encaminhar as solicitações recebidas para o proxy de destino:
gcloud compute forwarding-rules create http-fw-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-proxy \ --ports=80 \ --project=SERVICE_PROJECT_ID
Para o tráfego HTTPS, crie uma regra de encaminhamento global para encaminhar as solicitações recebidas para o proxy de destino:
gcloud compute forwarding-rules create https-fw-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --address=lb-ipv4-1 \ --global \ --target-https-proxy=https-proxy \ --ports=443 \ --project=SERVICE_PROJECT_ID
Testar o balanceador de carga
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.
Anote o endereço IP do balanceador de carga. Esse endereço IP é chamado de
LB_IP_ADDRESS
nas etapas a seguir.Na seção Back-end, confirme se as VMs estão íntegras.
A coluna Íntegra precisa estar preenchida, indicando que as VMs estão íntegras. Por exemplo, se duas instâncias forem criadas, você verá uma mensagem indicando
2 of 2
com uma marca de seleção ao lado dele. Se não estiver assim, tente atualizar 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 forem exibidos depois de alguns minutos, analise a configuração do firewall e a tag de rede atribuída às suas VMs de back-end.Depois que o console do Google Cloud mostrar que as instâncias de back-end estão íntegras, teste o balanceador de carga apontando o navegador da Web para
https://LB_IP_ADDRESS
(ouhttp://LB_IP_ADDRESS
). SubstituaLB_IP_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. Você precisa permitir que o 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
Anote o endereço IP que foi reservado:
gcloud compute addresses describe IP_ADDRESS_NAME \ --format="get(address)" \ --global
Para testar o balanceador de carga, aponte o navegador da Web para https://LB_IP_ADDRESS
(ou http://LB_IP_ADDRESS
). Substitua LB_IP_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. Você precisa permitir que o navegador aceite um certificado autoassinado.
O navegador precisa renderizar uma página com informações mínimas sobre a instância de back-end. Se o navegador não renderizar a página, revise as configurações neste guia.
A seguir
- Saiba como resolver problemas com um balanceador de carga de aplicativo externo global.
- Limpe a configuração do balanceamento de carga.