Este documento fornece instruções para configurar um Application Load Balancer interno regional para os seus serviços executados em VMs do Compute Engine.
Para configurar o equilíbrio de carga para os seus serviços executados em pods do Google Kubernetes Engine (GKE), consulte o artigo Equilíbrio de carga nativo de contentores através de NEGs autónomos e a secção Anexar um Application Load Balancer interno a NEGs autónomos.
Para configurar o equilíbrio de carga para aceder às APIs e aos serviços Google através do Private Service Connect, consulte o artigo Aceda às APIs Google regionais através de back-ends.
A configuração dos balanceadores de carga de aplicações internos tem duas partes:
- Realize tarefas de pré-requisitos, como garantir que as contas necessárias têm as autorizações corretas e preparar a rede de nuvem virtual privada (VPC).
- Configure os recursos do balanceador de carga.
Antes de seguir este guia, familiarize-se com o seguinte:
- Vista geral do equilibrador de carga de aplicações interno, incluindo a secção Limitações
- Vista geral das regras de firewall de VPC
Autorizações
Para seguir este guia, tem de conseguir criar instâncias e modificar uma rede num projeto. Tem de ser proprietário ou editor do projeto, ou ter todas as funções do IAM do Compute Engine seguintes.
Tarefa | Função necessária |
---|---|
Crie redes, sub-redes e componentes do balanceador de carga | Administrador da rede de computação (roles/compute.networkAdmin )
|
Adicione e remova regras de firewall | Administrador de segurança do Compute (roles/compute.securityAdmin )
|
Crie instâncias | Administrador da instância de computação (roles/compute.instanceAdmin.v1 )
|
Para mais informações, consulte os seguintes guias:
Vista geral da configuração
Pode configurar um Application Load Balancer interno conforme descrito no seguinte fluxo de configuração de alto nível. Os passos numerados referem-se aos números no diagrama.
Conforme mostrado no diagrama, este exemplo cria um Application Load Balancer interno numa rede VPC na região us-west1
, com um serviço de back-end e dois grupos de back-end.
O diagrama mostra o seguinte:
Uma rede VPC com duas sub-redes:
Uma sub-rede é usada para back-ends (grupos de instâncias) e a regra de encaminhamento. O respetivo intervalo de endereços IP principal é
10.1.2.0/24
.Uma sub-rede é uma sub-rede só de proxy na região
us-west1
. Tem de criar uma sub-rede apenas de proxy em cada região de uma rede VPC onde usa equilibradores de carga de aplicações internos. A sub-rede apenas de proxy da região é partilhada entre todos os balanceadores de carga de aplicações internos na região. Os endereços de origem dos pacotes enviados do Application Load Balancer interno para os back-ends do seu serviço são atribuídos a partir da sub-rede apenas de proxy. Neste exemplo, a sub-rede apenas de proxy para a região tem um intervalo de endereços IP principal de10.129.0.0/23
, que é o tamanho da sub-rede recomendado. Para mais informações, consulte o artigo Sub-redes apenas de proxy para equilibradores de carga baseados no Envoy.
Duas regras de firewall:
- Uma regra de firewall que permite fluxos de tráfego de sub-rede só de proxy na sua rede. Isto significa adicionar uma regra que permita o tráfego da porta TCP
80
,443
e8080
de10.129.0.0/23
(o intervalo da sub-rede só de proxy neste exemplo). - Outra regra da firewall para as sondas de verificação de funcionamento.
- Uma regra de firewall que permite fluxos de tráfego de sub-rede só de proxy na sua rede. Isto significa adicionar uma regra que permita o tráfego da porta TCP
Instâncias de VM do Compute Engine de back-end.
Grupos de instâncias geridos ou não geridos para implementações de VMs do Compute Engine.
Em cada zona, pode ter uma combinação de tipos de grupos de back-end com base nos requisitos da sua implementação.
Uma verificação de saúde regional que comunica a disponibilidade dos seus back-ends.
Um serviço de back-end regional que monitoriza a utilização e o estado de funcionamento dos back-ends.
Um mapa de URLs regional que analisa o URL de um pedido e encaminha pedidos para serviços de back-end específicos com base no anfitrião e no caminho do URL do pedido.
Um proxy HTTP ou HTTPS de destino regional que recebe um pedido do utilizador e o encaminha para o mapa de URLs. Para HTTPS, configure um recurso de certificado SSL regional. O proxy de destino usa o certificado SSL para desencriptar o tráfego SSL se configurar o equilíbrio de carga HTTPS. O proxy de destino pode encaminhar o tráfego para as suas instâncias através de HTTP ou HTTPS.
Uma regra de encaminhamento que tem o endereço IP interno do seu balanceador de carga para encaminhar cada pedido recebido para o proxy de destino.
O endereço IP interno associado à regra de encaminhamento pode ser proveniente de qualquer sub-rede na mesma rede e região. Tenha em atenção as seguintes condições:
- O endereço IP pode (mas não tem de) ser proveniente da mesma sub-rede que os grupos de instâncias de back-end.
- O endereço IP não pode ser proveniente de uma sub-rede só de proxy reservada com a respetiva flag
--purpose
definida comoREGIONAL_MANAGED_PROXY
. - Se quiser partilhar o endereço IP interno com várias regras de encaminhamento, defina a flag
--purpose
do endereço IP comoSHARED_LOADBALANCER_VIP
.
O exemplo nesta página usa um endereço IP interno reservado para a regra de encaminhamento do Application Load Balancer interno regional, em vez de permitir a atribuição de um endereço IP interno efémero. Como prática recomendada, recomendamos que reserve endereços IP para regras de encaminhamento.
Configure a rede e as sub-redes
Precisa de uma rede VPC com duas sub-redes: uma para os back-ends do balanceador de carga e outra para os proxies do balanceador de carga. Um balanceador de carga de aplicações interno é regional. O tráfego na rede da VPC é encaminhado para o balanceador de carga se a origem do tráfego estiver numa sub-rede na mesma região que o balanceador de carga.
Este exemplo usa a seguinte rede de VPC, região e sub-redes:
Rede. A rede é uma rede VPC no modo personalizado denominada
lb-network
.Sub-rede para back-ends. Uma sub-rede denominada
backend-subnet
na regiãous-west1
usa10.1.2.0/24
para o respetivo intervalo de IP principal.Sub-rede para proxies. Uma sub-rede denominada
proxy-only-subnet
na regiãous-west1
usa10.129.0.0/23
para o respetivo intervalo de IP principal.
Para demonstrar o acesso global, este exemplo também cria uma segunda VM de cliente de teste numa região e sub-rede diferentes:
- Região:
europe-west1
- Sub-rede:
europe-subnet
, com o intervalo de endereços IP principal10.3.4.0/24
Configure a rede e as sub-redes
Consola
Na Google Cloud consola, aceda à página Redes VPC.
Clique em Criar rede de VPC.
Em Nome, introduza
lb-network
.Na secção Sub-redes, defina o Modo de criação de sub-redes como Personalizado.
Crie uma sub-rede para os back-ends do balanceador de carga. Na secção Nova sub-rede, introduza as seguintes informações:
- Nome:
backend-subnet
- Região:
us-west1
- Intervalo de endereços IP:
10.1.2.0/24
- Nome:
Clique em Concluído.
Clique em Adicionar sub-rede.
Crie uma sub-rede para demonstrar o acesso global. Na secção Nova sub-rede, introduza as seguintes informações:
- Nome:
europe-subnet
- Região:
europe-west1
- Intervalo de endereços IP:
10.3.4.0/24
- Nome:
Clique em Concluído.
Clique em Criar.
gcloud
Crie a rede VPC personalizada com o comando
gcloud compute networks create
:gcloud compute networks create lb-network --subnet-mode=custom
Crie uma sub-rede na rede
lb-network
na regiãous-west1
com o comandogcloud compute networks subnets create
:gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
Crie uma sub-rede na rede
lb-network
na regiãoeurope-west1
com o comandogcloud compute networks subnets create
:gcloud compute networks subnets create europe-subnet \ --network=lb-network \ --range=10.3.4.0/24 \ --region=europe-west1
API
Faça um pedido POST
ao
método networks.insert
.
Substitua PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "routingConfig": { "routingMode": "REGIONAL" }, "name": "lb-network", "autoCreateSubnetworks": false }
Faça um pedido POST
ao
método subnetworks.insert
.
Substitua PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "backend-subnet", "network": "projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "region": "projects/PROJECT_ID/regions/us-west1", }
Faça um pedido POST
ao
método subnetworks.insert
.
Substitua PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/europe-west1/subnetworks { "name": "europe-subnet", "network": "projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.3.4.0/24", "region": "projects/PROJECT_ID/regions/europe-west1", }
Configure a sub-rede só de proxy
Esta sub-rede apenas de proxy destina-se a todos os balanceadores de carga regionais baseados no Envoy na região us-west1
de lb-network
.
Consola
Se estiver a usar a Google Cloud consola, pode esperar e criar a sub-rede apenas de proxy mais tarde na página Equilíbrio de carga.
Se quiser criar a sub-rede apenas de proxy agora, siga estes passos:
Na Google Cloud consola, aceda à página Redes VPC.
Clique no nome da rede da VPC:
lb-network
.Clique em Adicionar sub-rede.
Em Nome, introduza
proxy-only-subnet
.Para Região, selecione
us-west1
.Defina Purpose como Regional Managed Proxy.
Para o Intervalo de endereços IP, introduza
10.129.0.0/23
.Clique em Adicionar.
gcloud
Crie a sub-rede só de proxy com o comando gcloud compute networks subnets
create
.
gcloud compute networks subnets create proxy-only-subnet \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-west1 \ --network=lb-network \ --range=10.129.0.0/23
API
Crie a sub-rede apenas de proxy com o método subnetworks.insert
, substituindo PROJECT_ID
pelo ID do projeto.
POST https://compute.googleapis.com/compute/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "proxy-only-subnet", "ipCidrRange": "10.129.0.0/23", "network": "projects/PROJECT_ID/global/networks/lb-network", "region": "projects/PROJECT_ID/regions/us-west1", "purpose": "REGIONAL_MANAGED_PROXY", "role": "ACTIVE" }
Configure regras de firewall
Este exemplo usa as seguintes regras de firewall:
fw-allow-ssh
. Uma regra de entrada, aplicável às instâncias com balanceamento de carga, que permite a conetividade SSH de entrada na porta TCP22
a partir de qualquer endereço. Pode escolher um intervalo de IPs de origem mais restritivo para esta regra. Por exemplo, pode especificar apenas os intervalos de IPs do sistema a partir do qual inicia sessões SSH. Este exemplo usa a etiqueta de destinoallow-ssh
para identificar as VMs às quais a regra de firewall se aplica.fw-allow-health-check
. Uma regra de entrada, aplicável às instâncias com balanceamento de carga, que permite todo o tráfego TCP dos Google Cloud sistemas de verificação de estado (em130.211.0.0/22
e35.191.0.0/16
). Este exemplo usa a etiqueta de destinoload-balanced-backend
para identificar as VMs às quais a regra de firewall se aplica.fw-allow-proxies
. Uma regra de entrada, aplicável às instâncias com balanceamento de carga, que permite o tráfego TCP nas portas80
,443
e8080
dos proxies geridos do balanceador de carga de aplicações interno. Este exemplo usa a etiqueta de destinoload-balanced-backend
para identificar as VMs às quais a regra de firewall se aplica.
Sem estas regras de firewall, a regra de negação predefinida de entrada bloqueia o tráfego de entrada para as instâncias de back-end.
As etiquetas de destino definem as instâncias de back-end. Sem as etiquetas de destino, as regras da firewall aplicam-se a todas as instâncias de back-end na rede VPC. Quando criar as VMs de back-end, certifique-se de que inclui as etiquetas de destino especificadas, conforme mostrado em Crie um back-end de grupo de instâncias de VMs geridas.
Consola
Na Google Cloud consola, aceda à página Políticas de firewall.
Clique em Criar regra de firewall para criar a regra que permite ligações SSH de entrada:
- Nome:
fw-allow-ssh
- Rede:
lb-network
- Direção do tráfego: entrada
- Ação na correspondência: Permitir
- Objetivos: etiquetas de destino especificadas
- Etiquetas de segmentação:
allow-ssh
- Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem:
0.0.0.0/0
- Protocolos e portas:
- Escolha Protocolos e portas especificados.
- Selecione a caixa de verificação TCP e, de seguida, introduza
22
para o número da porta.
- Nome:
Clique em Criar.
Clique em Criar regra de firewall uma segunda vez para criar a regra que permite as Google Cloud verificações de funcionamento:
- Nome:
fw-allow-health-check
- Rede:
lb-network
- Direção do tráfego: entrada
- Ação na correspondência: Permitir
- Objetivos: etiquetas de destino especificadas
- Etiquetas de segmentação:
load-balanced-backend
- Filtro de origem: intervalos IPv4
- Intervalos de IPv4 de origem:
130.211.0.0/22
e35.191.0.0/16
- Protocolos e portas:
- Escolha Protocolos e portas especificados.
- Selecione a caixa de verificação TCP e, de seguida, introduza
80
para o número da porta.
Como prática recomendada, limite esta regra apenas aos protocolos e às portas que correspondem aos usados pela sua verificação de estado. Se usartcp:80
para o protocolo e a porta, Google Cloud pode usar o HTTP na porta80
para contactar as suas VMs, mas não pode usar o HTTPS na porta443
para as contactar.
- Nome:
Clique em Criar.
Clique em Criar regra de firewall pela terceira vez para criar a regra que permite que os servidores proxy do balanceador de carga se liguem aos back-ends:
- Nome:
fw-allow-proxies
- Rede:
lb-network
- Direção do tráfego: entrada
- Ação na correspondência: Permitir
- Objetivos: etiquetas de destino especificadas
- Etiquetas de segmentação:
load-balanced-backend
- Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem:
10.129.0.0/23
- Protocolos e portas:
- Escolha Protocolos e portas especificados.
- Selecione a caixa de verificação TCP e, de seguida, introduza
80, 443, 8080
para os números de porta.
- Nome:
Clique em Criar.
gcloud
Crie a regra de firewall
fw-allow-ssh
para permitir a conetividade SSH a VMs com a etiqueta de redeallow-ssh
. Quando omitesource-ranges
, Google Cloud interpreta a regra como qualquer origem.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Crie a regra
fw-allow-health-check
para permitir Google Cloud verificações de funcionamento. Este exemplo permite todo o tráfego TCP de sondas de verificação de estado. No entanto, pode configurar um conjunto mais restrito de portas para satisfazer as 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
Crie a regra
fw-allow-proxies
para permitir que os proxies do balanceador de carga de aplicações interno se liguem aos seus back-ends. Definasource-ranges
para os intervalos atribuídos da sua sub-rede só de proxy, por exemplo,10.129.0.0/23
.gcloud compute firewall-rules create fw-allow-proxies \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=source-range \ --target-tags=load-balanced-backend \ --rules=tcp:80,tcp:443,tcp:8080
API
Crie a regra de firewall fw-allow-ssh
fazendo um pedido POST
ao método firewalls.insert
, substituindo PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-ssh", "network": "projects/PROJECT_ID/global/networks/lb-network", "sourceRanges": [ "0.0.0.0/0" ], "targetTags": [ "allow-ssh" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "direction": "INGRESS" }
Crie a regra de firewall fw-allow-health-check
fazendo um pedido POST
ao método firewalls.insert
, substituindo PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check", "network": "projects/PROJECT_ID/global/networks/lb-network", "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "load-balanced-backend" ], "allowed": [ { "IPProtocol": "tcp" } ], "direction": "INGRESS" }
Crie a regra de firewall fw-allow-proxies
para permitir o tráfego TCP na sub-rede de proxy para o método firewalls.insert
, substituindo PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-proxies", "network": "projects/PROJECT_ID/global/networks/lb-network", "sourceRanges": [ "10.129.0.0/23" ], "targetTags": [ "load-balanced-backend" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "80" ] }, { "IPProtocol": "tcp", "ports": [ "443" ] }, { "IPProtocol": "tcp", "ports": [ "8080" ] } ], "direction": "INGRESS" }
Reserve o endereço IP do balanceador de carga
Por predefinição, é usado um endereço IP para cada regra de encaminhamento. Pode reservar um endereço IP partilhado, que lhe permite usar o mesmo endereço IP com várias regras de encaminhamento. No entanto, se quiser publicar o balanceador de carga através do Private Service Connect, não use um endereço IP partilhado para a regra de encaminhamento.
Para o endereço IP da regra de encaminhamento, use backend-subnet
. Se tentar usar a sub-rede apenas de proxy, a criação da regra de encaminhamento falha.
Consola
Pode reservar um endereço IP interno autónomo através da Google Cloud consola.
- Aceda à página Redes VPC.
- Clique na rede que foi usada para configurar a conetividade híbrida entre os ambientes.
- Clique em Endereços IP internos estáticos e, de seguida, clique em Reservar endereço estático.
- Em Nome, introduza
l7-ilb-ip-address
. - Para a Sub-rede, selecione
backend-subnet
. - Se quiser especificar o endereço IP a reservar, em Endereço IP estático, selecione Permitir-me escolher e, em seguida, preencha um Endereço IP personalizado. Caso contrário, o sistema atribui automaticamente um endereço IP na sub-rede.
- Se quiser usar este endereço IP com várias regras de encaminhamento, em Finalidade, escolha Partilhado.
- Clique em Reservar para concluir o processo.
gcloud
Usando a CLI gcloud, execute o comando
gcloud compute addresses create
:gcloud compute addresses create l7-ilb-ip-address \ --region=us-west1 \ --subnet=backend-subnet
Se quiser usar o mesmo endereço IP com várias regras de encaminhamento, especifique
--purpose=SHARED_LOADBALANCER_VIP
.Use o
gcloud compute addresses describe
comando para ver o endereço IP atribuído:gcloud compute addresses describe l7-ilb-ip-address \ --region=us-west1
Crie um back-end de grupo de instâncias de VM geridas
Esta secção mostra como criar um modelo de grupo de instâncias e um grupo de instâncias gerido. O grupo de instâncias geridas fornece instâncias de VMs que executam os servidores de back-end de um exemplo de balanceador de carga de aplicações interno regional. Para o seu grupo de instâncias, pode definir um serviço HTTP e mapear um nome de porta para a porta relevante. O serviço de back-end do balanceador de carga encaminha o tráfego para as portas denominadas. O tráfego dos clientes é balanceado por carga para servidores de back-end. Para fins de demonstração, os back-ends publicam os seus próprios nomes de anfitriões.
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
l7-ilb-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 os seguintes campos:
- Para Etiquetas de rede, introduza
allow-ssh
eload-balanced-backend
. - Para Interfaces de rede, selecione o seguinte:
- Rede:
lb-network
- Subnet:
backend-subnet
- Rede:
- 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. Na Google Cloud consola, aceda à página Grupos de instâncias.
- Clique em Criar grupo de instâncias.
- Selecione Novo grupo de instâncias gerido (sem estado). Para mais informações, consulte os grupos de instâncias geridas com estado.
- Em Nome, introduza
l7-ilb-backend-example
. - Para Localização, selecione Zona única.
- Para Região, selecione
us-west1
. - Para Zona, selecione
us-west1-a
. - Para Modelo de instância, selecione
l7-ilb-backend-template
. Especifique o número de instâncias que quer criar no grupo.
Para este exemplo, especifique as seguintes opções em Ajuste automático de escala:
- Para o Modo de ajuste automático de escala, selecione
Off:do not autoscale
. - Para Número máximo de instâncias, introduza
2
.
Opcionalmente, na secção Ajuste de escala automático da IU, pode configurar o grupo de instâncias para adicionar ou remover automaticamente instâncias com base na utilização do CPU das instâncias.
- Para o Modo de ajuste automático de escala, selecione
Clique em Criar.
gcloud
As instruções gcloud
neste guia pressupõem que está a usar o Cloud Shell ou outro ambiente com o bash instalado.
Crie um modelo de instância de VM com um servidor HTTP com o comando
gcloud compute instance-templates create
.gcloud compute instance-templates create l7-ilb-backend-template \ --region=us-west1 \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --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 um grupo de instâncias gerido na zona com o comando
gcloud compute instance-groups managed create
.gcloud compute instance-groups managed create l7-ilb-backend-example \ --zone=us-west1-a \ --size=2 \ --template=l7-ilb-backend-template
API
Crie o modelo de instância com o método instanceTemplates.insert
, substituindo PROJECT_ID
pelo ID do projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name":"l7-ilb-backend-template", "properties":{ "machineType":"e2-standard-2", "tags":{ "items":[ "allow-ssh", "load-balanced-backend" ] }, "metadata":{ "kind":"compute#metadata", "items":[ { "key":"startup-script", "value":"#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\n vm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\n echo \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2" } ] }, "networkInterfaces":[ { "network":"projects/PROJECT_ID/global/networks/lb-network", "subnetwork":"regions/us-west1/subnetworks/backend-subnet", "accessConfigs":[ { "type":"ONE_TO_ONE_NAT" } ] } ], "disks":[ { "index":0, "boot":true, "initializeParams":{ "sourceImage":"projects/debian-cloud/global/images/family/debian-12" }, "autoDelete":true } ] } }
Crie um grupo de instâncias gerido em cada zona com o método instanceGroupManagers.insert
, substituindo PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/{zone}/instanceGroupManagers { "name": "l7-ilb-backend-example", "zone": "projects/PROJECT_ID/zones/us-west1-a", "instanceTemplate": "projects/PROJECT_ID/global/instanceTemplates/l7-ilb-backend-template", "baseInstanceName": "l7-ilb-backend-example", "targetSize": 2 }
Configure o balanceador de carga
Este exemplo mostra como criar os seguintes recursos do balanceador de carga de aplicações interno regional:
- Verificação de funcionamento de HTTP
- Serviço de back-end com um grupo de instâncias geridas como back-end
- Um mapa de URLs
- Certifique-se de que faz referência a um mapa de URLs regional se for definida uma região para o proxy HTTP(S) de destino. Um mapa de URLs regional encaminha pedidos para um serviço de back-end regional com base em regras que define para o anfitrião e o caminho de um URL recebido. Um mapa de URLs regional só pode ser referenciado por uma regra de proxy de destino regional na mesma região.
- Certificado SSL (para HTTPS)
- Proxy de destino
- Regra de encaminhamento
Disponibilidade do proxy
Por vezes, Google Cloud as regiões não têm capacidade de proxy suficiente para um novo balanceador de carga. Se isto acontecer, a Google Cloud consola apresenta uma mensagem de aviso de disponibilidade de proxy quando estiver a criar o equilibrador de carga. Para resolver este problema, pode fazer uma das seguintes ações:
- Selecione uma região diferente para o balanceador de carga. Esta pode ser uma opção prática se tiver back-ends noutra região.
- Selecione uma rede de VPC que já tenha uma sub-rede apenas de proxy atribuída.
Aguarde pela resolução do problema de capacidade.
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 Interno e clique em Seguinte.
- Para a Implementação em várias regiões ou numa única região, selecione Melhor para cargas de trabalho regionais e clique em Seguinte.
- Clique em Configurar.
Configuração básica
- Para o Nome do balanceador de carga, introduza
l7-ilb-map
. - Para Região, selecione
us-west1
. - Para Rede, selecione
lb-network
.
Reserve uma sub-rede só de proxy
Reserve uma sub-rede só de proxy:
- Clique em Reservar uma sub-rede.
- Em Nome, introduza
proxy-only-subnet
. - Para o Intervalo de endereços IP, introduza
10.129.0.0/23
. - Clique em Adicionar.
Configure o serviço de back-end
- Clique em Configuração de back-end.
- No menu Criar ou selecionar serviços de back-end, selecione Criar um serviço de back-end.
- Defina o nome do serviço de back-end como
l7-ilb-backend-service
. - Defina o Tipo de back-end como Grupo de instâncias.
- Na secção Novo back-end:
- Defina Grupo de instâncias como
l7-ilb-backend-example
. - Defina Transferir números como
80
. - Defina o Modo de equilíbrio como Utilização.
- Clique em Concluído.
- Defina Grupo de instâncias como
- Na lista Verificação do estado, clique em Criar uma verificação do estado com os seguintes parâmetros:
- Nome:
l7-ilb-basic-check
- Protocolo:
HTTP
- Porta:
80
- Clique em Guardar.
- Nome:
-
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
- Clique em Criar.
Configure o mapa de URLs
Clique em Regras de anfitrião e caminho.
Para Modo, selecione Regra de anfitrião e caminho simples.
Certifique-se de que o
l7-ilb-backend-service
é o único serviço de back-end para qualquer anfitrião não correspondente e qualquer caminho não correspondente.
Para ver informações sobre a gestão de tráfego, consulte o artigo Configure a gestão de tráfego para balanceadores de carga de aplicações internos.
Configure a interface
Para HTTP:
- Clique em Configuração do front-end.
- Defina o nome da regra de encaminhamento como
l7-ilb-forwarding-rule
. - Defina Protocol como
HTTP
. - Defina Subnetwork como
backend-subnet
. - Defina a Porta para
80
. - Na lista Endereço IP, selecione
l7-ilb-ip-address
. - Clique em Concluído.
Para HTTPS:
- Clique em Configuração do front-end.
- Defina o nome da regra de encaminhamento como
l7-ilb-forwarding-rule
. - Defina Protocol como
HTTPS (includes HTTP/2)
. - Defina Subnetwork como
backend-subnet
. - Certifique-se de que a Porta está definida como
443
para permitir o tráfego HTTPS. - Na lista Endereço IP, selecione
l7-ilb-ip-address
. - Clique na lista Certificado.
- Se já tiver um recurso de certificado SSL autogerido que quer usar como certificado SSL principal, selecione-o na lista.
- Caso contrário, selecione Criar um novo certificado.
- Defina o nome do certificado como
l7-ilb-cert
. - Nos campos adequados, carregue os seus ficheiros formatados em PEM:
- Certificado de chave pública
- Cadeia de certificados
- Chave privada
- Clique em Criar.
- Defina o nome do certificado como
- Para adicionar recursos de certificados além do recurso de certificado SSL principal:
- Clique em Adicionar certificado.
- Selecione um certificado na lista Certificados ou clique em Criar um novo certificado e siga as instruções.
Selecione uma política SSL na lista Política SSL. Opcionalmente, para criar uma política de SSL, faça o seguinte:
- Na lista Política de SSL, selecione Criar uma política.
- Introduza um nome para a política SSL.
- Selecione uma versão de TLS mínima. O valor predefinido é TLS 1.0.
- Selecione um dos perfis pré-configurados geridos pela Google ou selecione um perfil Personalizado que lhe permite selecionar funcionalidades SSL individualmente. São apresentadas as Funcionalidades ativadas e as Funcionalidades desativadas.
- Clique em Guardar.
Se não tiver criado políticas de SSL, é aplicada uma política de SSL Google Cloud predefinida Google Cloud .
Clique em Concluído.
Reveja a configuração
- 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 equilibrador de carga.
- Clique em Criar.
gcloud
Defina a verificação de funcionamento de HTTP com o comando
gcloud compute health-checks create http
.gcloud compute health-checks create http l7-ilb-basic-check \ --region=us-west1 \ --use-serving-port
Defina o serviço de back-end com o comando
gcloud compute backend-services create
.gcloud compute backend-services create l7-ilb-backend-service \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=l7-ilb-basic-check \ --health-checks-region=us-west1 \ --region=us-west1
Adicione back-ends ao serviço de back-end com o comando
gcloud compute backend-services add-backend
.gcloud compute backend-services add-backend l7-ilb-backend-service \ --balancing-mode=UTILIZATION \ --instance-group=l7-ilb-backend-example \ --instance-group-zone=us-west1-a \ --region=us-west1
Crie o mapa de URLs com o comando
gcloud compute url-maps create
.gcloud compute url-maps create l7-ilb-map \ --default-service=l7-ilb-backend-service \ --region=us-west1
Crie o proxy de destino.
Para HTTP:
Para um balanceador de carga HTTP interno, crie o proxy de destino com o comando
gcloud compute target-http-proxies create
.gcloud compute target-http-proxies create l7-ilb-proxy \ --url-map=l7-ilb-map \ --url-map-region=us-west1 \ --region=us-west1
Para HTTPS:
Pode criar certificados do Compute Engine ou do Certificate Manager. Use qualquer um dos seguintes métodos para criar certificados através do gestor de certificados:
- Certificados autogeridos regionais. Para obter informações sobre como criar e usar certificados autogeridos regionais, consulte Implemente um certificado autogerido regional. Os mapas de certificados não são suportados.
Certificados geridos pela Google regionais. Os mapas de certificados não são suportados.
Os seguintes tipos de certificados regionais geridos pela Google são suportados pelo Gestor de certificados:
- Certificados geridos pela Google regionais com autorização de DNS por projeto. Para mais informações, consulte o artigo Implemente um certificado gerido pela Google regional com autorização de DNS.
- Certificados (privados) geridos pela Google regionais com o serviço de autoridade de certificação. Para mais informações, consulte o artigo Implemente um certificado gerido pela Google com o serviço de autoridade de certificação.
Depois de criar os certificados, anexe-os diretamente ao proxy de destino.
Atribua os caminhos de ficheiros a nomes de variáveis.
export LB_CERT=path to PEM-formatted file
export LB_PRIVATE_KEY=path to PEM-formatted file
Crie um certificado SSL regional com o comando
gcloud compute ssl-certificates create
.gcloud compute ssl-certificates create l7-ilb-cert \ --certificate=$LB_CERT \ --private-key=$LB_PRIVATE_KEY \ --region=us-west1
Use o certificado SSL regional para criar um proxy de destino com o comando
gcloud compute target-https-proxies create
.gcloud compute target-https-proxies create l7-ilb-proxy \ --url-map=l7-ilb-map \ --region=us-west1 \ --ssl-certificates=l7-ilb-cert
Crie a regra de encaminhamento.
Para redes personalizadas, tem de fazer referência à sub-rede na regra de encaminhamento. Tenha em atenção que esta é a sub-rede da VM e não a sub-rede do proxy.
Para HTTP:
Use o comando
gcloud compute forwarding-rules create
com as flags corretas.gcloud compute forwarding-rules create l7-ilb-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --address=l7-ilb-ip-address \ --ports=80 \ --region=us-west1 \ --target-http-proxy=l7-ilb-proxy \ --target-http-proxy-region=us-west1
Para HTTPS:
Crie a regra de encaminhamento com o comando
gcloud compute forwarding-rules create
com os sinalizadores corretos.gcloud compute forwarding-rules create l7-ilb-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --address=l7-ilb-ip-address \ --ports=443 \ --region=us-west1 \ --target-https-proxy=l7-ilb-proxy \ --target-https-proxy-region=us-west1
API
Crie a verificação de funcionamento fazendo um pedido POST
ao método
regionHealthChecks.insert
, substituindo PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/{region}/healthChecks { "name": "l7-ilb-basic-check", "type": "HTTP", "httpHealthCheck": { "portSpecification": "USE_SERVING_PORT" } }
Crie o serviço de back-end regional fazendo um pedido POST
ao método regionBackendServices.insert
, substituindo PROJECT_ID
pelo ID do projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "l7-ilb-backend-service", "backends": [ { "group": "projects/PROJECT_ID/zones/us-west1-a/instanceGroups/l7-ilb-backend-example", "balancingMode": "UTILIZATION" } ], "healthChecks": [ "projects/PROJECT_ID/regions/us-west1/healthChecks/l7-ilb-basic-check" ], "loadBalancingScheme": "INTERNAL_MANAGED" }
Crie o mapa de URLs fazendo um pedido POST
ao método regionUrlMaps.insert
, substituindo PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/urlMaps { "name": "l7-ilb-map", "defaultService": "projects/PROJECT_ID/regions/us-west1/backendServices/l7-ilb-backend-service" }
Para HTTP:
Crie o proxy HTTP de destino fazendo um pedido POST
ao método regionTargetHttpProxies.insert
, substituindo PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/targetHttpProxy { "name": "l7-ilb-proxy", "urlMap": "projects/PROJECT_ID/global/urlMaps/l7-ilb-map", "region": "us-west1" }
Crie a regra de encaminhamento fazendo um pedido POST
ao método forwardingRules.insert
, substituindo PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "l7-ilb-forwarding-rule", "IPAddress": "IP_ADDRESS", "IPProtocol": "TCP", "portRange": "80-80", "target": "projects/PROJECT_ID/regions/us-west1/targetHttpProxies/l7-ilb-proxy", "loadBalancingScheme": "INTERNAL_MANAGED", "subnetwork": "projects/PROJECT_ID/regions/us-west1/subnetworks/backend-subnet", "network": "projects/PROJECT_ID/global/networks/lb-network", "networkTier": "PREMIUM" }
Para HTTPS:
Pode criar certificados do Compute Engine ou do Certificate Manager. Use qualquer um dos seguintes métodos para criar certificados através do gestor de certificados:
- Certificados autogeridos regionais. Para obter informações sobre como criar e usar certificados autogeridos regionais, consulte Implemente um certificado autogerido regional. Os mapas de certificados não são suportados.
Certificados geridos pela Google regionais. Os mapas de certificados não são suportados.
Os seguintes tipos de certificados regionais geridos pela Google são suportados pelo Gestor de certificados:
- Certificados geridos pela Google regionais com autorização de DNS por projeto. Para mais informações, consulte o artigo Implemente um certificado gerido pela Google regional com autorização de DNS.
- Certificados (privados) geridos pela Google regionais com o serviço de autoridade de certificação. Para mais informações, consulte o artigo Implemente um certificado gerido pela Google com o serviço de autoridade de certificação.
Depois de criar os certificados, anexe-os diretamente ao proxy de destino.
Ler os ficheiros de certificado e chave privada e, em seguida, criar o certificado SSL. O exemplo seguinte mostra como o fazer com Python.
Crie o proxy HTTPS de destino fazendo um pedido POST
ao método
regionTargetHttpsProxies.insert
, substituindo PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionTargetHttpsProxy { "name": "l7-ilb-proxy", "urlMap": "projects/PROJECT_ID/regions/us-west1/urlMaps/l7-ilb-map", "sslCertificates": /projects/PROJECT_ID/regions/us-west1/sslCertificates/SSL_CERT_NAME }
Crie a regra de encaminhamento fazendo um pedido POST
ao método forwardingRules.insert
, substituindo PROJECT_ID
pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "l7-ilb-forwarding-rule", "IPAddress": "IP_ADDRESS", "IPProtocol": "TCP", "portRange": "80-80", "target": "projects/PROJECT_ID/regions/us-west1/targetHttpsProxies/l7-ilb-proxy", "loadBalancingScheme": "INTERNAL_MANAGED", "subnetwork": "projects/PROJECT_ID/regions/us-west1/subnetworks/backend-subnet", "network": "projects/PROJECT_ID/global/networks/lb-network", "networkTier": "PREMIUM", }
Teste o balanceador de carga
Para testar o balanceador de carga, crie uma VM de cliente. Em seguida, estabeleça uma sessão SSH com a VM e envie tráfego da VM para o balanceador de carga.
Crie uma instância de VM para testar a conetividade
Consola
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique em Criar instância.
Defina Nome como
l7-ilb-client-us-west1-a
.Defina a zona como
us-west1-a
.Clique em Opções avançadas.
Clique em Rede e configure os seguintes campos:
- Para etiquetas de rede, introduza
allow-ssh
. - Para Interfaces de rede, selecione o seguinte:
- Rede:
lb-network
- Subnet:
backend-subnet
- Rede:
- Para etiquetas de rede, introduza
Clique em Criar.
gcloud
gcloud compute instances create l7-ilb-client-us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=lb-network \ --subnet=backend-subnet \ --zone=us-west1-a \ --tags=allow-ssh
Envie tráfego para o balanceador de carga
Inicie sessão na instância que acabou de criar e teste se os serviços HTTP(S) nos back-ends estão acessíveis através do endereço IP da regra de encaminhamento do Application Load Balancer interno regional e se o tráfego está a ser balanceado de carga nas instâncias de back-end.
Ligue-se através de SSH a cada instância do cliente
gcloud compute ssh l7-ilb-client-us-west1-a \ --zone=us-west1-a
Obtenha o endereço IP do balanceador de carga
Use o gcloud compute addresses describe
comando
para ver o endereço IP atribuído:
gcloud compute addresses describe l7-ilb-ip-address \ --region=us-west1
Verifique se o endereço IP está a publicar o respetivo nome do anfitrião
Substitua IP_ADDRESS
pelo endereço IP do balanceador de carga.
Para testes HTTP:
curl IP_ADDRESS
Para testes HTTPS:
curl -k -s 'https://DOMAIN_NAME:443' --connect-to DOMAIN_NAME:443:IP_ADDRESS:443
Substitua DOMAIN_NAME
pelo nome do domínio da sua aplicação, por exemplo, test.example.com
.
A flag -k
faz com que o curl ignore a validação de certificados.
Execute 100 pedidos e confirme que têm o balanceamento de carga
Substitua IP_ADDRESS
pelo endereço IP do balanceador de carga.
Para HTTP:
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl --silent IP_ADDRESS)" done echo "***" echo "*** Results of load-balancing: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
Para HTTPS:
Substitua DOMAIN_NAME
pelo nome do domínio da sua aplicação, por exemplo, test.example.com
.
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl -k -s 'https://DOMAIN_NAME:443' --connect-to DOMAIN_NAME:443:IP_ADDRESS:443)" done echo "***" echo "*** Results of load-balancing: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
Opções de configuração adicionais
Esta secção expande o exemplo de configuração para oferecer opções de configuração alternativas e adicionais. Todas as tarefas são opcionais. Pode realizá-las por qualquer ordem.
Ative o acesso global
Pode ativar o acesso global
para o Application Load Balancer interno regional e o Network Load Balancer de proxy interno regional para os tornar
acessíveis a clientes em todas as regiões. Os back-ends do balanceador de carga de exemplo têm de estar
localizados numa região (us-west1
).
Não pode modificar uma regra de encaminhamento regional existente para ativar o acesso global. Tem de criar uma nova regra de encaminhamento para este fim e eliminar a regra de encaminhamento anterior. Além disso, depois de criar uma regra de encaminhamento com o acesso global ativado, não é possível modificá-la. Para desativar o acesso global, tem de criar uma nova regra de encaminhamento de acesso regional e eliminar a regra de encaminhamento de acesso global anterior.
Para configurar o acesso global, faça as seguintes alterações de configuração.
Consola
Crie uma nova regra de encaminhamento para o balanceador de carga:
Na Google Cloud consola, aceda à página Equilíbrio de carga.
Na coluna Nome, clique no equilibrador de carga.
Clique em Configuração do front-end.
Clique em Adicionar IP e porta do front-end.
Introduza o nome e os detalhes da sub-rede para a nova regra de encaminhamento.
Para Sub-rede, selecione backend-subnet.
Para o Endereço IP, pode selecionar o mesmo endereço IP que uma regra de encaminhamento existente, reservar um novo endereço IP ou usar um endereço IP efémero. A partilha do mesmo endereço IP em várias regras de encaminhamento só é possível se definir a flag
--purpose
do endereço IP comoSHARED_LOADBALANCER_VIP
ao criar o endereço IP.Em Número da porta, introduza
110
.Para Acesso global, selecione Ativar.
Clique em Concluído.
Clique em Atualizar.
gcloud
Crie uma nova regra de encaminhamento para o balanceador de carga com a flag
--allow-global-access
.Para HTTP:
gcloud compute forwarding-rules create l7-ilb-forwarding-rule-global-access \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --address=10.1.2.99 \ --ports=80 \ --region=us-west1 \ --target-http-proxy=l7-ilb-proxy \ --target-http-proxy-region=us-west1 \ --allow-global-access
Para HTTPS:
gcloud compute forwarding-rules create l7-ilb-forwarding-rule-global-access \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --address=10.1.2.99 \ --ports=443 \ --region=us-west1 \ --target-https-proxy=l7-ilb-proxy \ --target-https-proxy-region=us-west1 \ --allow-global-access
Pode usar o comando
gcloud compute forwarding-rules describe
para determinar se uma regra de encaminhamento tem o acesso global ativado. Por exemplo:gcloud compute forwarding-rules describe l7-ilb-forwarding-rule-global-access \ --region=us-west1 \ --format="get(name,region,allowGlobalAccess)"
Quando o acesso global está ativado, a palavra
True
aparece no resultado após o nome e a região da regra de encaminhamento.
Crie uma VM cliente para testar o acesso global
Consola
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique em Criar instância.
Defina Nome como
europe-client-vm
.Defina a zona como
europe-west1-b
.Clique em Opções avançadas.
Clique em Rede e configure os seguintes campos:
- Para etiquetas de rede, introduza
allow-ssh
. - Para Interfaces de rede, selecione o seguinte:
- Rede:
lb-network
- Subnet:
europe-subnet
- Rede:
- Para etiquetas de rede, introduza
Clique em Criar.
gcloud
Crie uma VM de cliente na zona europe-west1-b
.
gcloud compute instances create europe-client-vm \ --zone=europe-west1-b \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=europe-subnet
Ligue-se ao cliente de VM e teste a conetividade
Use
ssh
para se ligar à instância do cliente.gcloud compute ssh europe-client-vm \ --zone=europe-west1-b
Teste as ligações ao balanceador de carga, tal como fez a partir da região
vm-client
us-west1
.curl http://10.1.2.99
Ative a afinidade de sessão
Estes procedimentos mostram como atualizar um serviço de back-end para o exemplo de balanceador de carga de aplicações interno regional ou balanceador de carga de aplicações interno entre regiões, de modo que o serviço de back-end use afinidade de cookies gerados, afinidade de campos de cabeçalho ou afinidade de cookies HTTP.
Quando a afinidade de cookie gerado está ativada, o equilibrador de carga emite um cookie no primeiro pedido. Para cada pedido subsequente com o mesmo cookie, o balanceador de carga direciona o pedido para a mesma instância de máquina virtual (VM) ou ponto final de back-end. Neste exemplo, o cookie tem o nome GCILB
.
Quando a afinidade do campo de cabeçalho está ativada, o balanceador de carga encaminha pedidos para VMs ou pontos finais de back-end num grupo de pontos finais de rede (NEG) com base no valor do cabeçalho HTTP denominado no parâmetro --custom-request-header
.
A afinidade do campo de cabeçalho só é válida se a política de localidade de equilíbrio de carga for RING_HASH
ou MAGLEV
e o hash consistente do serviço de back-end especificar o nome do cabeçalho HTTP.
Quando a afinidade de cookies HTTP está ativada, o balanceador de carga encaminha pedidos para VMs ou pontos finais de back-end num NEG, com base num cookie HTTP denominado no parâmetro HTTP_COOKIE
com o parâmetro --affinity-cookie-ttl
opcional. Se o cliente não fornecer o cookie no respetivo pedido HTTP, o proxy gera o cookie e devolve-o ao cliente num cabeçalho Set-Cookie
. A afinidade de cookies HTTP só é válida se a política de localidade de equilíbrio de carga for RING_HASH
ou MAGLEV
e o hash consistente do serviço de back-end especificar o cookie HTTP.
Consola
Para ativar ou alterar a afinidade de sessão para um serviço de back-end:
Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique em Back-ends.
- Clique em l7-ilb-backend-service (o nome do serviço de back-end que criou para este exemplo) e clique em Editar.
- Na página Detalhes do serviço de back-end, clique em Configuração avançada.
- Em Afinidade de sessão, selecione o tipo de afinidade de sessão que quer.
- Clique em Atualizar.
gcloud
Use os seguintes comandos da CLI gcloud para atualizar o serviço de back-end para diferentes tipos de afinidade de sessão:
gcloud compute backend-services update l7-ilb-backend-service \ --session-affinity=[GENERATED_COOKIE | HEADER_FIELD | HTTP_COOKIE | CLIENT_IP] \ --region=us-west1
API
Para definir a afinidade da sessão, faça um pedido `PATCH` ao método
backendServices/patch
.
PATCH https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/us-west1/regionBackendServices/l7-ilb-backend-service { "sessionAffinity": ["GENERATED_COOKIE" | "HEADER_FIELD" | "HTTP_COOKIE" | "CLIENT_IP" ] }
Restrinja os clientes que podem enviar tráfego para o balanceador de carga
Pode restringir a ligação de clientes a um VIP de regra de encaminhamento do Application Load Balancer interno configurando regras de firewall de saída nestes clientes. Defina estas regras de firewall em VMs de cliente específicas com base em contas de serviço ou etiquetas.
Não pode usar regras de firewall para restringir o tráfego de entrada a VIPs de regras de encaminhamento de balanceadores de carga de aplicações internos específicos. Geralmente, qualquer cliente na mesma rede VPC e na mesma região que o VIP da regra de encaminhamento pode enviar tráfego para o VIP da regra de encaminhamento.
Além disso, todos os pedidos para back-ends provêm de proxies que usam endereços IP no intervalo de sub-rede apenas de proxy. Não é possível criar regras de firewall que permitam ou neguem o tráfego de entrada nestes back-ends com base no VIP da regra de encaminhamento usado por um cliente.
Seguem-se alguns exemplos de como usar regras de firewall de saída para restringir o tráfego ao VIP da regra de encaminhamento do equilibrador de carga.
Consola
Para identificar as VMs de cliente, etiquete as VMs específicas que quer restringir. Estas etiquetas são usadas para associar regras de firewall às VMs de cliente etiquetadas. Em seguida, adicione a etiqueta ao campo TARGET_TAG
nos passos seguintes.
Use uma única regra de firewall ou várias regras para configurar esta opção.
Regra de firewall de saída única
Pode configurar uma regra de saída da firewall para negar todo o tráfego de saída que vai das VMs de cliente etiquetadas para o VIP de um equilibrador de carga.
Na Google Cloud consola, aceda à página Regras de firewall.
Clique em Criar regra de firewall para criar a regra que recusa o tráfego de saída de VMs de cliente etiquetadas para o VIP de um balanceador de carga.
- Nome:
fr-deny-access
- Rede:
lb-network
- Prioridade:
100
- Direção do tráfego: saída
- Ação na correspondência: Recusar
- Objetivos: etiquetas de destino especificadas
- Etiquetas de segmentação:
TARGET_TAG
- Filtro de destino: Intervalos de IP
- Intervalos de IP de destino:
10.1.2.99
- Protocolos e portas:
- Escolha Protocolos e portas especificados.
- Selecione a caixa de verificação tcp e, de seguida, introduza
80
para o número da porta.
- Nome:
Clique em Criar.
Várias regras de firewall de saída
Uma abordagem mais escalável envolve a definição de duas regras. Uma regra predefinida de baixa prioridade que restringe o acesso de todos os clientes ao VIP do equilibrador de carga. Uma segunda regra de prioridade mais elevada que permite que um subconjunto de clientes etiquetados aceda ao VIP do balanceador de carga. Apenas as VMs etiquetadas podem aceder ao VIP.
Na Google Cloud consola, aceda à página Regras de firewall.
Clique em Criar regra de firewall para criar a regra de prioridade inferior para negar o acesso por predefinição:
- Nome:
fr-deny-all-access-low-priority
- Rede:
lb-network
- Prioridade:
200
- Direção do tráfego: saída
- Ação na correspondência: Recusar
- Objetivos: etiquetas de destino especificadas
- Etiquetas de segmentação:
TARGET_TAG
- Filtro de destino: Intervalos de IP
- Intervalos de IP de destino:
10.1.2.99
- Protocolos e portas:
- Escolha Protocolos e portas especificados.
- Selecione a caixa de verificação TCP e, de seguida, introduza
80
para o número da porta.
- Nome:
Clique em Criar.
Clique em Criar regra de firewall para criar a regra de prioridade mais elevada para permitir tráfego de determinadas instâncias etiquetadas.
- Nome:
fr-allow-some-access-high-priority
- Rede:
lb-network
- Prioridade:
100
- Direção do tráfego: saída
- Ação na correspondência: Permitir
- Objetivos: etiquetas de destino especificadas
- Etiquetas de segmentação:
TARGET_TAG
- Filtro de destino: Intervalos de IP
- Intervalos de IP de destino:
10.1.2.99
- Protocolos e portas:
- Escolha Protocolos e portas especificados.
- Selecione a caixa de verificação TCP e, de seguida, introduza
80
para o número da porta.
- Nome:
Clique em Criar.
gcloud
Para identificar as VMs de cliente, etiquete as VMs específicas que quer restringir. Em seguida, adicione a etiqueta ao campo TARGET_TAG
nestes passos.
Use uma única regra de firewall ou várias regras para configurar esta opção.
Regra de firewall de saída única
Pode configurar uma regra de saída da firewall para negar todo o tráfego de saída que vai das VMs de cliente etiquetadas para o VIP de um equilibrador de carga.
gcloud compute firewall-rules create fr-deny-access \ --network=lb-network \ --action=deny \ --direction=egress \ --rules=tcp \ --priority=100 \ --destination-ranges=10.1.2.99 \ --target-tags=TARGET_TAG
Várias regras de firewall de saída
Uma abordagem mais escalável envolve a definição de duas regras: uma regra predefinida de baixa prioridade que restringe o acesso de todos os clientes ao VIP do balanceador de carga e uma segunda regra de prioridade mais elevada que permite que um subconjunto de clientes etiquetados aceda ao VIP do balanceador de carga. Apenas as VMs etiquetadas podem aceder ao VIP.
Crie a regra de prioridade inferior:
gcloud compute firewall-rules create fr-deny-all-access-low-priority \ --network=lb-network \ --action=deny \ --direction=egress \ --rules=tcp \ --priority=200 \ --destination-ranges=10.1.2.99
Crie a regra de prioridade mais elevada:
gcloud compute firewall-rules create fr-allow-some-access-high-priority \ --network=lb-network \ --action=allow \ --direction=egress \ --rules=tcp \ --priority=100 \ --destination-ranges=10.1.2.99 \ --target-tags=TARGET_TAG
Para usar contas de serviço em vez de etiquetas para controlar o acesso, use a opção --target-service-accounts
em vez da flag --target-tags
ao criar regras de firewall.
Dimensione o acesso restrito a back-ends do balanceador de carga de aplicações internos com base em sub-redes
A manutenção de regras de firewall separadas ou a adição de novos endereços IP com balanceamento de carga às regras existentes, conforme descrito na secção anterior, torna-se inconveniente à medida que o número de regras de encaminhamento aumenta. Uma forma de evitar esta situação é atribuir endereços IP de regras de encaminhamento a partir de uma sub-rede reservada. Em seguida, o tráfego de instâncias etiquetadas ou contas de serviço pode ser permitido ou bloqueado através da sub-rede reservada como o intervalo de destino para regras de firewall. Isto permite-lhe controlar eficazmente o acesso a um grupo de VIPs de regras de encaminhamento sem ter de manter regras de saída da firewall por VIP.
Seguem-se os passos gerais para configurar esta opção, partindo do princípio de que vai criar todos os outros recursos do balanceador de carga necessários separadamente.
gcloud
Crie uma sub-rede regional para usar na atribuição de endereços IP com balanceamento de carga para regras de encaminhamento:
gcloud compute networks subnets create l7-ilb-restricted-subnet \ --network=lb-network \ --region=us-west1 \ --range=10.127.0.0/24
Crie uma regra de encaminhamento que obtenha um endereço da sub-rede. O exemplo seguinte usa o endereço
10.127.0.1
da sub-rede criada no passo anterior.gcloud compute forwarding-rules create l7-ilb-forwarding-rule-restricted \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=l7-ilb-restricted-subnet \ --address=10.127.0.1 \ --ports=80 \ --region=us-west1 \ --target-http-proxy=l7-ilb-proxy \ --target-http-proxy-region=us-west1
Crie uma regra de firewall para restringir o tráfego destinado aos endereços IP no intervalo da sub-rede da regra de encaminhamento (
l7-ilb-restricted-subnet
):gcloud compute firewall-rules create restrict-traffic-to-subnet \ --network=lb-network \ --action=deny \ --direction=egress \ --rules=tcp:80 \ --priority=100 \ --destination-ranges=10.127.0.0/24 \ --target-tags=TARGET_TAG
Configure a restrição de subconjuntos do back-end
A restrição de subconjuntos no back-end melhora o desempenho e a escalabilidade ao atribuir um subconjunto de back-ends a cada uma das instâncias de proxy. Quando ativada para um serviço de back-end, a subdivisão do back-end ajusta o número de back-ends usados por cada instância de proxy da seguinte forma:
À medida que o número de instâncias de proxy que participam no equilibrador de carga aumenta, o tamanho do subconjunto diminui.
Quando o número total de back-ends numa rede excede a capacidade de uma instância de proxy única, o tamanho do subconjunto é reduzido automaticamente para cada serviço que tenha a subdivisão de back-ends ativada.
Este exemplo mostra como criar recursos do balanceador de carga de aplicações interno regional e ativar a divisão em subconjuntos de back-ends:
- Use a configuração de exemplo
para criar um serviço de back-end regional
l7-ilb-backend-service
. Ative a restrição de subconjuntos de back-end especificando a flag
--subsetting-policy
comoCONSISTENT_HASH_SUBSETTING
. Defina o esquema de balanceamento de carga paraINTERNAL_MANAGED
.gcloud
Use o seguinte comando
gcloud
para atualizarl7-ilb-backend-service
com a restrição de subconjuntos no back-end:gcloud beta compute backend-services update l7-ilb-backend-service \ --region=us-west1 \ --subsetting-policy=CONSISTENT_HASH_SUBSETTING
API
Faça um pedido
PATCH
ao métodoregionBackendServices/patch
.PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-west1/backendServices/l7-ilb-backend-service { "subsetting": { "policy": CONSISTENT_HASH_SUBSETTING } }
Também pode refinar o equilíbrio de carga de back-end definindo a política localityLbPolicy
.
Para mais informações, consulte as políticas de tráfego.
Use o mesmo endereço IP entre várias regras de encaminhamento interno
Para que várias regras de encaminhamento interno partilhem o mesmo endereço IP interno, tem de reservar o endereço IP e definir a respetiva flag --purpose
como SHARED_LOADBALANCER_VIP
.
gcloud
gcloud compute addresses create SHARED_IP_ADDRESS_NAME \ --region=REGION \ --subnet=SUBNET_NAME \ --purpose=SHARED_LOADBALANCER_VIP
Atualize o tempo limite de manutenção ativa de HTTP do cliente
O balanceador de carga criado nos passos anteriores foi configurado com um valor predefinido para o tempo limite de manutenção ativa do HTTP do cliente.Para atualizar o limite de tempo limite de manutenção ativa HTTP do cliente, siga as instruções abaixo.
Consola
Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique no nome do equilibrador de carga que quer modificar.
- Clique em Editar.
- Clique em Configuração do front-end.
- Expanda Funcionalidades avançadas. Para Limite de tempo de manutenção ativa de HTTP, introduza um valor de limite de tempo.
- Clique em Atualizar.
- Para rever as alterações, clique em Rever e finalizar e, de seguida, clique em Atualizar.
gcloud
Para um balanceador de carga HTTP, atualize o proxy HTTP de destino através do comando gcloud compute target-http-proxies update
.
gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --region=REGION
Para um balanceador de carga HTTPS, atualize o proxy HTTPS de destino com o comando
gcloud compute target-https-proxies update
.
gcloud compute target-https-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --region REGION
Substitua o seguinte:
TARGET_HTTP_PROXY_NAME
: o nome do proxy HTTP de destino.TARGET_HTTPS_PROXY_NAME
: o nome do proxy HTTPS de destino.HTTP_KEEP_ALIVE_TIMEOUT_SEC
: o valor de tempo limite de manutenção ativa de HTTP de 5 para 600 segundos.
O que se segue?
- Converta o balanceador de carga de aplicações para IPv6
- Vista geral do balanceador de carga de aplicações interno
- Sub-redes só de proxy para balanceadores de carga baseados no Envoy
- Substitua ou renove um certificado SSL antes que expire
- Limpe uma configuração de equilíbrio de carga