Este guia usa um exemplo para ensinar a configurar a comutação por falha para um Google Cloud Network Load Balancer de encaminhamento interno. Antes de seguir este guia, familiarize-se com o seguinte:
- Conceitos do balanceador de carga de rede de encaminhamento interno
- Conceitos de comutação por falha para balanceadores de carga de rede de passagem interna
- Vista geral das regras de firewall
- Conceitos de verificação de saúde
Autorizações
Para seguir este guia, tem de criar instâncias e modificar uma rede num projeto. Deve ser proprietário ou editor do projeto, ou ter todas as seguintes funções do IAM do Compute Engine:
| Tarefa | Função necessária |
|---|---|
| Crie redes, sub-redes e componentes do balanceador de carga | Administrador da rede |
| Adicione e remova regras de firewall | Administrador de segurança |
| Crie instâncias | Administrador de instâncias do Compute |
Para mais informações, consulte os seguintes guias:
Configuração
Este guia mostra como configurar e testar um Network Load Balancer de encaminhamento interno que usa a comutação por falha. Os passos nesta secção descrevem como configurar o seguinte:
- Uma rede VPC de exemplo com sub-redes personalizadas
- Regras de firewall que permitem ligações recebidas a VMs de back-end
- VMs de back-end:
- Um back-end principal num grupo de instâncias não gerido na zona
us-west1-a - Um back-end de alternativa num grupo de instâncias não gerido na zona
us-west1-c
- Um back-end principal num grupo de instâncias não gerido na zona
- Uma VM do cliente para testar as ligações e observar o comportamento de comutação por falha
- Os seguintes componentes do balanceador de carga de rede de encaminhamento interno:
- Uma verificação de funcionamento para o serviço de back-end
- Um serviço de back-end interno na região
us-west1para gerir a distribuição de ligações entre as VMs de back-end - Uma regra de encaminhamento interna e um endereço IP interno para o front-end do balanceador de carga
A arquitetura para este exemplo tem o seguinte aspeto:
Neste exemplo, os grupos de instâncias não geridos são usados para os back-ends principal e de alternativa. Para mais informações, consulte os grupos de instâncias suportados.
Configurar uma rede, uma região e uma sub-rede
Este exemplo usa a seguinte rede de VPC, região e sub-rede:
Rede: a rede é uma rede VPC no modo personalizado denominada
lb-network.Região: a região é
us-west1.Sub-rede: a sub-rede,
lb-subnet, usa o intervalo de IPs10.1.2.0/24.
Para criar a rede e a sub-rede de exemplo, siga estes passos.
Consola
Na Google Cloud consola, aceda à página Redes VPC.
Clique em Criar rede de VPC.
Introduza um Nome de
lb-network.Na secção Subnets (Sub-redes):
- Defina o Subnet creation mode (Modo de criação de sub-rede) como Custom (Personalizado).
- Na secção Nova sub-rede, introduza as seguintes informações:
- Nome:
lb-subnet - Região:
us-west1 - Intervalo de endereços IP:
10.1.2.0/24 - Clique em Concluído.
- Nome:
Clique em Criar.
gcloud
Crie a rede VPC personalizada:
gcloud compute networks create lb-network --subnet-mode=custom
Crie uma sub-rede na rede
lb-networkna regiãous-west1:gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
API
Faça um pedido POST ao método networks.insert.
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 Google Cloud projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks
{
"name": "lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"ipCidrRange": "10.1.2.0/24",
"privateIpGoogleAccess": false
}
Configurar regras de firewall
Este exemplo usa as seguintes regras de firewall:
fw-allow-lb-subnet: uma regra de entrada, aplicável a todos os destinos na rede VPC, que permite o tráfego de origens no intervalo10.1.2.0/24. Esta regra permite o tráfego de entrada de qualquer origem nolb-subnetpara as instâncias (VMs) que estão a ser equilibradas.fw-allow-ssh: uma regra de entrada aplicada às instâncias com balanceamento de carga, que permite a conetividade SSH de entrada na porta TCP 22 a partir de qualquer endereço. Pode escolher um intervalo de IPs de origem mais restritivo para esta regra. Por exemplo, pode especificar os intervalos de IPs dos sistemas a partir dos quais planeia iniciar sessões SSH. Este exemplo usa a etiqueta de destinoallow-sshpara 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 o tráfego dos sistemas de verificação de estado (130.211.0.0/22e35.191.0.0/16). Este exemplo usa a etiqueta de destinoallow-health-checkpara identificar as instâncias às quais deve aplicar-se. Google Cloud
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.
Consola
Na Google Cloud consola, aceda à página Políticas de firewall.
Clique em Criar regra de firewall e introduza as seguintes informações para criar a regra que permite o tráfego de sub-rede:
- Nome:
fw-allow-lb-subnet - Rede:
lb-network - Prioridade:
1000 - Direção do tráfego: entrada
- Ação na correspondência: permitir
- Alvos: todas as instâncias na rede
- Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem:
10.1.2.0/24 - Protocolos e portas: permitir tudo
- Nome:
Clique em Criar.
Clique novamente em Criar regra de firewall para criar a regra que permite ligações SSH de entrada:
- Nome:
fw-allow-ssh - Rede:
lb-network - Prioridade:
1000 - Direção do tráfego: entrada
- Ação na correspondência: permitir
- Objetivos: etiquetas de objetivo 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 e, em seguida,
escreva:
tcp:22
- Nome:
Clique em Criar.
Clique em Criar regra de firewall pela terceira vez para criar a regra que permite as Google Cloud verificações de funcionamento:
- Nome:
fw-allow-health-check - Rede:
lb-network - Prioridade:
1000 - Direção do tráfego: entrada
- Ação na correspondência: permitir
- Objetivos: etiquetas de objetivo especificadas
- Etiquetas de segmentação:
allow-health-check - Filtro de origem: intervalos IPv4
- Intervalos de IPv4 de origem:
130.211.0.0/22e35.191.0.0/16 - Protocolos e portas: permitir tudo
- Nome:
Clique em Criar.
gcloud
Crie a regra de firewall
fw-allow-lb-subnetpara permitir a comunicação de com a sub-rede:gcloud compute firewall-rules create fw-allow-lb-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmpCrie a regra de firewall
fw-allow-sshpara 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:22Crie a regra
fw-allow-health-checkpara permitir Google Cloud verificações de funcionamento.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmp
API
Crie a regra de firewall fw-allow-lb-subnet fazendo um pedido POST ao método firewalls.insert. Substitua PROJECT_ID pelo ID do seu Google Cloud projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
"name": "fw-allow-lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"priority": 1000,
"sourceRanges": [
"10.1.2.0/24"
],
"allowed": [
{
"IPProtocol": "tcp"
},
{
"IPProtocol": "udp"
},
{
"IPProtocol": "icmp"
}
],
"direction": "INGRESS",
"logConfig": {
"enable": false
},
"disabled": false
}
Crie a regra de firewall fw-allow-ssh fazendo um pedido POST ao método firewalls.insert. Substitua PROJECT_ID pelo ID do seu Google Cloud projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
"name": "fw-allow-ssh",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"priority": 1000,
"sourceRanges": [
"0.0.0.0/0"
],
"targetTags": [
"allow-ssh"
],
"allowed": [
{
"IPProtocol": "tcp",
"ports": [
"22"
]
}
],
"direction": "INGRESS",
"logConfig": {
"enable": false
},
"disabled": false
}
Crie a regra de firewall fw-allow-health-check fazendo um pedido POST ao método firewalls.insert. Substitua PROJECT_ID pelo ID do seu Google Cloud projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
"name": "fw-allow-health-check",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"priority": 1000,
"sourceRanges": [
"130.211.0.0/22",
"35.191.0.0/16"
],
"targetTags": [
"allow-health-check"
],
"allowed": [
{
"IPProtocol": "tcp"
},
{
"IPProtocol": "udp"
},
{
"IPProtocol": "icmp"
}
],
"direction": "INGRESS",
"logConfig": {
"enable": false
},
"disabled": false
}
Criar VMs de back-end e grupos de instâncias
Neste passo, vai criar as VMs de back-end e os grupos de instâncias não geridos:
- O grupo de instâncias
ig-aemus-west1-aé um back-end principal com duas VMs:vm-a1vm-a2
- O grupo de instâncias
ig-cemus-west1-cé um back-end de comutação por falha com duas VMs:vm-c1vm-c2
Os back-ends principal e de ativação pós-falha são colocados em zonas separadas para clareza das instruções e para processar a ativação pós-falha caso uma zona fique inativa.
Cada VM principal e de cópia de segurança está configurada para executar um servidor Web Apache nas portas TCP 80 e 443. A cada VM é atribuído um endereço IP interno no intervalo lb-subnet
para acesso do cliente e um endereço IP externo (público) efémero para acesso SSH.
Para obter informações sobre a remoção de endereços IP externos, consulte o artigo sobre a
remoção de endereços IP externos de VMs
de back-end.
Por predefinição, o Apache está configurado para ser associado a qualquer endereço IP. Os balanceadores de carga de rede de encaminhamento interno entregam pacotes preservando o endereço IP de destino.
Certifique-se de que o software de servidor executado nas VMs principal e de cópia de segurança está a ouvir no endereço IP da regra de encaminhamento interno do balanceador de carga. Se configurar várias regras de encaminhamento interno, certifique-se de que o seu software escuta o endereço IP interno associado a cada uma delas. O endereço IP de destino de um pacote enviado para uma VM de back-end por um balanceador de carga de rede de encaminhamento direto interno é o endereço IP interno da regra de encaminhamento.
Para simplificar as instruções, todas as VMs principais e de cópia de segurança executam o Debian GNU/Linux 12.
Consola
Crie VMs de back-end
Na Google Cloud consola, aceda à página Instâncias de VM.
Repita os passos seguintes para criar quatro VMs, usando as seguintes combinações de nomes e zonas.
- Nome:
vm-a1, zona:us-west1-a - Nome:
vm-a2, zona:us-west1-a - Nome:
vm-c1, zona:us-west1-c - Nome:
vm-c2, zona:us-west1-c
- Nome:
Clique em Criar instância.
Defina o Nome conforme indicado no passo 2.
Para a Região, escolha
us-west1e escolha uma Zona, conforme indicado no passo 2.Na secção Disco de arranque, certifique-se de que a imagem selecionada é o Debian GNU/Linux 12 (bookworm). Clique em Escolher para alterar a imagem, se necessário.
Clique em Opções avançadas.
Clique em Rede e configure os seguintes campos:
- Para Etiquetas de rede, introduza
allow-health-checkeallow-ssh. - Para Interfaces de rede, selecione o seguinte:
- Rede:
lb-network - Subnet:
lb-subnet
- Rede:
- Para Etiquetas de rede, introduza
Clique em Gestão. Introduza o seguinte script no campo Script de arranque. O conteúdo do script é idêntico para todas as quatro VMs:
#! /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 grupos de instâncias
Na Google Cloud consola, aceda à página Grupos de instâncias.
Repita os passos seguintes para criar dois grupos de instâncias não geridos, cada um com duas VMs, usando estas combinações.
- Grupo de instâncias:
ig-a, zona:us-west1-a, VMs:vm-a1evm-a2 - Grupo de instâncias:
ig-c, zona:us-west1-c, VMs:vm-c1evm-c2
- Grupo de instâncias:
Clique em Criar grupo de instâncias.
Clique em Novo grupo de instâncias não gerido.
Defina o Nome conforme indicado no passo 2.
Na secção Localização, escolha
us-west1para a Região e, em seguida, escolha uma Zona, conforme indicado no passo 2.Para Rede, introduza
lb-network.Para Sub-rede, introduza
lb-subnet.Na secção Instâncias de VM, adicione as VMs conforme indicado no passo 2.
Clique em Criar.
gcloud
Crie quatro VMs executando o seguinte comando quatro vezes, usando estas quatro combinações para
VM_NAMEeZONE. O conteúdo do script é idêntico para todas as quatro VMs.VM_NAMEdevm-a1eZONEdeus-west1-aVM_NAMEdevm-a2eZONEdeus-west1-aVM_NAMEdevm-c1eZONEdeus-west1-cVM_NAMEdevm-c2eZONEdeus-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check \ --subnet=lb-subnet \ --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 os dois grupos de instâncias não geridos em cada zona:
gcloud compute instance-groups unmanaged create ig-a \ --zone=us-west1-a gcloud compute instance-groups unmanaged create ig-c \ --zone=us-west1-cAdicione as VMs aos grupos de instâncias adequados:
gcloud compute instance-groups unmanaged add-instances ig-a \ --zone=us-west1-a \ --instances=vm-a1,vm-a2 gcloud compute instance-groups unmanaged add-instances ig-c \ --zone=us-west1-c \ --instances=vm-c1,vm-c2
API
Crie quatro VMs de back-end fazendo quatro pedidos POST ao método instances.insert.
Para as quatro VMs, use os seguintes nomes e zonas de VMs:
VM_NAMEdevm-a1eZONEdeus-west1-aVM_NAMEdevm-a2eZONEdeus-west1-aVM_NAMEdevm-c1eZONEdeus-west1-cVM_NAMEdevm-c2eZONEdeus-west1-c
Substitua o seguinte:
PROJECT_ID: o ID do seu projetoZONE: a zona da instânciaDEBIAN_IMAGE_NAME: o nome da imagem Debian para a instância. Pode obter oDEBIAN_IMAGE_NAMEatual executando o seguinte comandogcloud:gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
"name": "VM_NAME",
"tags": {
"items": [
"allow-health-check",
"allow-ssh"
]
},
"machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2",
"canIpForward": false,
"networkInterfaces": [
{
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"accessConfigs": [
{
"type": "ONE_TO_ONE_NAT",
"name": "external-nat",
"networkTier": "PREMIUM"
}
]
}
],
"disks": [
{
"type": "PERSISTENT",
"boot": true,
"mode": "READ_WRITE",
"autoDelete": true,
"deviceName": "VM_NAME",
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME",
"diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard",
"diskSizeGb": "10"
}
}
],
"metadata": {
"items": [
{
"key": "startup-script",
"value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2"
}
]
},
"scheduling": {
"preemptible": false
},
"deletionProtection": false
}
Crie dois grupos de instâncias fazendo um pedido POST ao método instanceGroups.insert. Substitua PROJECT_ID pelo ID do seu Google Cloud projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups
{
"name": "ig-a",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups
{
"name": "ig-c",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}
Adicione instâncias a cada grupo de instâncias fazendo um pedido POST ao método instanceGroups.addInstances. Substitua PROJECT_ID pelo ID do seu Google Cloud projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a/addInstances
{
"instances": [
{
"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1",
"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a2"
}
]
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c/addInstances
{
"instances": [
{
"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c1",
"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c2"
}
]
}
Criar uma VM de cliente
Este exemplo cria uma VM cliente (vm-client) na mesma região que o balanceador de carga. O cliente é usado para demonstrar como funciona a comutação por falha.
Consola
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique em Criar instância.
Defina o Nome como
vm-client.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:
lb-subnet
- Rede:
- Para etiquetas de rede, introduza
Clique em Criar.
gcloud
A VM do cliente pode estar em qualquer zona na mesma região que o balanceador de carga e pode usar qualquer sub-rede nessa região. Neste exemplo, o cliente está na zona us-west1-a e usa a mesma sub-rede usada pelas VMs principal e de
cópia de segurança.
gcloud compute instances create vm-client \
--zone=us-west1-a \
--image-family=debian-12 \
--image-project=debian-cloud \
--tags=allow-ssh \
--subnet=lb-subnet
API
Faça um pedido POST ao método
instances.insert.
Substitua o seguinte:
PROJECT_ID: o ID do seu projetoDEBIAN_IMAGE_NAME: o nome da imagem Debian para a instância. Pode obter oDEBIAN_IMAGE_NAMEatual executando o seguinte comandogcloud:gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances
{
"name": "vm-client",
"tags": {
"items": [
"allow-ssh"
]
},
"machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2",
"canIpForward": false,
"networkInterfaces": [
{
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"accessConfigs": [
{
"type": "ONE_TO_ONE_NAT",
"name": "external-nat",
"networkTier": "PREMIUM"
}
]
}
],
"disks": [
{
"type": "PERSISTENT",
"boot": true,
"mode": "READ_WRITE",
"autoDelete": true,
"deviceName": "vm-client",
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME",
"diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard",
"diskSizeGb": "10"
}
}
],
"scheduling": {
"preemptible": false
},
"deletionProtection": false
}
Configurar componentes do balanceador de carga
Estes passos configuram todos os componentes do balanceador de carga de rede de encaminhamento interno, começando pela verificação de estado e pelo serviço de back-end e, em seguida, pelos componentes de front-end:
Verificação de funcionamento: este exemplo usa uma verificação de funcionamento de HTTP que verifica simplesmente uma resposta HTTP
200(OK). Para mais informações, consulte a secção de verificações de funcionamento da vista geral do balanceador de carga de rede de encaminhamento interno.Serviço de back-end: uma vez que o exemplo passa tráfego HTTP através do balanceador de carga, a configuração especifica TCP e não UDP. Para ilustrar a comutação por falha, este serviço de back-end tem uma taxa de comutação por falha de
0.75.Regra de encaminhamento: este exemplo cria uma única regra de encaminhamento interno.
Endereço IP interno: neste exemplo, especificamos um endereço IP interno,
10.1.2.99, quando criamos a regra de encaminhamento.
Consola
Inicie a configuração
Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique em Criar equilibrador de carga.
- Para Tipo de balanceador de carga, selecione Balanceador de carga de rede (TCP/UDP/SSL) e clique em Seguinte.
- Para Proxy ou passagem, selecione Passagem do balanceador de carga e clique em Seguinte.
- Para Público ou interno, selecione Interno e clique em Seguinte.
- Clique em Configurar.
Configuração básica
- Defina o Nome como
be-ilb. - Defina a Região como
us-west1. - Defina Rede como
lb-network. - Clique em Configuração de back-end e faça as seguintes alterações:
- Para Back-ends, na secção Novo item, selecione o grupo de instâncias.
ig-aCertifique-se de que a opção Usar este grupo de instâncias como um grupo de comutação por falha para a cópia de segurança não está selecionada. Clique em Concluído. - Clique em Adicionar back-end. Na secção Novo item apresentada,
selecione o grupo de instâncias
ig-c. Selecione Usar este grupo de instâncias como um grupo de comutação por falha para a cópia de segurança. Clique em Concluído. - Para Verificação de funcionamento, escolha Criar outra verificação de funcionamento,
introduza as seguintes informações e clique em Guardar e continuar:
- Nome:
hc-http-80 - Protocolo:
HTTP - Porta:
80 - Protocolo proxy:
NONE - Caminho do pedido:
/tenha em atenção que, quando usa a consola para criar o balanceador de carga, a verificação de funcionamento é global. Google Cloud Se quiser criar uma verificação de funcionamento regional, usegcloudou a API.
- Nome:
- Clique em Configurações avançadas. Na secção Política de alternativa, configure o seguinte:
- Rácio de comutação por falha:
0.75 - Selecione Ativar esgotamento de ligações na comutação por falha.
- Rácio de comutação por falha:
- Verifique se existe uma marca de verificação azul junto a Configuração de back-end antes de continuar. Se não o fez, reveja este passo.
- Para Back-ends, na secção Novo item, selecione o grupo de instâncias.
- Clique em Configuração do front-end. Na secção Novo IP e porta de front-end, faça as seguintes alterações:
- Nome:
fr-ilb - Subnetwork:
ilb-subnet - Em IP interno, escolha Reservar um endereço IP interno estático,
introduza as seguintes informações e clique em Reservar:
- Nome:
ip-ilb - Endereço IP estático: deixar-me escolher
- Endereço IP personalizado:
10.1.2.99
- Nome:
- Portas: escolha Única e introduza
80para o Número da porta. - Antes de continuar, verifique se existe uma marca de verificação azul junto a Configuração do frontend. Se não o fez, reveja este passo.
- Nome:
- Clique em Rever e finalizar. Verifique as definições.
- Clique em Criar.
gcloud
Crie uma nova verificação de funcionamento de HTTP para testar a conetividade TCP às VMs na porta 80.
gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80Crie o serviço de back-end para o tráfego HTTP:
gcloud compute backend-services create be-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1 \ --failover-ratio 0.75Adicione o back-end principal ao serviço de back-end:
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-aAdicione o back-end de alternativa ao serviço de back-end:
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-c \ --instance-group-zone=us-west1-c \ --failoverCrie uma regra de encaminhamento para o serviço de back-end. Quando criar a regra de encaminhamento, especifique
10.1.2.99para o IP interno na sub-rede.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=be-ilb \ --backend-service-region=us-west1
API
Crie a verificação de funcionamento fazendo um pedido POST ao método regionHealthChecks.insert. Substitua PROJECT_ID pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionHealthChecks
{
"name": "hc-http-80",
"type": "HTTP",
"httpHealthCheck": {
"port": 80
}
}
Crie o serviço de back-end regional fazendo um pedido POST ao método regionBackendServices.insert. Substitua PROJECT_ID pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices
{
"name": "be-ilb",
"backends": [
{
"group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a",
"balancingMode": "CONNECTION"
},
{
"group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c",
"balancingMode": "CONNECTION"
"failover": true
}
],
"failoverPolicy": {
"failoverRatio": 0.75
},
"healthChecks": [
"https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80"
],
"loadBalancingScheme": "INTERNAL",
"connectionDraining": {
"drainingTimeoutSec": 0
}
}
Crie a regra de encaminhamento fazendo um pedido POST ao método forwardingRules.insert. Substitua PROJECT_ID pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules
{
"name": "fr-ilb",
"IPAddress": "10.1.2.99",
"IPProtocol": "TCP",
"ports": [
"80", "8008", "8080", "8088"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb",
"networkTier": "PREMIUM"
}
Testes
Estes testes mostram como validar a configuração do equilibrador de carga e saber mais sobre o respetivo comportamento esperado.
Procedimento de teste do cliente
Este procedimento contacta o balanceador de carga a partir da VM do cliente. Vai usar este procedimento para concluir os outros testes.
Ligue-se à instância de VM do cliente.
gcloud compute ssh vm-client --zone=us-west1-a
Faça um pedido Web ao equilibrador de carga através de
curlpara contactar o respetivo endereço IP.curl http://10.1.2.99
Tenha em atenção o texto devolvido pelo comando
curl. O nome da VM de back-end que gera a resposta é apresentado nesse texto; por exemplo:Page served from: vm-a1
Testar o estado inicial
Depois de configurar o balanceador de carga de exemplo, todas as quatro VMs de back-end devem estar em bom estado:
- As duas VMs principais,
vm-a1evm-a2 - As duas VMs de cópia de segurança,
vm-c1evm-c2
Siga o procedimento de teste do cliente. Repita o segundo passo algumas vezes. O comportamento esperado é que o tráfego seja publicado pelas duas VMs principais, vm-a1 e vm-a2, porque ambas estão em bom estado. Deve ver cada VM principal a apresentar uma resposta aproximadamente metade do tempo porque não foi configurada nenhuma afinidade de sessão para este equilibrador de carga.
Testar a comutação por falha
Este teste simula a falha de vm-a1 para que possa observar o comportamento de comutação por falha.
Estabeleça ligação à VM
vm-a1.gcloud compute ssh vm-a1 --zone=us-west1-a
Pare o servidor Web Apache. Após dez segundos, Google Cloud considera que esta VM não está em bom estado. (A verificação de funcionamento
hc-http-80que criou na configuração usa o intervalo de verificação predefinido de cinco segundos e o limite não saudável de duas sondagens com falhas consecutivas.)sudo apachectl stop
Siga o procedimento de teste do cliente. Repita o segundo passo algumas vezes. O comportamento esperado é que o tráfego seja publicado pelas duas VMs de cópia de segurança,
vm-c1evm-c2. Uma vez que apenas uma VM principal,vm-a2, está em bom estado, a proporção de VMs principais em bom estado em relação ao total de VMs principais é de0.5. Este número é inferior ao limite de comutação por falha de0.75, pelo que Google Cloud reconfigurou o conjunto ativo do equilibrador de carga para usar as VMs de cópia de segurança. Deve ver cada VM de backup a fornecer uma resposta aproximadamente metade das vezes desde que não tenha sido configurada nenhuma afinidade de sessão para este equilibrador de carga.
Teste de reversão
Este teste simula a reposição reiniciando o servidor Apache em vm-a1.
Estabeleça ligação à VM
vm-a1.gcloud compute ssh vm-a1 --zone=us-west1-a
Inicie o servidor Web Apache e aguarde 10 segundos.
sudo apachectl start
Siga o procedimento de teste do cliente. Repita o segundo passo algumas vezes. O comportamento esperado é que o tráfego seja publicado pelas duas VMs principais,
vm-a1evm-a2. Com ambas as VMs principais em bom estado, a relação entre VMs principais em bom estado e o total de VMs principais é1.0, superior ao limite de comutação por falha de0.75, pelo que o Google Cloud configurou o conjunto ativo para usar novamente as VMs principais.
Adicionar mais VMs de back-end
Esta secção expande a configuração de exemplo adicionando mais VMs primárias e de cópia de segurança ao balanceador de carga. Para tal, cria mais dois grupos de instâncias de back-end para demonstrar que pode distribuir VMs primárias e de cópia de segurança por várias zonas na mesma região:
- Um terceiro grupo de instâncias,
ig-demus-west1-c, funciona como um back-end principal com duas VMs:vm-d1vm-d2
- Um quarto grupo de instâncias,
ig-bemus-west1-a, funciona como um back-end de comutação por falha com duas VMs:vm-b1vm-b2
A arquitetura modificada para este exemplo tem o seguinte aspeto:
Crie VMs e grupos de instâncias adicionais
Siga estes passos para criar as VMs primárias e de backup adicionais, bem como os respetivos grupos de instâncias não geridos.
Consola
Crie VMs de back-end
Na Google Cloud consola, aceda à página Instâncias de VM.
Repita os passos seguintes para criar quatro VMs, usando as seguintes combinações de nomes e zonas.
- Nome:
vm-b1, zona:us-west1-a - Nome:
vm-b2, zona:us-west1-a - Nome:
vm-d1, zona:us-west1-c - Nome:
vm-d2, zona:us-west1-c
- Nome:
Clique em Criar instância.
Defina o Nome conforme indicado no passo 2.
Para a Região, escolha
us-west1e escolha uma Zona, conforme indicado no passo 2.Na secção Disco de arranque, certifique-se de que a imagem selecionada é o Debian GNU/Linux 12 (bookworm). Clique em Escolher para alterar a imagem, se necessário.
Clique em Opções avançadas e faça as seguintes alterações:
- Clique em Rede e adicione as seguintes etiquetas de rede:
allow-ssheallow-health-check - Clique no botão de edição em Interfaces de rede e faça as seguintes alterações. Em seguida, clique em Concluído:
- Rede:
lb-network - Subnet:
lb-subnet - IP interno principal: efémero (automático)
- IP externo: efémero
- Rede:
Clique em Gestão. No campo Script de arranque, copie e cole o seguinte conteúdo do script. O conteúdo do script é idêntico para todas as quatro VMs:
#! /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 Rede e adicione as seguintes etiquetas de rede:
Clique em Criar.
Crie grupos de instâncias
Na Google Cloud consola, aceda à página Grupos de instâncias.
Repita os passos seguintes para criar dois grupos de instâncias não geridos, cada um com duas VMs, usando estas combinações.
- Grupo de instâncias:
ig-b, zona:us-west1-a, VMs:vm-b1evm-b2 - Grupo de instâncias:
ig-d, zona:us-west1-c, VMs:vm-d1evm-d2
- Grupo de instâncias:
Clique em Criar grupo de instâncias.
Clique em Novo grupo de instâncias não gerido.
Defina o Nome conforme indicado no passo 2.
Na secção Localização, escolha
us-west1para a Região e, em seguida, escolha uma Zona, conforme indicado no passo 2.Para Rede, introduza
lb-network.Para Sub-rede, introduza
lb-subnet.Na secção Instâncias de VM, adicione as VMs conforme indicado no passo 2.
Clique em Criar.
gcloud
Crie quatro VMs executando o seguinte comando quatro vezes, usando estas quatro combinações para
VM_NAMEeZONE. O conteúdo do script é idêntico para todas as quatro VMs.VM_NAMEdevm-b1eZONEdeus-west1-aVM_NAMEdevm-b2eZONEdeus-west1-aVM_NAMEdevm-d1eZONEdeus-west1-cVM_NAMEdevm-d2eZONEdeus-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check \ --subnet=lb-subnet \ --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 os dois grupos de instâncias não geridos em cada zona:
gcloud compute instance-groups unmanaged create ig-b \ --zone=us-west1-a gcloud compute instance-groups unmanaged create ig-d \ --zone=us-west1-cAdicione as VMs aos grupos de instâncias adequados:
gcloud compute instance-groups unmanaged add-instances ig-b \ --zone=us-west1-a \ --instances=vm-b1,vm-b2 gcloud compute instance-groups unmanaged add-instances ig-d \ --zone=us-west1-c \ --instances=vm-d1,vm-d2
API
Crie quatro VMs de back-end fazendo quatro pedidos POST ao método instances.insert.
Para as quatro VMs, use os seguintes nomes e zonas de VMs:
VM_NAMEdevm-b1eZONEdeus-west1-aVM_NAMEdevm-b2eZONEdeus-west1-aVM_NAMEdevm-d1eZONEdeus-west1-cVM_NAMEdevm-d2eZONEdeus-west1-c
Substitua o seguinte:
PROJECT_ID: o ID do seu projetoDEBIAN_IMAGE_NAME: o nome da imagem Debian para a instância. Pode obter oDEBIAN_IMAGE_NAMEatual executando o seguinte comandogcloud:gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
"name": "VM_NAME",
"tags": {
"items": [
"allow-health-check",
"allow-ssh"
]
},
"machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2",
"canIpForward": false,
"networkInterfaces": [
{
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"accessConfigs": [
{
"type": "ONE_TO_ONE_NAT",
"name": "external-nat",
"networkTier": "PREMIUM"
}
]
}
],
"disks": [
{
"type": "PERSISTENT",
"boot": true,
"mode": "READ_WRITE",
"autoDelete": true,
"deviceName": "VM_NAME",
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME",
"diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard",
"diskSizeGb": "10"
}
}
],
"metadata": {
"items": [
{
"key": "startup-script",
"value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2"
}
]
},
"scheduling": {
"preemptible": false
},
"deletionProtection": false
}
Crie dois grupos de instâncias fazendo um pedido POST ao método instanceGroups.insert. Substitua PROJECT_ID pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups
{
"name": "ig-b",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups
{
"name": "ig-d",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}
Adicione instâncias a cada grupo de instâncias fazendo um pedido POST ao método instanceGroups.addInstances. Substitua PROJECT_ID pelo ID do seu projeto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-b/addInstances
{
"instances": [
{
"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b1",
"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b2"
}
]
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-d/addInstances
{
"instances": [
{
"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d1",
"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d2"
}
]
}
Adicionar um back-end principal
Pode usar este procedimento como modelo para adicionar um grupo de instâncias não gerido ao serviço de back-end de um Network Load Balancer de encaminhamento interno existente como back-end principal. Para a configuração de exemplo, este procedimento mostra como
adicionar o grupo de instâncias ig-d como um back-end principal ao equilibrador de carga be-ilb.
Consola
Na Google Cloud consola, aceda à página Equilíbrio de carga.
No separador Balanceadores de carga, clique no nome de um balanceador de carga de TCP interno ou UDP interno existente (neste exemplo,
be-ilb).Clique em Editar .
Na Configuração de back-end, clique em Adicionar back-end e selecione um grupo de instâncias não gerido (neste exemplo,
ig-d).Certifique-se de que a opção Usar este grupo de instâncias como um grupo de comutação por falha para a cópia de segurança não está selecionada.
Clique em Concluído e, de seguida, em Atualizar.
gcloud
Use o seguinte comando gcloud para adicionar um back-end principal
a um serviço de back-end de um Network Load Balancer de passagem interno existente.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION
Substitua o seguinte:
BACKEND_SERVICE_NAME: o nome do serviço de back-end do balanceador de carga. Para o exemplo, usebe-ilb.INSTANCE_GROUP_NAME: o nome do grupo de instâncias a adicionar como um back-end principal. Para o exemplo, useig-d.INSTANCE_GROUP_ZONE: é a zona onde o grupo de instâncias está definido. Para o exemplo, useus-west1-c.REGION: a região do balanceador de carga. Para o exemplo, useus-west1.
API
Adicione um back-end principal a um serviço de back-end existente com o método regionBackendServices.patch.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
{
"backends":
[
{
"balancingMode": "connection",
"failover": false,
"group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME"
}
]
}
Substitua o seguinte:
PROJECT_ID: o ID do seu projetoREGION: a região do balanceador de carga. Para o exemplo, useus-west1.BACKEND_SERVICE_NAME: o nome do serviço de back-end do balanceador de carga. Para o exemplo, usebe-ilb.INSTANCE_GROUP_NAME: o nome do grupo de instâncias a adicionar como um back-end principal. Para o exemplo, useig-d.INSTANCE_GROUP_ZONE: a zona onde o grupo de instâncias está definido. Para o exemplo, useus-west1-c.
Adicionar um back-end de alternativa
Pode usar este procedimento como modelo para adicionar um grupo de instâncias não gerido ao serviço de back-end de um Network Load Balancer de encaminhamento interno existente como um back-end de failover. Para a configuração de exemplo, este procedimento mostra como adicionar o grupo de instâncias ig-b como um motor de processamento de reserva ao equilibrador de carga be-ilb.
Consola
Na Google Cloud consola, aceda à página Equilíbrio de carga.
No separador Balanceadores de carga, clique no nome de um balanceador de carga existente do tipo TCP/UDP (interno) (neste exemplo,
be-ilb).Clique em Editar .
Na Configuração de back-end, clique em Adicionar back-end e selecione um grupo de instâncias não gerido (neste exemplo,
ig-b).Selecione Usar este grupo de instâncias como um grupo de alternativa para a cópia de segurança.
Clique em Concluído e, de seguida, em Atualizar.
gcloud
Use o seguinte comando gcloud para adicionar um back-end de alternativa a um serviço de back-end de um Network Load Balancer de passagem interno existente.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --failover
Substitua o seguinte:
BACKEND_SERVICE_NAME: o nome do serviço de back-end do balanceador de carga. Para o exemplo, usebe-ilb.INSTANCE_GROUP_NAME: o nome do grupo de instâncias a adicionar como um back-end principal. Para o exemplo, useig-b.INSTANCE_GROUP_ZONE: é a zona onde o grupo de instâncias está definido. Para o exemplo, useus-west1-a.REGIONé a região do balanceador de carga. Para o exemplo, useus-west1.
API
Adicione um back-end de alternativa a um serviço de back-end existente com o método regionBackendServices.patch.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
{
"backends":
[
{
"balancingMode": "connection",
"failover": true,
"group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME"
}
]
}
Substitua o seguinte:
PROJECT_ID: o ID do seu projetoBACKEND_SERVICE_NAME: o nome do serviço de back-end do balanceador de carga. Para o exemplo, usebe-ilb.INSTANCE_GROUP_NAME: o nome do grupo de instâncias a adicionar como um back-end principal. Para o exemplo, useig-b.INSTANCE_GROUP_ZONE: é a zona onde o grupo de instâncias está definido. Para o exemplo, useus-west1-a.REGION: a região do balanceador de carga. Para o exemplo, useus-west1.
Converter um back-end principal ou de alternativa
Pode converter um back-end principal num back-end de alternativa ou vice-versa, sem ter de remover o grupo de instâncias do serviço de back-end do Network Load Balancer de passagem interno.
Consola
Na Google Cloud consola, aceda à página Equilíbrio de carga.
No separador Balanceadores de carga, clique no nome de um balanceador de carga existente do tipo TCP/UDP (interno).
Clique em Editar .
Na Configuração de back-end, clique no nome de um dos grupos de instâncias de back-end. Em seguida:
- Para tornar o grupo de instâncias um back-end de alternativa, selecione Usar este grupo de instâncias como um grupo de alternativa para cópia de segurança.
- Para tornar o grupo de instâncias um back-end principal, desmarque a opção Usar este grupo de instâncias como um grupo de alternativa em caso de falha para a cópia de segurança.
Clique em Concluído e, de seguida, em Atualizar.
gcloud
Use o seguinte comando gcloud para converter um back-end principal existente num back-end de alternativa:
gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --failover
Use o seguinte comando gcloud para converter um back-end de alternativa existente num back-end principal:
gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --no-failover
Substitua o seguinte:
BACKEND_SERVICE_NAME: o nome do serviço de back-end do balanceador de cargaINSTANCE_GROUP_NAME: o nome do grupo de instâncias a adicionar como um back-end principalINSTANCE_GROUP_ZONE: a zona onde o grupo de instâncias está definidoREGION: a região do balanceador de carga
API
Converta um back-end principal num back-end de alternativa ou vice-versa através do método
regionBackendServices.patch.
Para converter um back-end principal num back-end de alternativa:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
{
"backends":
[
{
"failover": true,
"group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME"
}
]
}
Para converter um back-end de alternativa num back-end principal:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
{
"backends":
[
{
"failover": false,
"group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME"
}
],
}
Substitua o seguinte:
PROJECT_ID: o ID do seu projetoBACKEND_SERVICE_NAME: o nome do serviço de back-end do balanceador de cargaINSTANCE_GROUP_NAME: o nome do grupo de instâncias a adicionar como um back-end principalINSTANCE_GROUP_ZONE: a zona onde o grupo de instâncias está definidoREGION: a região do balanceador de carga
Configurar políticas de comutação por falha
Esta secção descreve como gerir uma política de comutação por falha para o serviço de back-end de um Network Load Balancer de encaminhamento interno. Uma política de alternativa consiste no seguinte:
- Rácio de comutação por falha
- Diminuir o tráfego quando todas as VMs de back-end estão em mau estado de funcionamento
- Drenagem da ligação na comutação por falha
Para mais informações sobre os parâmetros de uma política de alternativa, consulte:
- Definir uma taxa de alternativa
- Eliminar tráfego quando não existe uma VM em bom estado
- Drenagem de ligações em caso de comutação por falha e recuperação
Definir uma política de alternativa
As instruções seguintes descrevem como definir a política de comutação por falha para um Network Load Balancer de encaminhamento interno existente.
Consola
Para definir uma política de alternativa através da consola Google Cloud , tem de ter, pelo menos, um back-end de alternativa.
Na Google Cloud consola, aceda à página Equilíbrio de carga.
No separador Balanceadores de carga, clique no nome de um balanceador de carga existente do tipo TCP/UDP (interno).
Clique em Editar .
Certifique-se de que tem, pelo menos, um back-end de alternativa. Pelo menos, um dos back-ends do balanceador de carga tem de ter a opção Usar este grupo de instâncias como um grupo de alternativa para cópia de segurança selecionada.
Clique em Configurações avançadas.
- Para a Política de alternativa, defina a Rácio de alternativa para um valor entre
0.0e1.0, inclusive. - Selecione a caixa junto a Ativar eliminação de tráfego se quiser eliminar o tráfego quando todas as VMs ativas e todas as VMs de cópia de segurança estiverem em mau estado.
- Selecione a caixa junto a Ativar esgotamento de ligações na comutação por falha se quiser terminar rapidamente as ligações existentes durante a comutação por falha.
- Para a Política de alternativa, defina a Rácio de alternativa para um valor entre
Clique em Rever e finalizar e, de seguida, em Atualizar.
gcloud
Para definir uma política de comutação por falha através da CLI gcloud, atualize o serviço de back-end do balanceador de carga:
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION \ --failover-ratio FAILOVER_RATIO \ --drop-traffic-if-unhealthy \ --no-connection-drain-on-failover
Substitua o seguinte:
BACKEND_SERVICE_NAME: o nome do serviço de back-end do balanceador de carga. Para o exemplo, usebe-ilb.REGION: a região do balanceador de carga. Para o exemplo, useus-west1.FAILOVER_RATIO: a taxa de ativação pós-falha. Os valores possíveis estão entre0.0e1.0, inclusive. Para o exemplo, use0.75.--drop-traffic-if-unhealthyindica ao balanceador de carga que elimine o tráfego quando todas as VMs principais e todas as VMs de cópia de segurança não estiverem em bom estado. Altere esta opção para--no-drop-traffic-if-unhealthyse quiser distribuir o tráfego entre todas as VMs principais quando todas as VMs de back-end estiverem em mau estado.--no-connection-drain-on-failoverindica ao balanceador de carga que termine rapidamente as ligações TCP existentes durante a comutação por falha. Use--connection-drain-on-failoverpara ativar a drenagem da ligação durante a transferência de controlo.
API
Use o método
regionBackendServices.patch
para definir a política de alternativa.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
{
"failoverPolicy":
{
"failoverRatio": FAILOVER_RATIO,
"dropTrafficIfUnhealthy": [true|false],
"disableConnectionDrainOnFailover": [true|false]
}
}
Substitua o seguinte:
PROJECT_ID: o ID do seu projetoREGION: a região do balanceador de cargaBACKEND_SERVICE_NAME: o nome do serviço de back-end do balanceador de cargaFAILOVER_RATIO: a taxa de ativação pós-falha. Os valores possíveis estão entre0.0e1.0, inclusive.- A definição de
dropTrafficIfUnhealthycomotrueindica ao balanceador de carga que elimine o tráfego quando todas as VMs principais e todas as VMs de backup estiverem em mau estado. Defina esta opção comofalsese quiser distribuir o tráfego entre todas as VMs principais quando todas as VMs de back-end estiverem em mau estado. - A definição de
disableConnectionDrainOnFailovercomotrueindica ao equilibrador de carga que termine rapidamente as ligações TCP existentes quando faz uma comutação por falha. Defina esta opção comofalsepara ativar a drenagem de ligações durante a comutação por falha.
Visualizar uma política de comutação por falha
As instruções seguintes descrevem como ver a política de comutação por falha existente para um Network Load Balancer de encaminhamento interno.
Consola
A consola Google Cloud mostra as definições da política de comutação por falha existentes quando edita um Network Load Balancer de encaminhamento interno. Consulte o artigo sobre como definir uma política de comutação por falha para obter instruções.
gcloud
Para listar as definições da política de comutação por falha através da CLI gcloud, use o seguinte comando. As definições não definidas numa política de alternativa usam os valores predefinidos da política de alternativa.
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION \ --format="get(failoverPolicy)"
Substitua o seguinte:
BACKEND_SERVICE_NAME: o nome do serviço de back-end do balanceador de cargaREGION: a região do balanceador de carga
API
Use o método
regionBackendServices.get
para ver a política de comutação por falha.
A resposta ao pedido da API mostra a política de alternativa. Segue-se um exemplo.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
Substitua o seguinte:
PROJECT_ID: o ID do seu projetoREGION: a região do balanceador de cargaBACKEND_SERVICE_NAME: o nome do serviço de back-end do balanceador de carga
{
...
"failoverPolicy": {
"disableConnectionDrainOnFailover": false,
"dropTrafficIfUnhealthy": false,
"failoverRatio": 0.75
...
}
O que se segue?
- Consulte a Vista geral do balanceador de carga de rede de encaminhamento interno para ver os princípios importantes.
- Consulte Conceitos de comutação por falha para equilibradores de carga de rede de passagem interna para ver informações importantes sobre a comutação por falha.
- Consulte o artigo Configure um balanceador de carga de rede de encaminhamento interno para ver um exemplo de configuração de um balanceador de carga de rede de encaminhamento interno.
- Consulte o artigo Registo e monitorização do balanceador de carga de rede de encaminhamento interno para obter informações sobre a configuração do registo e da monitorização do balanceador de carga de rede de encaminhamento interno.
- Consulte o artigo Balanceadores de carga de rede de encaminhamento interno e redes ligadas para ver informações sobre o acesso a balanceadores de carga de rede de encaminhamento interno a partir de redes de pares ligadas à sua rede VPC.
- Consulte o artigo Resolva problemas com balanceadores de carga de rede de encaminhamento interno para ver informações sobre como resolver problemas com o seu balanceador de carga de rede de encaminhamento interno.
- Limpe a configuração do balanceador de carga.