Neste tutorial, mostramos como você, como um produtor de serviços, pode criar um serviço simples que usa um balanceador de carga de rede de passagem interna. Por padrão, um balanceador de carga de rede de passagem interna só está disponível na rede VPC que o hospeda.
Este tutorial é destinado a arquitetos de nuvem e de rede, administradores de rede e de TI.
Objetivos
- Configurar a rede para os recursos do produtor de serviços
- Criar recursos de VM para o back-end do balanceador de carga
- Configurar os componentes do balanceador de carga
- Testar o acesso ao balanceador de carga
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na sua projeção de uso, utilize a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.
Antes de começar
- Crie ou selecione um projeto para usar nos recursos do produtor de serviços.
Nos tutoriais posteriores, esse projeto será chamado de
PRODUCER_PROJECT. -
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Enable the Compute Engine API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Make sure that you have the following role or roles on the project: Compute Engine > Compute Network Admin, Compute Engine > Compute Security Admin, Compute Engine > Compute Instance Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Acessar o IAM - Selecione o projeto.
- Clique em Conceder acesso.
-
No campo Novos principais, digite seu identificador de usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.
- Clique em Selecionar um papel e pesquise o papel.
- Para conceder outros papéis, adicione-os clicando em Adicionar outro papel.
- Clique em Salvar.
-
Configurar rede
As seções a seguir explicam como criar uma rede, uma sub-rede e regras de firewall para o serviço.
Configurar uma rede e uma sub-rede
Para criar a rede e a sub-rede de serviço para o balanceador de carga, siga as etapas nas seções a seguir.
Console
No console do Google Cloud , acesse a página Redes VPC.
Clique em Criar rede VPC.
Em Nome, insira
service-network.Em Modo de criação da sub-rede, selecione Personalizado.
Na seção Nova sub-rede, insira as seguintes informações:
- Em Nome, insira
service-subnet. - Em Região, selecione a região que você quer usar.
- Em Tipo de pilha de IP, selecione IPv4 (pilha única).
- Em Intervalo IPv4, insira
10.10.10.0/24. - Clique em Concluído.
- Em Nome, insira
Clique em Criar.
gcloud
Crie uma rede VPC personalizada:
gcloud compute networks create service-network --subnet-mode=custom
Na rede
service-network, crie uma sub-rede.gcloud compute networks subnets create service-subnet \ --network=service-network \ --range=10.10.10.0/24 \ --region=REGIONSubstitua
REGIONpela região que você quer usar.
Configurar regras de firewall
Crie regras de firewall para permitir o tráfego a seguir:
fw-allow-subnet: permite que o tráfego de10.10.10.0/24alcance outros recursos em10.10.10.0/24.fw-allow-ssh: permite que o tráfego SSH de0.0.0.0/0alcance VMs que tenham a tag de redeallow-ssh.fw-allow-healthcheck: permite que o tráfego dos sistemas de verificação de integridade Google Cloud alcance as VMs que têm a tag de redeallow-healthcheck.
Console
No console do Google Cloud , acesse a página Políticas de firewall.
Para permitir o tráfego de sub-rede, clique em Criar regra de firewall e use as seguintes configurações:
- Em Nome, insira
fw-allow-subnet. - Em Rede, selecione
service-network. - Em Prioridade, digite
1000. - Em Direção de tráfego, selecione Entrada.
- Em Ação se houver correspondência, selecione Permitir.
- Em Destinos, selecione Todas as instâncias na rede.
- Em Filtro de origem, selecione Intervalos IPv4.
- Em Intervalos IPv4 de origem, insira
10.10.10.0/24. - Em Protocolos e portas, selecione Permitir todos.
- Em Nome, insira
Clique em Criar.
Para permitir conexões SSH de entrada, clique em Criar regra de firewall e use as seguintes configurações:
- Em Nome, insira
fw-allow-ssh. - Em Rede, selecione
service-network. - Em Prioridade, digite
1000. - Em Direção de tráfego, selecione Entrada.
- Em Ação se houver correspondência, selecione Permitir.
- Em Destinos, selecione Specified target tags.
- Em Tags de destino, insira
allow-ssh. - Em Filtro de origem, selecione Intervalos IPv4.
- Em Intervalos IPv4 de origem, insira
0.0.0.0/0. - Em Protocolos e portas, selecione Protocolos e portas especificados e marque a caixa de seleção TCP. Em Portas, insira
22.
- Em Nome, insira
Clique em Criar.
Para permitir as verificações de integridade do Google Cloud , clique em Criar regra de firewall e use as seguintes configurações:
- Em Nome, insira
fw-allow-healthcheck. - Em Rede, selecione
service-network. - Em Prioridade, digite
1000. - Em Direção de tráfego, selecione Entrada.
- Em Ação se houver correspondência, selecione Permitir.
- Em Destinos, selecione Specified target tags.
- Em Tags de destino, insira
allow-healthcheck. - Em Filtro de origem, selecione Intervalos IPv4.
- Em Intervalos IPv4 de origem, insira
130.211.0.0/22e35.191.0.0/16. - Em Protocolos e portas, selecione Permitir todos.
- Em Nome, insira
Clique em Criar.
gcloud
Crie a regra de firewall
fw-allow-subnetpara permitir a comunicação pela sub-rede:gcloud compute firewall-rules create fw-allow-subnet \ --network=service-network \ --action=allow \ --direction=ingress \ --source-ranges=10.10.10.0/24 \ --rules=tcp,udp,icmp
Crie a regra de firewall
fw-allow-sshque permita a conectividade SSH para VMs com a tag de redeallow-ssh.gcloud compute firewall-rules create fw-allow-ssh \ --network=service-network \ --action=allow \ --direction=ingress \ --source-ranges=0.0.0.0/0 \ --target-tags=allow-ssh \ --rules=tcp:22
Crie a regra
fw-allow-healthcheckpara permitir verificações de integridade do Google Cloud.gcloud compute firewall-rules create fw-allow-healthcheck \ --network=service-network \ --action=allow \ --direction=ingress \ --target-tags=allow-healthcheck \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmp
Criar recursos de VM para o back-end do balanceador de carga
Crie as VMs e o grupo de instâncias para usar com o balanceador de carga.
Criar VMs de back-end
O serviço que você está criando é executado em duas VMs para maior disponibilidade: vm-1 e vm-2. As VMs estão na mesma zona, mas em um ambiente de produção, recomendamos usar várias zonas.
Além de criar as VMs, seguir estas etapas realiza o seguinte:
- Configura as VMs para usar as tags de rede que você configurou como destinos
nas regras de firewall e uma tag de rede
adicional (
allow-nat) que será usada mais tarde. Instala, configura e inicia o serviço Apache.
Console
No console do Google Cloud , acesse a página Instâncias de VM.
Clique em Criar instância.
Em Nome, insira
vm-1.Em Região e Zona, selecione uma região e uma zona dentro dela.
No menu de navegação, acesse SO e armazenamento.
No painel Sistema operacional e armazenamento, verifique se Debian GNU/Linux 12 (bookworm) está selecionado para o disco de inicialização. Se precisar selecionar outra imagem, clique em Mudar.
No menu de navegação, acesse Rede.
Em Tags de rede, insira
allow-ssh,allow-healthcheckeallow-nat.Em Interfaces de rede, selecione o seguinte:
- Em Rede, selecione
service-network. - Em Sub-rede, selecione
service-subnet. - Em Tipo de pilha de IP, selecione IPv4 (pilha única).
- Em Endereço IPv4 interno principal, selecione Temporário (automático).
- Em Endereço IPv4 externo, selecione Temporário.
- Em Rede, selecione
No menu de navegação, acesse Avançado.
Na seção Automação, no campo Script de inicialização, insira o script a seguir.
#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" 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 prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completedClique em Criar.
Repita essas etapas para criar outra VM chamada
vm-2na mesma região e zona devm-1.
gcloud
Crie duas VMs executando os seguintes comandos:
gcloud compute instances create vm-1 \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-healthcheck,allow-nat \ --subnet=service-subnet \ --metadata=startup-script='#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" 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 prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed'gcloud compute instances create vm-2 \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-healthcheck,allow-nati \ --subnet=service-subnet \ --metadata=startup-script='#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" 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 prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed'Substitua
ZONEpela zona que você quer usar.
Criar um grupo de instâncias
Para usar as VMs em um back-end de balanceador de carga, adicione-as a um grupo de instâncias.
Console
No console, do Google Cloud , acesse a página Grupos de instâncias.
Clique em Criar grupo de instâncias.
No painel de navegação, clique em Novo grupo de instâncias não gerenciadas.
Em Nome, insira
ig-1.Na seção Local, selecione a mesma região e zona das suas VMs.
Em Rede, selecione
service-network.Em Sub-rede, selecione
service-subnet.Na seção Instâncias de VM, adicione
vm-1evm-2ao grupo de instâncias.Clique em Criar.
gcloud
Crie um grupo de instâncias não gerenciadas:
gcloud compute instance-groups unmanaged create ig-1 \ --zone=ZONESubstitua
ZONEpela zona que contém as VMs.Adicione as VMs ao grupo de instâncias:
gcloud compute instance-groups unmanaged add-instances ig-1 \ --zone=ZONE \ --instances=vm-1,vm-2
Configurar componentes do balanceador de carga
Configure todos os componentes do balanceador de carga de rede de passagem interno, começando pela verificação de integridade e pelo serviço de back-end e, em seguida, os componentes de front-end:
Verificação de integridade. Você usa uma verificação de integridade HTTP que verifica um código de status HTTP
200 OK.Serviço de back-end. Devido à necessidade de passar tráfego HTTP através do balanceador de carga interno, você precisa usar TCP em vez de UDP.
Regra de encaminhamento. Você cria uma única regra de encaminhamento interno,
service-rule.Endereço IP interno. Você especifica um endereço IP interno,
10.10.10.99, ao criar a regra de encaminhamento.
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 rede (TCP/UDP/SSL) e clique em Próxima.
- Em Proxy ou passagem, selecione Balanceador de carga de passagem e clique em Próxima.
- Em Voltado ao público ou interno, selecione Interno e clique em Próxima.
- Clique em Configurar.
Configuração básica
Na página Criar balanceador de carga de rede de passagem interna, digite as seguintes informações:
- Em Nome do balanceador de carga, insira
service-lb. - Em Região, selecione a mesma região das suas VMs.
- Em Rede, selecione
service-network.
Configurar os back-ends
- Clique em Configuração de back-end.
- Na lista Verificação de integridade, clique em Criar verificação de integridade e insira as seguintes informações:
- Em Nome, insira
hc-http-80. - Em Protocolo, selecione
HTTP. - Em Porta, insira
80. - Em Protocolo de proxy, selecione
NONE. - Em Caminho da solicitação, insira
/.
- Em Nome, insira
- Clique em Criar.
- Na seção Novo back-end de Back-ends, selecione IPv4 (pilha única).
- Em Grupo de instâncias, selecione o grupo de instâncias
ig-1e clique em Concluído. - Verifique se há uma marca de seleção azul ao lado de Configuração do back-end antes de continuar.
Configure o front-end
- Clique em Configuração de front-end.
- Na seção Novo IP e nova porta de front-end, faça o seguinte:
- Em Nome, insira
service-rule. - Em Sub-rede, selecione
service-subnet. - Na seção Finalidade do IP interno, na lista Endereço IP,
selecione Criar endereço IP e insira as seguintes informações:
- Em Nome, insira
service-rule-ip. - Em Versão do IP, selecione IPv4.
- Em Endereço IP estático, selecione Let me choose.
- Em Endereço IP personalizado, insira
10.10.10.99.
- Em Nome, insira
- Clique em Reservar.
- Em Portas, selecione Única e, em Números de portas, digite
80. - Clique em Concluído.
- Verifique se há uma marca de seleção azul ao lado de Configuração do front-end antes de continuar.
- Em Nome, insira
Analise a configuração
- Clique em Analisar e finalizar.
- Revise suas configurações do balanceador de carga.
- Clique em Criar.
gcloud
Crie uma nova verificação de integridade HTTP regional para testar a conectividade HTTP com as VMs na porta 80.
gcloud compute health-checks create http hc-http-80 \ --region=REGION \ --port=80Substitua
REGIONpela mesma região das VMs de back-end.Crie o serviço de back-end do tráfego HTTP:
gcloud compute backend-services create service-lb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=REGION \ --health-checks=hc-http-80 \ --health-checks-region=REGIONSubstitua
REGIONpela mesma região das VMs de back-end.Adicione o grupo de instâncias ao serviço de back-end.
gcloud compute backend-services add-backend service-lb \ --region=REGION \ --instance-group=ig-1 \ --instance-group-zone=ZONESubstitua:
REGION: a mesma região das VMs de back-end.ZONE: a mesma zona das VMs de back-end.
Crie uma regra de encaminhamento do serviço de back-end.
gcloud compute forwarding-rules create service-rule \ --region=REGION \ --load-balancing-scheme=internal \ --network=service-network \ --subnet=service-subnet \ --address=10.10.10.99 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=service-lb \ --backend-service-region=REGIONSubstitua
REGIONpela mesma região das VMs de back-end.
Testar o acesso ao balanceador de carga
Para testar se o balanceador de carga está funcionando, crie uma VM de teste e envie uma solicitação dela para o balanceador de carga.
Criar uma VM cliente para teste
Crie uma VM cliente na mesma região das VMs de back-end (servidor).
Console
No console do Google Cloud , acesse a página Instâncias de VM.
Clique em Criar instância.
Em Nome, insira
producer-test.Em Região, selecione a mesma região das VMs de back-end.
Em Zona, selecione uma zona nessa região.
Clique em Rede e configure os seguintes campos:
- Em Tags de rede, insira
allow-ssh. - Em Interfaces de rede, selecione o seguinte:
- Em Rede, selecione
service-network. - Em Sub-rede, selecione
service-subnet.
- Em Rede, selecione
- Em Tags de rede, insira
Clique em Criar.
gcloud
gcloud compute instances create producer-test \
--zone=ZONE \
--image-family=debian-12 \
--image-project=debian-cloud \
--tags=allow-ssh \
--subnet=service-subnet
Substitua ZONE por uma zona na mesma região das VMs de back-end.
testar a conectividade
Neste teste, o balanceador de carga é contatado por uma VM cliente. O comportamento esperado é que o tráfego seja distribuído entre as VMs de back-end do balanceador de carga.
- Conecte-se à instância da VM cliente.
Substituagcloud compute ssh producer-test --zone=ZONE
ZONEpela zona da VM do cliente. - Faça uma solicitação da Web para o balanceador de carga usando
curlpara contatar o endereço IP dele. Repita a solicitação para ver que as respostas provêm de diferentes VMs de back-end. O nome da VM que gera a resposta é exibido no texto na resposta HTML, devido ao conteúdo de/var/www/html/index.htmlem cada VM de back-end. Por exemplo, as respostas esperadas são assim:Page served from: vm-1ePage served from: vm-2.curl -s http://10.10.10.99