Neste guia, há um exemplo que ensina a configurar o failover para um balanceador de carga de rede interno do Google Cloud. Antes de seguir este guia, conheça bem os seguintes tópicos:
- Conceitos do balanceador de carga de rede de passagem interna
- Conceitos de failover para balanceadores de carga de rede de passagem interna
- Visão geral das regras de firewall
- Conceitos de verificação de integridade
Permissões
Para seguir este guia, você precisa criar instâncias e modificar uma rede em um projeto. É necessário ser proprietário ou editor de um projeto ou ter todos os papéis do IAM do Compute Engine a seguir:
Tarefa | Papel necessário |
---|---|
Criar componentes do balanceador de carga, sub-redes e redes | Administrador de rede |
Adicionar e remover regras de firewall | Administrador de segurança |
Criar instâncias | Administrador da instância da computação |
Para mais informações, consulte estes guias:
Instalação
Neste guia, mostramos como configurar e testar um balanceador de carga de rede de passagem interna que usa failover. Nas etapas desta seção, você fará as configurações do seguinte:
- Uma amostra de rede VPC com sub-redes personalizadas
- Regras de firewall que permitem conexões de entrada com VMs de back-end
- VMs de back-end:
- Um back-end principal em um grupo de instâncias não gerenciadas na zona
us-west1-a
- Um back-end de failover em um grupo de instâncias não gerenciadas na zona
us-west1-c
- Um back-end principal em um grupo de instâncias não gerenciadas na zona
- Uma VM cliente para testar conexões e verificar o comportamento do failover
- Os componentes do balanceador de carga de rede de passagem interna a seguir:
- uma verificação de integridade do serviço de back-end
- Um serviço de back-end interno na região
us-west1
para gerenciar a distribuição de conexõ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 deste exemplo é a seguinte:
Como configurar uma rede, região e sub-rede
Neste exemplo, usamos a rede VPC, a região e a sub-rede a seguir:
Rede: uma rede VPC de modo personalizado denominada
lb-network
.Região: a região é
us-west1
.Sub-rede: a sub-rede,
lb-subnet
, usa o intervalo de IP10.1.2.0/24
.
Para criar o exemplo de rede e sub-rede, siga estas etapas.
Console
No Console do Google Cloud, acesse a página Redes VPC.
Clique em Criar rede VPC.
Informe um Nome de
lb-network
.Na seção Sub-redes:
- Defina o Modo de criação de sub-rede como Personalizado.
- Na seção Nova sub-rede, insira as informações a seguir:
- Name:
lb-subnet
- Região:
us-west1
- Intervalo de endereços IP:
10.1.2.0/24
- Clique em Concluído.
- Name:
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-network
, 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 uma solicitação 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 uma solicitação POST
ao método subnetworks.insert
. Substitua PROJECT_ID
pelo ID do projeto do Google Cloud.
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 }
Como 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, permitindo tráfego de origens no intervalo10.1.2.0/24
. Essa regra permite tráfego de entrada de qualquer origem emlb-subnet
para as instâncias (VMs) submetidas a balanceamento de carga.fw-allow-ssh
: uma regra de entrada aplicada às instâncias cuja carga está sendo balanceada, que autoriza qualquer endereço a estabelecer conectividade SSH de entrada pela porta TCP 22. É possível escolher um intervalo de IP de origem mais restritivo nessa regra. Por exemplo, especifique os intervalos de IP dos sistemas em que você planeja iniciar sessões SSH. Neste exemplo, usamos a tag 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 cuja carga está sendo balanceada, que permite o tráfego dos sistemas de verificação de integridade do Google Cloud (130.211.0.0/22
e35.191.0.0/16
). Este exemplo usa a tag de destinoallow-health-check
para identificar as instâncias às quais ela será aplicada.
Sem essas regras de firewall, a regra padrão de negação de entrada bloqueará o tráfego que chega para as instâncias de back-end.
Console
No Console do Google Cloud, acesse a página políticas de Firewall.
Clique em Criar regra de firewall e insira as seguintes informações para criar a regra que permita o tráfego de sub-rede:
- Name:
fw-allow-lb-subnet
- Rede:
lb-network
- Prioridade:
1000
- Direção do tráfego: entrada
- Ação se houver correspondência: permitir
- Destinos: todas as instâncias na rede
- Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem:
10.1.2.0/24
- Protocolos e portas: permitir todos
- Name:
Clique em Criar.
Clique em Criar regra de firewall novamente para criar a regra e permitir conexões SSH de entrada:
- Name:
fw-allow-ssh
- Rede:
lb-network
- Prioridade:
1000
- Direção do tráfego: entrada
- Ação se houver correspondência: permitir
- Destinos: tags de destino especificadas
- Tags de meta:
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 digite:
tcp:22
- Name:
Clique em Criar.
Clique em Criar regra de firewall pela terceira vez para criar uma regra que permita as verificações de integridade do Google Cloud:
- Name:
fw-allow-health-check
- Rede:
lb-network
- Prioridade:
1000
- Direção do tráfego: entrada
- Ação se houver correspondência: permitir
- Destinos: tags de destino especificadas
- Tags de meta:
allow-health-check
- Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem:
130.211.0.0/22
e35.191.0.0/16
- Protocolos e portas: permitir todos
- Name:
Clique em Criar.
gcloud
Crie a regra de firewall
fw-allow-lb-subnet
para permitir a comunicação a partir da 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,icmp
Crie a regra de firewall
fw-allow-ssh
que permita a conectividade SSH para VMs com a tag de redeallow-ssh
. Se você omitirsource-ranges
, o Google Cloud interpretará que a regra autoriza a conexão proveniente de 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 verificações de integridade do Google Cloud.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 uma solicitação POST
ao método firewalls.insert
. Substitua PROJECT_ID
pelo ID do projeto do Google Cloud.
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 uma solicitação POST
ao método firewalls.insert
. Substitua PROJECT_ID
pelo ID do projeto do Google Cloud.
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 uma solicitação POST
ao método firewalls.insert
. Substitua PROJECT_ID
pelo ID do projeto do Google Cloud.
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 }
Como criar VMs de back-end e grupos de instâncias
Nesta etapa, você criará as VMs de back-end e os grupos de instâncias não gerenciadas:
- O grupo de instâncias
ig-a
emus-west1-a
é um back-end principal com duas VMs:vm-a1
vm-a2
- O grupo de instâncias
ig-c
emus-west1-c
é um back-end de failover com duas VMs:vm-c1
vm-c2
Os back-ends primário e de failover são colocados em zonas separadas para facilitar o entendimento das instruções e para processar o failover no caso de uma zona ficar inativa.
Cada VM primária e de backup é configurada para executar um servidor da Web Apache nas portas TCP 80 e 443. Além disso, cada uma delas recebe um endereço IP interno na lb-subnet
para acesso do cliente e um endereço IP externo temporário (público) para acesso SSH.
Saiba mais sobre como remover endereços IP externos, em Como remover endereços IP externos de VMs de back-end.
Por padrão, o Apache é configurado para ser vinculado a qualquer endereço IP. Os balanceadores de carga de rede de passagem interna entregam pacotes preservando o endereço IP de destino.
Verifique se o software servidor em execução nas VMs primária e de backup faz detecções no endereço IP da regra de encaminhamento interna do balanceador de carga. Se você configurar várias regras de encaminhamento internas, verifique se o software detecta o endereço IP interno associado a cada uma delas. O endereço IP interno da regra de encaminhamento é o endereço IP de destino de um pacote entregue a uma VM de back-end por um balanceador de carga de rede de passagem interno.
Para simplificar as instruções, todas as VMs primárias e de backup executam o Debian GNU/Linux 10.
Console
Criar VMs de back-end
No console do Google Cloud, acesse a página Instâncias de VMs.
Repita as etapas a seguir para criar quatro VMs. Use estas combinações de nome e zona.
- 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 como indicado na etapa 2.
Em Região, escolha
us-west1
e escolha uma Zona, como indicado na etapa 2.Na seção Disco de inicialização, verifique se a imagem selecionada é Debian GNU/Linux 10 (buster). Clique em Escolher para alterar a imagem, se necessário.
Clique em Opções avançadas.
Clique em Rede e configure os seguintes campos:
- Em Tags de rede, insira
allow-health-check
eallow-ssh
. - Em Interfaces de rede, selecione o seguinte:
- Rede:
lb-network
- Sub-rede:
lb-subnet
- Rede:
- Em Tags de rede, insira
Clique em Gerenciamento. Insira o script a seguir no campo Script de inicialização. que é o mesmo para 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.
Criar grupos de instâncias
No Console do Google Cloud, acesse a página Grupos de instâncias.
Repita as etapas a seguir para criar dois grupos de instâncias não gerenciadas com duas VMs cada. Use estas combinações.
- Grupo de instâncias:
ig-a
, zona:us-west1-a
, VMs:vm-a1
evm-a2
- Grupo de instâncias:
ig-c
, zona:us-west1-c
, VMs:vm-c1
evm-c2
- Grupo de instâncias:
Clique em Criar grupo de instâncias.
Clique em Novo grupo de instâncias não gerenciadas.
Defina o Nome como indicado na etapa 2.
Na seção Local, escolha
us-west1
como Região e escolha uma Zona, conforme indicado na etapa 2.Em Rede, insira
lb-network
.Em Sub-rede, insira
lb-subnet
.Na seção Instâncias de VMs, adicione as VMs como indicado na etapa 2.
Clique em Criar.
gcloud
Para criar quatro VMs, execute o comando a seguir quatro vezes, usando as quatro combinações de
VM_NAME
eZONE
abaixo. O conteúdo do script é o mesmo para as quatro VMs.VM_NAME
devm-a1
eZONE
deus-west1-a
VM_NAME
devm-a2
eZONE
deus-west1-a
VM_NAME
devm-c1
eZONE
deus-west1-c
VM_NAME
devm-c2
eZONE
deus-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-10 \ --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 gerenciadas 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-c
Adicione as VMs aos grupos de instâncias apropriados:
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 solicitações POST
ao método
instances.insert
.
Para as quatro VMs, use os seguintes nomes e zonas de VM:
VM_NAME
devm-a1
eZONE
deus-west1-a
VM_NAME
devm-a2
eZONE
deus-west1-a
VM_NAME
devm-c1
eZONE
deus-west1-c
VM_NAME
devm-c2
eZONE
deus-west1-c
Substitua:
PROJECT_ID
: ID do projeto;ZONE
: a zona da instância;DEBIAN_IMAGE_NAME
: o nome da imagem do Debian da instância. ODEBIAN_IMAGE_NAME
atual pode ser obtido executando o seguinte comandogcloud
:gcloud compute images list \ --filter="family=debian-10"
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 uma solicitação POST
ao método instanceGroups.insert
. Substitua PROJECT_ID
pelo ID do projeto do Google Cloud.
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 uma solicitação POST
para o método instanceGroups.addInstances
. Substitua PROJECT_ID
pelo ID do projeto do Google Cloud.
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" } ] }
Como criar uma VM cliente
No exemplo, é criada uma VM de cliente (vm-client
) na mesma região do balanceador
de carga. O cliente é usado para demonstrar o funcionamento do failover.
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
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:
- Em Tags de rede, insira
allow-ssh
. - Em Interfaces de rede, selecione o seguinte:
- Rede:
lb-network
- Sub-rede:
lb-subnet
- Rede:
- Em Tags de rede, insira
Clique em Criar.
gcloud
A VM cliente pode estar em qualquer zona na mesma região que o balanceador de carga e usar qualquer sub-rede nessa região. No exemplo, o cliente está
na zona us-west1-a
e usa a mesma sub-rede das VMs principal e
de backup.
gcloud compute instances create vm-client \ --zone=us-west1-a \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=lb-subnet
API
Faça uma solicitação POST
ao método instances.insert
.
Substitua:
PROJECT_ID
: ID do projetoDEBIAN_IMAGE_NAME
: o nome da imagem do Debian da instância. ODEBIAN_IMAGE_NAME
atual pode ser obtido executando o seguinte comandogcloud
:gcloud compute images list \ --filter="family=debian-10"
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 }
Como configurar componentes do balanceador de carga
Estas etapas configuram todos os componentes do balanceador de carga de rede de passagem interno, começando com verificação de integridade e serviço de back-end e, em seguida, componentes de front-end:
Verificação de integridade: no exemplo, é usada uma verificação de integridade de HTTP que apenas busca uma resposta HTTP
200
(OK). Para mais informações, consulte a seção sobre verificações de integridade da visão geral do balanceador de carga de rede interno de passagem.Serviço de back-end: como o exemplo transmite tráfego HTTP por meio do balanceador de carga interno, a configuração especifica TCP, e não UDP. Para ilustrar o failover, esse serviço de back-end tem uma proporção de failover de
0.75
.Regra de encaminhamento: neste exemplo, criamos uma regra de encaminhamento interna.
Endereço IP interno: neste exemplo, especificamos um endereço IP interno,
10.1.2.99
, ao criarmos a regra de encaminhamento.
Console
Iniciar a configuração
No console do Google Cloud, acesse a página Balanceamento de carga.
- Clique em Criar balanceador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de rede (TCP/UDP/SSL) e clique em Próxima.
- Em Proxy ou passagem, selecione Balanceador de carga de passagem e clique em Próxima.
- Em Voltado ao público ou interno, selecione Interno e clique em Próxima.
- Clique em Configurar.
Configuração básica
- 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 alterações a seguir:
- Em Back-ends, na seção Novo item, selecione o
grupo de instâncias
ig-a
. Certifique-se de que a opção Usar este grupo de instâncias como grupo de failover para backup não esteja marcada. Clique em Concluir. - Clique em Adicionar back-end. Na seção Novo item que é exibida,
selecione o grupo de instâncias
ig-c
. Marque a opção Usar este grupo de instâncias como grupo de failover para backup. Clique em Concluído. - Em Verificação de integridade, escolha Criar outra verificação de integridade, insira as informações a seguir e clique em Salvar e continuar:
- Name:
hc-http-80
- Protocolo:
HTTP
- Porta:
80
- Protocolo de proxy:
NONE
- Caminho da solicitação:
/
Ao usar o Console do Google Cloud para criar o balanceador de carga, a verificação de integridade será global. Se você quiser criar uma verificação de integridade regional, usegcloud
ou a API.
- Name:
- Clique em Configurações avançadas. Na seção Política de failover,
configure os itens a seguir:
- Proporção de failover:
0.75
- Marque a opção Ativar a redução da conexão em failover.
- Proporção de failover:
- Verifique se há uma marca de seleção azul ao lado de Configuração do back-end antes de continuar. Revise esta etapa se não houver marca.
- Em Back-ends, na seção Novo item, selecione o
grupo de instâncias
- Clique em Configuração de front-end. Na seção Novo IP de front-end e porta, faça as seguintes alterações:
- Nome:
fr-ilb
- Sub-rede:
ilb-subnet
- Em IP interno, escolha Reservar um endereço IP interno estático, insira as informações a seguir e clique em Reservar:
- Nome:
ip-ilb
- Endereço IP estático: Quero escolher
- Endereço IP personalizado:
10.1.2.99
- Nome:
- Portas: escolha Individual e insira
80
no Número da porta. - Verifique se há uma marca de seleção azul ao lado da Configuração de front-end antes de continuar. Revise esta etapa se não houver marca.
- Nome:
- Clique em Analisar e finalizar. Verifique suas configurações.
- Clique em Criar.
gcloud
Crie uma nova verificação de integridade HTTP para testar a conectividade TCP com as VMs na porta 80.
gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80
Crie o serviço de back-end do 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.75
Adicione o back-end primário 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-a
Adicione o back-end de failover 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 \ --failover
Crie uma regra de encaminhamento do serviço de back-end. Ao fazer isso, especifique
10.1.2.99
como 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 integridade fazendo uma solicitação POST
ao método regionHealthChecks.insert
. Substitua PROJECT_ID
pelo ID do 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 um serviço de back-end regional fazendo uma solicitação POST
ao método regionBackendServices.insert
. Substitua PROJECT_ID
pelo ID do 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 firewall fazendo uma solicitação POST
ao método forwardingRules.insert
. Substitua PROJECT_ID
pelo ID do 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" }
Teste
Nos testes a seguir, veja como validar a configuração do balanceador de carga e conheça o comportamento esperado dele.
Procedimento de teste do cliente
Este procedimento interage com o balanceador de carga da VM cliente. Use-o para concluir os outros testes.
Conecte-se à instância da VM cliente.
gcloud compute ssh vm-client --zone=us-west1-a
Faça uma solicitação da Web para o balanceador de carga usando
curl
para contatar o endereço IP dele.curl http://10.1.2.99
Observe o texto retornado pelo comando
curl
. O nome da VM de back-end que gera a resposta é exibido nesse texto. Por exemplo:Page served from: vm-a1
.
Como testar o estado inicial
Depois de configurar o exemplo de balanceador de carga, todas as quatro VMs de back-end serão íntegras:
- As duas VMs principais,
vm-a1
evm-a2
- As duas VMs de backup,
vm-c1
evm-c2
Siga o procedimento de teste do cliente. Repita a segunda etapa algumas vezes. O comportamento esperado é que o tráfego seja exibido pelas duas VMs principais,
vm-a1
e vm-a2
, porque ambas estão íntegras. Você verá que cada
VM principal exibe uma resposta quase que na metade do tempo. Isso acontece porque nenhuma afinidade de
sessão foi configurada no balanceador
de carga.
Como testar o failover
No teste a seguir, é simulada a falha de vm-a1
para que você veja comportamento do failover.
Conecte-se à VM
vm-a1
.gcloud compute ssh vm-a1 --zone=us-west1-a
Interrompa o servidor da Web Apache. Depois de 10 segundos, o Google Cloud considera a VM como não íntegra. A verificação de integridade
hc-http-80
que você criou durante a configuração usa o intervalo de verificação padrão de cinco segundos e o limite de não integridade de duas sondagens com falha consecutivas.sudo apachectl stop
Siga o procedimento de teste do cliente. Repita a segunda etapa algumas vezes. O comportamento esperado é que o tráfego seja exibido pelas duas VMs de backup,
vm-c1
evm-c2
. Como apenas uma VM principal (vm-a2
) está íntegra, a proporção entre VMs principais íntegras e totais é de0.5
. Esse número é menor que o limite de failover de0.75
. Portanto, o Google Cloud reconfigurou o pool ativo do balanceador de carga para usar as VMs de backup. Você verá cada VM de backup exibir uma resposta quase que na metade do tempo, desde que nenhuma afinidade de sessão tenha sido configurada para o balanceador de carga.
Como testar o failback
No teste a seguir, será reiniciado o servidor Apache em vm-a1
para simular o failback.
Conecte-se à VM
vm-a1
.gcloud compute ssh vm-a1 --zone=us-west1-a
Inicie o servidor da Web Apache e aguarde 10 segundos.
sudo apachectl start
Siga o procedimento de teste do cliente. Repita a segunda etapa algumas vezes. O comportamento esperado é que o tráfego seja exibido pelas duas VMs principais,
vm-a1
evm-a2
. Quando ambas as VMs principais estão íntegras, a proporção entre as íntegras e totais é de1.0
, superior ao limite de failover de0.75
. Portanto, o Google Cloud configurou o pool ativo para voltar usar as VMs principais.
Como adicionar mais VMs de back-end
Nesta seção, mais VMs primárias e de backup são adicionadas ao balanceador de carga para ampliar o exemplo de configuração. Isso é feito ao criar mais dois grupos de instâncias de back-end para demonstrar que é possível distribuir VMs primárias e de backup entre várias zonas na mesma região:
- Um terceiro grupo de instâncias,
ig-d
emus-west1-c
, é exibido como um back-end principal com duas VMs:vm-d1
vm-d2
- Um quarto grupo de instâncias,
ig-b
emus-west1-a
, é exibido como um back-end de failover com duas VMs:vm-b1
vm-b2
A arquitetura modificada deste exemplo é assim:
.Criar mais VMs e grupos de instâncias
Siga estas etapas para criar mais VMs primárias e de backup, além dos grupos de instâncias não gerenciadas correspondentes.
Console
Criar VMs de back-end
No console do Google Cloud, acesse a página Instâncias de VMs.
Repita as etapas a seguir para criar quatro VMs. Use estas combinações de nome e zona.
- 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 como indicado na etapa 2.
Em Região, escolha
us-west1
e escolha uma Zona, como indicado na etapa 2.Na seção Disco de inicialização, verifique se a imagem selecionada é Debian GNU/Linux 10 (buster). 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 tags de rede:
allow-ssh
eallow-health-check
. - Clique no botão de editar em Interfaces de rede e faça as alterações a seguir. Depois, clique em Concluído:
- Rede:
lb-network
- Sub-rede:
lb-subnet
- IP interno primário: temporário (automático)
- IP externo: temporário
- Rede:
Clique em Gerenciamento. No campo Script de inicialização, copie e cole o conteúdo do script a seguir, que é o mesmo para 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 tags de rede:
Clique em Criar.
Criar grupos de instâncias
No Console do Google Cloud, acesse a página Grupos de instâncias.
Repita as etapas a seguir para criar dois grupos de instâncias não gerenciadas com duas VMs cada. Use estas combinações.
- Grupo de instâncias:
ig-b
, zona:us-west1-a
, VMs:vm-b1
evm-b2
- Grupo de instâncias:
ig-d
, zona:us-west1-c
, VMs:vm-d1
evm-d2
- Grupo de instâncias:
Clique em Criar grupo de instâncias.
Clique em Novo grupo de instâncias não gerenciadas.
Defina o Nome como indicado na etapa 2.
Na seção Local, escolha
us-west1
como Região e escolha uma Zona, conforme indicado na etapa 2.Em Rede, insira
lb-network
.Em Sub-rede, insira
lb-subnet
.Na seção Instâncias de VMs, adicione as VMs como indicado na etapa 2.
Clique em Criar.
gcloud
Para criar quatro VMs, execute o comando a seguir quatro vezes, usando as quatro combinações de
VM_NAME
eZONE
abaixo. O conteúdo do script é o mesmo para as quatro VMs.VM_NAME
devm-b1
eZONE
deus-west1-a
VM_NAME
devm-b2
eZONE
deus-west1-a
VM_NAME
devm-d1
eZONE
deus-west1-c
VM_NAME
devm-d2
eZONE
deus-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-10 \ --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 gerenciadas 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-c
Adicione as VMs aos grupos de instâncias apropriados:
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 solicitações POST
ao método
instances.insert
.
Para as quatro VMs, use os seguintes nomes e zonas de VM:
VM_NAME
devm-b1
eZONE
deus-west1-a
VM_NAME
devm-b2
eZONE
deus-west1-a
VM_NAME
devm-d1
eZONE
deus-west1-c
VM_NAME
devm-d2
eZONE
deus-west1-c
Substitua:
PROJECT_ID
: ID do projetoDEBIAN_IMAGE_NAME
: o nome da imagem do Debian da instância. ODEBIAN_IMAGE_NAME
atual pode ser obtido executando o seguinte comandogcloud
:gcloud compute images list \ --filter="family=debian-10"
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 uma solicitação POST
ao método instanceGroups.insert
. Substitua PROJECT_ID
pelo ID do 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 uma solicitação POST
para o método instanceGroups.addInstances
. Substitua PROJECT_ID
pelo ID do 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" } ] }
Como adicionar um back-end primário
Use este procedimento como um modelo para adicionar um grupo de
instâncias não gerenciadas a um serviço de back-end do balanceador de carga de rede atual como
back-end principal. No exemplo de configuração, o procedimento mostra como
adicionar o grupo de instâncias ig-d
como um back-end principal ao balanceador de carga be-ilb
.
Console
No Console do Google Cloud, acesse a página Balanceamento de carga.
Na guia Balanceadores de carga, clique no nome de um balanceador de carga TCP ou UDP interno existente (
be-ilb
no exemplo).Clique em Editar
.Em Configuração de back-end, clique em Adicionar back-end e selecione um grupo de instâncias não gerenciadas (
ig-d
no exemplo).Certifique-se de que a opção Usar este grupo de instâncias como grupo de failover para backup não esteja marcada.
Clique em Concluído e em Atualizar.
gcloud
Use o comando gcloud
a seguir para adicionar um back-end primário a um serviço de back-end do balanceador de carga de rede interno atual.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION
Substitua:
BACKEND_SERVICE_NAME
: o nome do serviço de back-end do balanceador de carga. No exemplo, usebe-ilb
;INSTANCE_GROUP_NAME
: o nome do grupo de instâncias a ser adicionado como back-end primário. No exemplo, useig-d
;INSTANCE_GROUP_ZONE
: a zona em que o grupo de instâncias é definido. No exemplo, useus-west1-c
;REGION
: a região do balanceador de carga. No 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:
PROJECT_ID
: ID do projetoREGION
: a região do balanceador de carga. No exemplo, useus-west1
;BACKEND_SERVICE_NAME
: o nome do serviço de back-end do balanceador de carga. No exemplo, usebe-ilb
;INSTANCE_GROUP_NAME
: o nome do grupo de instâncias a ser adicionado como back-end primário. No exemplo, useig-d
;INSTANCE_GROUP_ZONE
é a zona em que o grupo de instâncias é definido. No exemplo, useus-west1-c
;
Como adicionar um back-end de failover
Use este procedimento como um modelo para adicionar um grupo de instâncias
não gerenciadas ao serviço de back-end de um balanceador de carga de rede atual como
back-end de failover. No exemplo de configuração, o procedimento mostra como
adicionar o grupo de instâncias ig-b
como um back-end de failover ao balanceador de carga be-ilb
.
Console
No Console do Google Cloud, acesse a página Balanceamento de carga.
Na guia Balanceadores de carga, clique no nome de um balanceador de carga existente do tipo TCP/UDP (interno) (neste exemplo,
be-ilb
).Clique em Editar
.Em Configuração de back-end, clique em Adicionar back-end e selecione um grupo de instâncias não gerenciadas (
ig-b
no exemplo).Marque a opção Usar este grupo de instâncias como grupo de failover para backup.
Clique em Concluído e em Atualizar.
gcloud
Use o comando gcloud
a seguir para adicionar um back-end de failover a um serviço de back-end do balanceador de carga de rede interno atual.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --failover
Substitua:
BACKEND_SERVICE_NAME
: o nome do serviço de back-end do balanceador de carga. No exemplo, usebe-ilb
;INSTANCE_GROUP_NAME
: o nome do grupo de instâncias a ser adicionado como back-end primário. No exemplo, useig-b
;INSTANCE_GROUP_ZONE
: a zona em que o grupo de instâncias é definido. No exemplo, useus-west1-a
;REGION
é a região do balanceador de carga. No exemplo, useus-west1
;
API
Adicione um back-end de failover 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:
PROJECT_ID
: ID do projetoBACKEND_SERVICE_NAME
: o nome do serviço de back-end do balanceador de carga. No exemplo, usebe-ilb
;INSTANCE_GROUP_NAME
: o nome do grupo de instâncias a ser adicionado como back-end primário. No exemplo, useig-b
;INSTANCE_GROUP_ZONE
: a zona em que o grupo de instâncias é definido. No exemplo, useus-west1-a
;REGION
: a região do balanceador de carga. No exemplo, useus-west1
;
Como converter um back-end primário ou de failover
É possível converter um back-end primário em um de failover ou vice-versa sem precisar remover o grupo de instâncias do serviço de back-end do balanceador de carga de rede interno.
Console
No Console do Google Cloud, acesse a página Balanceamento de carga.
Na guia 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, faça o seguinte:
- Para converter o grupo de instâncias em um back-end de failover, marque a opção Usar este grupo de instâncias como grupo de failover para backup.
- Para converter o grupo de instâncias em um back-end primário, desmarque a opção Usar este grupo de instâncias como grupo de failover para backup.
Clique em Concluído e em Atualizar.
gcloud
Use o comando gcloud
a seguir para converter um back-end principal em
um back-end de failover:
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 comando gcloud
a seguir para converter um back-end de failover em
um 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:
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 ser adicionado como back-end primárioINSTANCE_GROUP_ZONE
: a zona em que o grupo de instâncias é definidoREGION
: a região do balanceador de carga
API
Converter um back-end principal em um back-over de failover ou vice-versa usando o
método
regionBackendServices.patch
.
Para converter um back-end primário em um de failover:
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 failover em um primário:
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:
PROJECT_ID
: ID do 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 ser adicionado como back-end primárioINSTANCE_GROUP_ZONE
: a zona em que o grupo de instâncias é definidoREGION
: a região do balanceador de carga
Como configurar políticas de failover
Nesta seção, descrevemos como gerenciar uma política de failover de um serviço de back-end do balanceador de carga de rede interno. Uma política de failover consiste no seguinte:
- Proporção de failover
- Descarte do tráfego quando todas as VMs de back-end não forem íntegras
- Redução da conexão em failover
Para mais informações sobre os parâmetros de uma política de failover, consulte:
- Como definir uma proporção de failover
- Como descartar tráfego quando não há VMs íntegras
- Como diminuir conexões no failover e no failback
Como definir uma política de failover
Nas instruções a seguir, descrevemos como definir a política de failover de um balanceador de carga de rede de passagem interna existente.
Console
Para definir uma política de failover usando o Console do Google Cloud, é necessário ter pelo menos um back-end de failover.
No Console do Google Cloud, acesse a página Balanceamento de carga.
Na guia Balanceadores de carga, clique no nome de um balanceador de carga existente do tipo TCP/UDP (interno).
Clique em Editar
.Verifique se você tem pelo menos um back-end de failover. É preciso que em pelo menos um dos back-ends do balanceador de carga a opção Usar este grupo de instâncias como grupo de failover para backup esteja marcada.
Clique em Configurações avançadas.
- Em Política de failover, defina a Proporção de failover como um valor
entre
0.0
e1.0
, inclusive. - Marque a caixa ao lado de Ativar descarte de tráfego se você quiser descartar o tráfego quando todas as VMs ativas e todas as de backup não forem íntegras.
- Marque a caixa ao lado de Ativar a redução da conexão em failover se você quiser encerrar as conexões atuais rapidamente durante o failover.
- Em Política de failover, defina a Proporção de failover como um valor
entre
Clique em Analisar e finalizar e em Atualizar.
gcloud
Para definir uma política de failover usando a 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:
BACKEND_SERVICE_NAME
: o nome do serviço de back-end do balanceador de carga. No exemplo, usebe-ilb
;REGION
: a região do balanceador de carga. No exemplo, useus-west1
;FAILOVER_RATIO
: a proporção de failover. Os valores possíveis estão entre0.0
e1.0
, inclusive. No exemplo, use0.75
;--drop-traffic-if-unhealthy
instruirá o balanceador de carga a descartar o tráfego quando todas as VMs principais e de backup não estiverem íntegras. Mude esse valor para--no-drop-traffic-if-unhealthy
se você quiser distribuir o tráfego entre todas as VMs principais quando todas as VMs de back-end não estiverem íntegras;--no-connection-drain-on-failover
instrui o balanceador de carga a encerrar as conexões TCP existentes rapidamente durante o failover. Use--connection-drain-on-failover
para ativar a diminuição da conexão durante o failover.
API
Use o método
regionBackendServices.patch
para definir a política de failover.
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:
PROJECT_ID
: ID do projetoREGION
: a região do balanceador de cargaBACKEND_SERVICE_NAME
: o nome do serviço de back-end do balanceador de cargaFAILOVER_RATIO
: a proporção de failover. Os valores possíveis estão entre0.0
e1.0
, inclusive.- Definir
dropTrafficIfUnhealthy
comotrue
instruirá o balanceador de carga a descartar o tráfego quando todas as VMs principais e de backup não estiverem íntegras. Defina comofalse
se você quiser distribuir o tráfego entre todas as VMs principais quando todas as VMs de back-end não estiverem íntegras; - Definir
disableConnectionDrainOnFailover
comotrue
instruirá o balanceador de carga a encerrar as conexões TCP existentes rapidamente ao fazer um failover. Defina comofalse
para ativar a diminuição da conexão durante o failover.
Como visualizar uma política de failover
As instruções a seguir descrevem como visualizar a política de failover atual de um balanceador de carga de rede de passagem interna.
Console
O console do Google Cloud mostra as configurações de política de failover atuais quando você edita um balanceador de carga de rede de passagem interna. Consulte Como definir uma política de failover para mais instruções.
gcloud
Para listar as configurações da política de failover usando a CLI gcloud, use o seguinte comando: As configurações não definidas em uma política de failover utilizam os valores padrão.
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION \ --format="get(failoverPolicy)"
Substitua:
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 visualizar a política de failover.
A resposta à solicitação de API mostra a política de failover. Veja um exemplo abaixo.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
Substitua:
PROJECT_ID
: ID do 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 ... }
A seguir
- Para noções básicas importantes, consulte Visão geral do balanceador de carga de rede de passagem interna.
- Para informações importantes sobre failover, consulte Conceitos de failover para balanceadores de carga de rede de passagem interna.
- Consulte Configurar um balanceador de carga de rede de passagem interna para ver um exemplo de configuração de balanceador de carga de rede de passagem interna.
- Consulte Geração de registros e monitoramento do balanceador de carga de rede interno de passagem para informações sobre como configurar o Logging e o Monitoring para balanceamento de carga de rede de passagem interna.
- Para informações sobre como acessar balanceadores de carga de rede de passagem interna por redes de peering conectadas à rede VPC, consulte esta página.
- Para informações sobre como resolver problemas com o balanceador de carga de rede de passagem interna, consulte esta página.
- Limpe a configuração do balanceador de carga.