Como configurar o failover para o balanceamento de carga TCP/UDP interno

Neste guia, você usará um exemplo para aprender a configurar o failover para um balanceador de carga TCP/UDP interno do Google Cloud Platform. Antes de seguir este guia, familiarize-se com os seguintes tópicos:

Permissões

Para seguir este guia, você precisa criar instâncias e modificar uma rede em um projeto. É necessário ser o 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 de instâncias

Configuração

Neste guia, você aprenderá a configurar e testar um balanceador de carga TCP/UDP interno que usa o failover. Nas etapas desta seção, você fará as configurações do seguinte:

  1. Uma amostra de rede VPC com sub-redes personalizadas
  2. Regras de firewall que permitem conexões de entrada com VMs de back-end
  3. VMs de back-end:
    • Um back-end primário 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
  4. Uma VM cliente para testar conexões e verificar o comportamento do failover
  5. Os componentes do balanceador de carga TCP/UDP interno 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 é assim:

Exemplo simples de failover para balanceamento de carga TCP/UDP interno (clique para ampliar)
Exemplo simples de failover para balanceamento de carga TCP/UDP interno (clique para ampliar)

Como configurar uma rede, região e sub-rede

Neste exemplo, a rede VPC, a região e a sub-rede a seguir são usadas:

Para criar o exemplo de rede e sub-rede, siga estas etapas.

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud Platform.
    Acessar a página "Redes VPC"
  2. Clique em Criar rede VPC.
  3. Em Nome, insira lb-network.
  4. Na seção Sub-redes:
    • Defina o Modo de criação da sub-rede como Personalizado.
    • Na seção Nova sub-rede, insira as seguintes informações:
      • Nome: lb-subnet
      • Região: us-west1
      • Intervalo de endereços IP: 10.1.2.0/24
      • Clique em Concluído
  5. Clique em Criar.

gcloud

  1. Crie a rede VPC personalizada:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Crie uma sub-rede na rede lb-network da região us-west1:

    gcloud compute networks subnets create lb-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

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. Permite o tráfego das origens no intervalo 10.1.2.0/24 e o tráfego de entrada de qualquer origem em lb-subnet para as instâncias (VMs) que estão tendo a carga balanceada.

  • fw-allow-ssh: uma regra de entrada aplicada às instâncias que estão tendo a carga balanceada. Permite a conectividade SSH de entrada na porta TCP 22 a partir de qualquer endereço. É 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, a tag de destino allow-ssh é usada para identificar as VMs a que a regra de firewall é aplicada.

  • fw-allow-health-check: uma regra de entrada aplicável às instâncias que estão tendo a carga balanceada. Permite o tráfego dos sistemas de verificação de integridade do GCP, 130.211.0.0/22 e 35.191.0.0/16. Neste exemplo, a tag de destino allow-health-check é usada para identificar as instâncias a que a regra é aplicada.

Sem essas regras de firewall, a regra padrão de negação de entrada bloqueará o tráfego de entrada para as instâncias de back-end.

Console

  1. Acesse a página "Regras de firewall" no Console do Google Cloud Platform.
    Acessar a página "Regras de firewall"
  2. Clique em Criar regra de firewall e insira as seguintes informações para criar a regra para permitir 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
    • Destinos: todas as instâncias na rede
    • Filtro de origem: IP ranges
    • Intervalos de IP de origem: 10.1.2.0/24
    • Protocolos e portas: permitir todos
  3. Clique em Criar.
  4. Clique em Criar regra de firewall novamente para criar a regra e permitir conexõ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
    • Destinos: tags de destino especificadas
    • Tags de destino: allow-ssh
    • Filtro de origem: IP ranges
    • Intervalos de IP de origem: 0.0.0.0/0.
    • Protocolos e portas: escolha Protocolos e portas especificados e digite tcp:22
  5. Clique em Criar.
  6. Clique em Criar regra de firewall pela terceira vez para criar a regra e permitir verificações de integridade do GCP:
    • Nome: fw-allow-health-check
    • Rede: lb-network
    • Prioridade: 1000
    • Direção do tráfego: entrada
    • Ação na correspondência: permitir
    • Destinos: tags de destino especificadas
    • Tags de destino: allow-health-check
    • Filtro de origem: IP ranges
    • Intervalos de IP de origem: 130.211.0.0/22 e 35.191.0.0/16
    • Protocolos e portas: permitir todos
  7. Clique em Criar.

gcloud

  1. Crie a regra de firewall fw-allow-lb-subnet para permitir a comunicação 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,icmp
    
  2. Crie a regra de firewall fw-allow-ssh para permitir a conectividade SSH com as VMs usando a tag de rede allow-ssh. Quando você omite source-ranges, o GCP interpreta a regra como qualquer origem.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  3. Crie a regra fw-allow-health-check para permitir verificações de integridade do GCP.

    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
    

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 em us-west1-a é um back-end primário com duas VMs:
    • vm-a1
    • vm-a2
  • O grupo de instâncias ig-c em us-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. Cada VM recebe um endereço IP interno em lb-subnet para ter acesso de cliente e um endereço IP público externo temporário para ter acesso SSH. Para mais informações sobre como remover endereços IP externos, consulte esta página.

Por padrão, o Apache é configurado para ser vinculado a qualquer endereço IP. Os balanceadores de carga TCP/UDP internos preservam o IP de destino para enviar pacotes.

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 fornecido a uma VM de back-end por um balanceador de carga TCP/UDP interno.

Para simplificar as instruções, todas as VMs primárias e de backup executam o Debian GNU/Linux 9.

Console

Criar VMs de back-end

  1. Acesse a página "Instâncias de VM" no Console do Google Cloud Platform.
    Acessar a página "Instâncias de VM"
  2. 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
  3. Clique em Criar instância.
  4. Defina o Nome como indicado na etapa 2.
  5. Na Região, escolha us-west1, e selecione uma Zona como indicado na etapa 2.
  6. Na seção Disco de inicialização, certifique-se de que a imagem selecionada seja Debian GNU/Linux 9 Stretch. Clique em Escolher para alterar a imagem se necessário.
  7. Clique em Gerenciamento, segurança, discos, rede, locatário único e faça as alterações a seguir:

    • Clique em Rede e adicione estas Tags de rede: allow-ssh e allow-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
    • Clique em Gerenciamento. No campo Script de inicialização, copie e cole o conteúdo de 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://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
  8. Clique em Criar.

Criar grupos de instâncias

  1. Acesse a página "Grupos de instâncias" no Console do Google Cloud Platform.
    Acessar a página "Grupos de instâncias"
  2. 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 e vm-a2
    • Grupo de instâncias: ig-c, zona: us-west1-c, VMs: vm-c1 e vm-c2
  3. Clique em Criar grupo de instâncias.
  4. Defina o Nome como indicado na etapa 2.
  5. Na seção Local, selecione Única zona, defina Região como us-west1 e escolha uma Zona como indicado na etapa 2.
  6. Na seção Tipo de grupo, selecione Grupo de instâncias não gerenciadas.
  7. Em Rede, insira lb-network.
  8. Em Sub-rede, insira lb-subnet.
  9. Na seção Instâncias de VM, adicione as VMs como indicado na etapa 2.
  10. Clique em Criar.

gcloud

  1. Execute o comando a seguir quatro vezes para criar quatro VMs. Use estas quatro combinações de [VM-NAME] e [ZONE]. O conteúdo do script é o mesmo para as quatro VMs.

    • [VM-NAME] de vm-a1 e [ZONE] de us-west1-a
    • [VM-NAME] de vm-a2 e [ZONE] de us-west1-a
    • [VM-NAME] de vm-c1 e [ZONE] de us-west1-c
    • [VM-NAME] de vm-c2 e [ZONE] de us-west1-c
    gcloud compute instances create [VM-NAME] \
        --zone=[ZONE] \
        --image-family=debian-9 \
        --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://169.254.169.254/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'
    
  2. 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
    
  3. 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
    

Como criar uma VM cliente

Neste exemplo, você criará uma VM cliente, vm-client, na mesma região que o balanceador de carga. O cliente é usado para demonstrar o funcionamento do failover.

Console

  1. Acesse a página "Instâncias de VMs" no console do Google Cloud Platform.
    Acessar a página "Instâncias de VMs"
  2. Clique em Criar instância.
  3. Defina o Nome como vm-client.
  4. Defina a Zona como us-west1-a.
  5. Clique em Gerenciamento, segurança, discos, rede, locatário único e faça as alterações a seguir:
    • Clique em Rede e adicione allow-ssh às Tags de rede.
    • 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
  6. 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. Neste exemplo, o cliente está na zona us-west1-a e usa a mesma sub-rede das VMs primária e de backup.

gcloud compute instances create vm-client \
    --zone=us-west1-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=lb-subnet

Como configurar componentes do balanceador de carga

Nestas etapas, você configurará todos os componentes do balanceador de carga TCP/UDP interno, começando com a verificação de integridade e o serviço de back-end até os componentes de front-end:

  • Verificação de integridade: neste exemplo, é usada uma verificação de integridade HTTP que só procura uma resposta HTTP 200 (OK). Para mais informações, consulte a seção sobre verificações de integridade da visão geral do balanceamento de carga TCP/UDP interno.

  • 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, é criada uma única regra de encaminhamento interna.

  • Endereço IP interno: neste exemplo, um endereço IP interno, 10.1.2.99, é especificado ao criar a regra de encaminhamento.

Console

Criar o balanceador de carga e configurar um serviço de back-end

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud Platform.
    Acessar a página "Balanceamento de carga"
  2. Clique em Criar balanceador de carga.
  3. Em Balanceamento de carga TCP, clique em Iniciar configuração.
  4. Em Somente voltado para a Internet ou interno, selecione Apenas entre minhas VMs.
  5. Clique em Continuar.
  6. Defina o Nome como be-ilb.
  7. Clique em Configuração de back-end e faça as alterações a seguir:
    1. Região: us-west1.
    2. Rede: lb-network.
    3. Em Back-ends, na seção Novo item, selecione o grupo de instâncias ig-a. Garanta que a opção Usar este grupo de instâncias como grupo de failover para backup não esteja marcada. Clique em Concluído.
    4. Clique em Adicionar back-end. Na seção Novo item 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.
    5. Em Verificação de integridade, escolha Criar outra verificação de integridade, insira as informações a seguir e clique em Salvar e continuar:
      • Nome: hc-http-80
      • Protocolo: HTTP
      • Porta: 80
      • Protocolo de proxy: NONE
      • Caminho da solicitação: /
    6. Clique em Configurações avançadas. Na seção Política de failover, configure o seguinte:
      • Proporção de failover: 0.75.
      • Marque a opção Ativar a redução da conexão em failover.
    7. 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.
  8. Clique em Configuração do front-end. Na seção Novo IP do front-end e porta, faça as seguintes alterações:
    1. Nome: fr-ilb
    2. Sub-rede: ilb-subnet.
    3. Em IP interno, escolha Reservar um endereço IP interno e 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
    4. Portas: escolha Porta única e insira 80 no Número da porta.
    5. Verifique se há uma marca de seleção azul ao lado de Configuração do front-end antes de continuar. Revise esta etapa se não houver marca.
  9. Clique em Analisar e finalizar. Verifique suas configurações.
  10. Clique em Criar.

gcloud

  1. 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 \
        --port=80
    
  2. Crie o serviço de back-end do tráfego HTTP:

    gcloud beta compute backend-services create be-ilb \
        --load-balancing-scheme=internal \
        --protocol=tcp \
        --region=us-west1 \
        --health-checks=hc-http-80 \
        --failover-ratio 0.75
    
  3. 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
    
  4. Adicione o back-end de failover ao serviço de back-end:

    gcloud beta compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-c \
        --instance-group-zone=us-west1-c \
        --failover
    
  5. Crie uma regra de encaminhamento para o serviço de back-end. Ao fazer isso, especifique 10.1.2.99 como 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
    

Como testar

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.

  1. Conecte-se à instância da VM cliente.

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Faça uma solicitação da Web para o balanceador de carga usando curl para entrar em contato com o endereço IP dele.

    curl http://10.1.2.99
    
  3. Anote o texto retornado pelo comando curl. Esse texto exibe o nome da VM de back-end que gera a resposta. 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 primárias, vm-a1 e vm-a2
  • As duas VMs de backup, vm-c1 e vm-c2

Siga o procedimento de teste do cliente. Repita a segunda etapa algumas vezes. O comportamento esperado é que o tráfego seja veiculado pelas duas VMs primárias, vm-a1 e vm-a2, porque ambas são íntegras. Você verá que cada VM primária fornece uma resposta quase que na metade do tempo. Isso acontece porque nenhuma afinidade de sessão foi configurada nesse balanceador de carga.

Como testar o failover

No teste a seguir, você simula a falha de vm-a1 para verificar o comportamento do failover.

  1. Conecte-se à VM vm-a1.

    gcloud compute ssh vm-a1 --zone=us-west1-a
    
  2. Interrompa o servidor da Web Apache. Depois de dez segundos, o GCP considerará esta VM como não íntegra. A verificação de integridade hc-http-80 que você criou na configuração usa o intervalo padrão de cinco segundos e o limite não íntegro de duas sondagens com falha consecutivas.

    sudo apachectl stop
    
  3. Siga o procedimento de teste do cliente. Repita a segunda etapa algumas vezes. O comportamento esperado é que o tráfego seja fornecido pelas duas VMs de backup, vm-c1 e vm-c2. Como apenas uma VM primária, vm-a2, é íntegra, a proporção entre VMs primárias íntegras e o total de VMs primárias é de 0.5. Esse número é menor do que o limite de failover de 0.75. Por isso, o GCP reconfigurou o pool ativo do balanceador de carga para usar as VMs de backup. Você verá que cada VM de backup exibe uma resposta quase que na metade do tempo enquanto não houver afinidade de sessão configurada nesse balanceador de carga.

Como testar o failback

No teste a seguir, você reinicia o servidor Apache em vm-a1 para simular o failback.

  1. Conecte-se à VM vm-a1.

    gcloud compute ssh vm-a1 --zone=us-west1-a
    
  2. Inicie o servidor da Web Apache e aguarde 10 segundos.

    sudo apachectl start
    
  3. Siga o procedimento de teste do cliente. Repita a segunda etapa algumas vezes. O comportamento esperado é que o tráfego seja fornecido pelas duas VMs primárias, vm-a1 e vm-a2. Quando ambas as VMs primárias são íntegras, a proporção entre VMs primárias íntegras e o total de VMs primárias é de 1.0, superior ao limite de failover, de 0.75. Por isso, o GCP configurou o pool ativo para usar as VMs primárias novamente.

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 em us-west1-c, é exibido como um back-end primário com duas VMs:
    • vm-d1
    • vm-d2
  • Um quarto grupo de instâncias, ig-b em us-west1-a, é exibido como um back-end de failover com duas VMs:
    • vm-b1
    • vm-b2

A arquitetura modificada deste exemplo é assim:

Failover de balanceamento de carga TCP/UDP interno multizona (clique para ampliar)
Failover de balanceamento de carga TCP/UDP interno multizona (clique para ampliar)

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

  1. Acesse a página "Instâncias de VM" no Console do Google Cloud Platform.
    Acessar a página "Instâncias de VM"
  2. 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
  3. Clique em Criar instância.
  4. Defina o Nome como indicado na etapa 2.
  5. Na Região, escolha us-west1, e selecione uma Zona como indicado na etapa 2.
  6. Na seção Disco de inicialização, certifique-se de que a imagem selecionada seja Debian GNU/Linux 9 Stretch. Clique em Escolher para alterar a imagem se necessário.
  7. Clique em Gerenciamento, segurança, discos, rede, locatário único e faça as alterações a seguir:

    • Clique em Rede e adicione estas Tags de rede: allow-ssh e allow-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
    • Clique em Gerenciamento. No campo Script de inicialização, copie e cole o conteúdo de 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://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
  8. Clique em Criar.

Criar grupos de instâncias

  1. Acesse a página "Grupos de instâncias" no Console do Google Cloud Platform.
    Acessar a página "Grupos de instâncias"
  2. 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 e vm-b2
    • Grupo de instâncias: ig-d, zona: us-west1-c, VMs: vm-d1 e vm-d2
  3. Clique em Criar grupo de instâncias.
  4. Defina o Nome como indicado na etapa 2.
  5. Na seção Local, selecione Única zona, defina Região como us-west1 e escolha uma Zona como indicado na etapa 2.
  6. Na seção Tipo de grupo, selecione Grupo de instâncias não gerenciadas.
  7. Em Rede, insira lb-network.
  8. Em Sub-rede, insira lb-subnet.
  9. Na seção Instâncias de VM, adicione as VMs como indicado na etapa 2.
  10. Clique em Criar.

gcloud

  1. Execute o comando a seguir quatro vezes para criar quatro VMs. Use estas quatro combinações de [VM-NAME] e [ZONE]. O conteúdo do script é o mesmo para as quatro VMs.

    • [VM-NAME] de vm-b1 e [ZONE] de us-west1-a
    • [VM-NAME] de vm-b2 e [ZONE] de us-west1-a
    • [VM-NAME] de vm-d1 e [ZONE] de us-west1-c
    • [VM-NAME] de vm-d2 e [ZONE] de us-west1-c
    gcloud compute instances create [VM-NAME] \
        --zone=[ZONE] \
        --image-family=debian-9 \
        --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://169.254.169.254/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'
    
  2. 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
    
  3. 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
    

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 TCP/UDP interno atual como back-end primário. No exemplo de configuração, o procedimento mostra como adicionar o grupo de instâncias ig-d como um back-end primário ao balanceador de carga be-ilb.

Console

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud Platform.
    Acessar a página "Balanceamento de carga"
  2. Na guia Balanceadores de carga, clique no nome de um balanceador de carga TCP ou UDP interno. Neste exemplo, ele é be-ilb.
  3. Clique em Editar.
  4. Na Configuração de back-end, clique em Adicionar back-end e selecione um grupo de instâncias não gerenciadas. Neste exemplo, ele é ig-d.
  5. Garanta que a opção Usar este grupo de instâncias como grupo de failover para backup não esteja marcada.
  6. 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 TCP/UDP interno atual.

gcloud beta compute backend-services add-backend [BACKEND_SERVICE_NAME] \
   --instance-group [INSTANCE_GROUP_NAME] \
   --instance-group-zone [INSTANCE_GROUP_ZONE] \
   --region [REGION]

em que:

  • [BACKEND_SERVICE_NAME] é o nome do serviço de back-end do balanceador de carga. No exemplo, use be-ilb;
  • [INSTANCE_GROUP_NAME] é o nome do grupo de instâncias a ser adicionado como back-end primário. No exemplo, use ig-d;
  • [INSTANCE_GROUP_ZONE] é a zona em que o grupo de instâncias é definido. No exemplo, use us-west1-c;
    • [REGION] é a região do balanceador de carga. No exemplo, use us-west1.

API

Use o método regionBackendServices.patch para adicionar um back-end primário a um serviço de back-end atual

POST https://www.googleapis.com/compute/beta/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]"
    }
  ]
}

em que:

  • [PROJECT_ID] é o ID do projeto;
  • [REGION] é a região do balanceador de carga. No exemplo, use us-west1;
  • [BACKEND_SERVICE_NAME] é o nome do serviço de back-end do balanceador de carga. No exemplo, use be-ilb;
  • [INSTANCE_GROUP_ZONE] é a zona em que o grupo de instâncias é definido. No exemplo, use us-west1-c;
  • [INSTANCE_GROUP_NAME] é o nome do grupo de instâncias a ser adicionado como back-end primário. No exemplo, use ig-d.

Como adicionar um back-end de failover

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 TCP/UDP interno 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

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud Platform.
    Acessar a página "Balanceamento de carga"
  2. Na guia Balanceadores de carga, clique no nome de um balanceador de carga TCP ou UDP interno. Neste exemplo, ele é be-ilb.
  3. Clique em Editar.
  4. Na Configuração de back-end, clique em Adicionar back-end e selecione um grupo de instâncias não gerenciadas. Neste exemplo, ele é ig-b.
  5. Marque a opção Usar este grupo de instâncias como grupo de failover para backup.
  6. 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 TCP/UDP interno atual.

gcloud beta compute backend-services add-backend [BACKEND_SERVICE_NAME] \
   --instance-group [INSTANCE_GROUP_NAME] \
   --instance-group-zone [INSTANCE_GROUP_ZONE] \
   --region [REGION] \
   --failover

em que:

  • [BACKEND_SERVICE_NAME] é o nome do serviço de back-end do balanceador de carga. No exemplo, use be-ilb;
  • [INSTANCE_GROUP_NAME] é o nome do grupo de instâncias a ser adicionado como back-end de failover. No exemplo, use ig-b;
  • [INSTANCE_GROUP_ZONE] é a zona em que o grupo de instâncias é definido. No exemplo, use us-west1-a;
  • [REGION] é a região do balanceador de carga. No exemplo, use us-west1.

API

Use o método regionBackendServices.patch para adicionar um back-end de failover a um serviço de back-end atual

POST https://www.googleapis.com/compute/beta/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]"
    }
  ]
}

em que:

  • [PROJECT_ID] é o ID do projeto;
  • [REGION] é a região do balanceador de carga. No exemplo, use us-west1;
  • [BACKEND_SERVICE_NAME] é o nome do serviço de back-end do balanceador de carga. No exemplo, use be-ilb;
  • [INSTANCE_GROUP_ZONE] é a zona em que o grupo de instâncias é definido. No exemplo, use us-west1-a;
  • [INSTANCE_GROUP_NAME] é o nome do grupo de instâncias a ser adicionado como back-end de failover. No exemplo, use ig-b.

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 TCP/UDP interno.

Console

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud Platform.
    Acessar a página "Balanceamento de carga"
  2. Na guia Balanceadores de carga, clique no nome de um balanceador de carga TCP ou UDP interno.
  3. Clique em Editar.
  4. 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.
  5. Clique em Concluído e em Atualizar.

gcloud

Use o comando gcloud a seguir para converter um back-end primário atual em um de failover:

gcloud beta 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 atual em um primário:

gcloud beta compute backend-services update-backend [BACKEND_SERVICE_NAME] \
   --instance-group [INSTANCE_GROUP_NAME] \
   --instance-group-zone [INSTANCE_GROUP_ZONE] \
   --region [REGION] \
   --no-failover

em que:

  • [BACKEND_SERVICE_NAME] é o nome do serviço de back-end do balanceador de carga;
  • [INSTANCE_GROUP_NAME] é o nome do grupo de instâncias;
  • [INSTANCE_GROUP_ZONE] é a zona em que o grupo de instâncias é definido;
  • [REGION] é a região do balanceador de carga.

API

Use o método regionBackendServices.patch para converter um back-end primário em um de failover ou vice-versa

Para converter um back-end primário em um de failover:

POST https://www.googleapis.com/compute/beta/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://www.googleapis.com/compute/beta/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]"
    }
  ],
}

em que:

  • [PROJECT_ID] é o ID do projeto;
  • [REGION] é a região do balanceador de carga;
  • [BACKEND_SERVICE_NAME] é o nome do serviço de back-end do balanceador de carga;
  • [INSTANCE_GROUP_ZONE] é a zona em que o grupo de instâncias é definido;
  • [INSTANCE_GROUP_NAME] é o nome do grupo de instâncias.

Como configurar políticas de failover

Nesta seção, você aprenderá a gerenciar uma política de failover de um serviço de back-end do balanceador de carga TCP/UDP 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 política de failover

Veja nas instruções a seguir como definir a política de failover de um balanceador de carga TCP/UDP interno atual.

Console

Para definir uma política de failover usando o Console do GCP, você precisa ter pelo menos um back-end de failover.

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud Platform.
    Acessar a página "Balanceamento de carga"
  2. Na guia Balanceadores de carga, selecione um TCP (interno) ou UDP (interno).
  3. Clique em Editar.
  4. 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.
  5. Clique em Configurações avançadas.
    • Em Política de failover, defina a Proporção de failover como um valor entre 0.0 e 1.0.
    • 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.
  6. Clique em Analisar e finalizar e em Atualizar.

gcloud

Para definir uma política de failover usando a ferramenta de linha de comando gcloud, atualize o serviço de back-end do balanceador de carga:

gcloud beta compute backend-services update [BACKEND_SERVICE_NAME] \
   --region [REGION] \
   --failover-ratio [FAILOVER_RATIO] \
   --drop-traffic-if-unhealthy \
   --no-connection-drain-on-failover

em que:

  • [BACKEND_SERVICE_NAME] é o nome do serviço de back-end do balanceador de carga. No exemplo, use be-ilb;
  • [REGION] é a região do balanceador de carga. No exemplo, use us-west1;
  • [FAILOVER_RATIO] é a proporção de failover. Os valores possíveis estão entre 0.0 e 1.0. No exemplo, use 0.75;
  • --drop-traffic-if-unhealthy instrui o balanceador de carga a descartar o tráfego quando todas as VMs primárias e todas as de backup não forem íntegras. Altere esse valor para --no-drop-traffic-if-unhealthy se quiser distribuir o tráfego entre todas as VMs primárias quando todas as de back-end não forem íntegras;
  • --no-connection-drain-on-failover instrui o balanceador de carga a encerrar as conexões TCP atuais rapidamente durante o failover. Use --connection-drain-on-failover para ativar a redução da conexão durante o failover.

API

Use o método regionBackendServices.patch para definir a política de failover.

PATCH https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/backendServices/[BACKEND_SERVICE_NAME]

{
  "failoverPolicy":
  {
    "failoverRatio": [FAILOVER_RATIO],
    "dropTrafficIfUnhealthy": [true|false],
    "disableConnectionDrainOnFailover": [true|false]
  }
}

em que:

  • [PROJECT_ID] é o ID do projeto;
  • [REGION] é a região do balanceador de carga;
  • [BACKEND_SERVICE_NAME] é o nome do serviço de back-end do balanceador de carga;
  • [FAILOVER_RATIO] é a proporção de failover. Os valores possíveis estão entre 0.0 e 1.0;
  • definir dropTrafficIfUnhealthy como true instrui o balanceador de carga a descartar o tráfego quando todas as VMs primárias e todas as de backup não forem íntegras. Defina essa opção como false se quiser distribuir o tráfego entre todas as VMs primárias quando todas as de back-end não forem íntegras;
  • definir disableConnectionDrainOnFailover como true instrui o balanceador de carga a encerrar as conexões TCP atuais rapidamente durante o failover. Defina essa opção para como false para ativar a redução da conexão durante o failover.

Como visualizar uma política de failover

Veja nas instruções a seguir como visualizar a política de failover atual de um balanceador de carga TCP/UDP interno.

Console

No Console do GCP, você verá as configurações da política de failover atual ao editar um balanceador de carga TCP/UDP interno. 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 ferramenta de linha de comando gcloud, execute o comando a seguir. As configurações não definidas em uma política de failover utilizam os valores padrão.

gcloud beta compute backend-services describe [BACKEND_SERVICE_NAME] \
   --region [REGION] \
   --format="get(failoverPolicy)"

em que:

  • [BACKEND_SERVICE_NAME] é o nome do serviço de back-end do balanceador de carga. No exemplo, use be-ilb;
  • [REGION] é a região do balanceador de carga. No exemplo, use us-west1.

API

Use o método regionBackendServices.get para ver a política de failover.

A resposta à solicitação de API mostra a política de failover. Veja um exemplo abaixo.

GET https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/backendServices/[BACKEND_SERVICE_NAME]

em que:

  • [PROJECT_ID] é o ID do projeto;
  • [REGION] é a região do balanceador de carga;
  • [BACKEND_SERVICE_NAME] é o nome do serviço de back-end do balanceador de carga.
{
...
"failoverPolicy": {
"disableConnectionDrainOnFailover": false,
"dropTrafficIfUnhealthy": false,
"failoverRatio": 0.75
...
}

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…