Migrar um balanceador de carga de rede de passagem externa do pool de destino para o serviço de back-end

Neste tutorial, você verá instruções sobre como migrar um balanceador de carga de rede atual de um back-end de pool de destino para um serviço de back-end regional.

A migração para um serviço de back-end regional permite que você aproveite recursos como verificações de integridade não legadas (para TCP, SSL, HTTP, HTTPS e HTTP/2), grupos de instâncias gerenciadas, diminuição da conexão e política de failover.


Para seguir as instruções detalhadas desta tarefa diretamente no console do Google Cloud, clique em Orientação:

Orientações


Neste guia, orientamos você na migração do seguinte balanceador de carga de rede baseado no pool de destino de exemplo para usar um serviço de back-end regional.

Antes: balanceador de carga de rede de passagem externa com um pool de destino
Antes: Balanceador de carga de rede de passagem externa com um pool de destino

A implantação do balanceador de carga de rede de passagem externa baseada em serviço de back-end terá esta aparência.

Depois: balanceador de carga de rede de passagem externa com um serviço de back-end regional
Depois: Balanceador de carga de rede de passagem externa com um serviço de back-end regional

Neste exemplo, presumimos que você tenha um balanceador de carga de rede baseado em pool de destino tradicional com duas instâncias na zona us-central-1a e duas instâncias na zona us-central-1c.

As etapas de alto nível necessárias para essa transição são as seguintes:

  1. Agrupe as instâncias do pool de destino em grupos de instâncias.

    Os serviços de back-end funcionam somente com grupos de instâncias gerenciadas ou não gerenciadas. Não há limite no número de instâncias que podem ser colocadas em um único pool de destino, mas os grupos de instâncias têm um tamanho máximo. Se o pool de destino tiver mais do que esse número máximo de instâncias, será preciso dividir os back-ends em vários grupos de instâncias.

    Se a implantação atual incluir um pool de destino de backup, crie um grupo de instâncias separado para essas instâncias. Esse grupo de instâncias é configurado como um grupo de failover.

  2. Criar um serviço de back-end regional.

    Se a implantação incluir um pool de destino de backup, será necessário especificar uma proporção de failover ao criar o serviço de back-end. Isso deve corresponder à proporção de failover configurada anteriormente para a implantação do pool de destino.

  3. Adicione grupos de instância (criados anteriormente) ao serviço de back-end.

    Se a implantação incluir um pool de destino de backup, marque o grupo de instâncias de failover correspondente com uma sinalização --failover ao adicioná-lo ao serviço de back-end.

  4. Configure uma regra de encaminhamento que aponte para o novo serviço de back-end.

    Escolha uma das seguintes opções:

    • Atualize a regra de encaminhamento atual para apontar para o serviço de back-end (recomendado).

    • Crie um novo encaminhamento que aponte para o serviço de back-end. Isso requer que você crie um novo endereço IP para o front-end do balanceador de carga. Em seguida, modifique as configurações de DNS para fazer a transição do endereço IP do balanceador de carga baseado em pool de destino para o novo endereço IP.

Antes de começar

Instale a CLI do Google Cloud. Para ter uma visão geral completa da ferramenta, consulte o guia dela. Encontre comandos relacionados ao balanceamento de carga no grupo de comandos gcloud compute.

Caso ainda não tenha usado a CLI do Google Cloud, primeiro execute gcloud init para autenticar.

Esse guia pressupõe que você esteja familiarizado com a ferramenta bash.

Identifique os back-ends e a regra de encaminhamento a serem migrados

  1. Para listar todos os pools de destino, execute o comando a seguir no Cloud Shell:

    gcloud compute target-pools list
    

    Anote o nome do pool de destino de onde será feita a migração. Depois, esse nome será chamado de TARGET_POOL_NAME.

  2. Para listar todas as instâncias de VM no pool de destino TARGET_POOL_NAME, execute o comando no Cloud Shell:

    gcloud compute target-pools describe TARGET_POOL_NAME \
      --region=us-central1
    

    Anote os nomes das instâncias de VM. Esses nomes serão chamados posteriormente de BACKEND_INSTANCE1, BACKEND_INSTANCE2, BACKEND_INSTANCE3 e BACKEND_INSTANCE4.

  3. Para listar as regras de encaminhamento no balanceador de carga de rede de passagem externa, execute o comando no Cloud Shell:

    gcloud compute forwarding-rules list
      --filter="target: ( TARGET_POOL_NAME )"
    

    Anote o nome da regra de encaminhamento. Depois, esse nome será chamado de FORWARDING_RULE.

Como criar os grupos de instâncias não gerenciadas por zona

Crie um grupo de instâncias não gerenciadas por zona para cada uma das zonas em que você tem back-ends. Dependendo da sua configuração, é possível dividir suas instâncias em quantos grupos forem necessários. No nosso exemplo, estamos usando apenas dois grupos de instâncias, um para cada zona, e colocando todas as VMs de back-end em uma determinada zona no grupo de instâncias associado.

Para este exemplo, criamos dois grupos de instâncias: um na zona uc-central1-a e outro na zona us-central1-c.

Configurar os grupos de instâncias

Console

  1. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique em Criar grupo de instâncias.
  3. No painel esquerdo, selecione Novo grupo de instâncias não gerenciadas.
  4. Em Nome, insira ig-us-1.
  5. Em Região, selecione us-central1.
  6. Em Zona, selecione us-central1-a.
  7. Selecione a Rede e a Sub-rede, dependendo de onde suas instâncias estão localizadas. Neste exemplo, as instâncias do pool de destino estão na rede e sub-rede default.
  8. Para adicionar instâncias ao grupo de instâncias, na seção Instâncias de VM
    , selecione as duas instâncias BACKEND_INSTANCE1 e BACKEND_INSTANCE2.
  9. Clique em Criar.
  10. Repita essas etapas para criar um segundo grupo de instâncias com as seguintes especificações:

    • Name: ig-us-2
    • Região: us-central1
    • Zona: us-central1-c

    Adicione as duas instâncias BACKEND_INSTANCE3 e BACKEND_INSTANCE4 na zona us-central1-c a este grupo de instâncias.

  11. Se a implantação do balanceador de carga atual também tiver um pool de destino de backup, repita essas etapas para criar um grupo separado de instâncias de failover para essas instâncias.

gcloud

  1. Crie um grupo de instâncias não gerenciadas na zona us-central1-a com o comando gcloud compute instance-groups unmanaged create.

    gcloud compute instance-groups unmanaged create ig-us-1 \
        --zone us-central1-a
    
  2. Crie um segundo grupo de instâncias não-gerenciadas na zona us-central1-c.

    gcloud compute instance-groups unmanaged create ig-us-2 \
        --zone us-central1-c
    
  3. Adicione instâncias ao grupo ig-us-1.

    gcloud compute instance-groups unmanaged add-instances ig-us-1 \
        --instances BACKEND_INSTANCE_1,BACKEND_INSTANCE_2 \
        --zone us-central1-a
    
  4. Adicione instâncias ao grupo ig-us-2.

    gcloud compute instance-groups unmanaged add-instances ig-us-2 \
        --instances BACKEND_INSTANCE_3,BACKEND_INSTANCE_4 \
        --zone us-central1-c
    
  5. Se a implantação do balanceador de carga atual também tiver um pool de destino de backup, repita essas etapas para criar um grupo separado de instâncias de failover para essas instâncias.

Criar verificação de integridade

Crie uma verificação de integridade para determinar a integridade das instâncias nos grupos de instâncias. Seu balanceador de carga de rede externo de passagem baseada no pool de destino provavelmente tem uma verificação de integridade HTTP legada associada a ele.

É possível criar uma nova verificação de integridade que corresponda ao protocolo do tráfego que o balanceador de carga distribuirá. Os balanceadores de carga de rede externos baseados em serviço de back-end podem usar verificações de integridade TCP, SSL, HTTP(S) e HTTP/2.

Console

  1. No console do Google Cloud, acesse a página Verificações de integridade.

    Acessar "Verificações de integridade"

  2. Clique em Create health check.
  3. No campo Nome, use network-lb-health-check.
  4. Defina o Escopo como Regional.
  5. Em Região, selecione us-central1.
  6. Em Protocolo, selecione HTTP.
  7. Em Porta, insira 80.
  8. Clique em Criar.

gcloud

  1. Neste exemplo, criamos uma verificação de integridade HTTP não legada a ser usada com o serviço de back-end.

    gcloud compute health-checks create http network-lb-health-check \
    --region us-central1 \
    --port 80
    

Configurar o serviço de back-end

Use uma das seções a seguir para criar o serviço de back-end. Se o balanceador de carga de rede atual tiver um pool de destino de backup, configure uma proporção de failover ao criar o serviço de back-end.

Você também precisa designar o grupo de instâncias de failover com a sinalização --failover ao adicionar back-ends ao serviço de back-end.

Implantações sem um pool de destino de backup

gcloud

  1. Crie um serviço de back-end regional na região us-central1.

    gcloud compute backend-services create network-lb-backend-service \
       --region us-central1 \
       --health-checks network-lb-health-check \
       --health-checks-region us-central1 \
       --protocol TCP
    
  2. Adicione os dois grupos de instâncias (ig-us-1 e ig-us-2) como back-ends ao serviço de back-end.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-2 \
       --instance-group-zone us-central1-c \
       --region us-central1
    

Implantações com um pool de destino de backup

gcloud

  1. Crie um serviço de back-end regional na região us-central1. Configure a proporção de failover do serviço de back-end para corresponder à proporção configurada anteriormente para o pool de destino.

    gcloud compute backend-services create network-lb-backend-service \
       --region us-central1 \
       --health-check network-lb-health-check \
       --failover-ratio 0.5
    
  2. Adicione os dois grupos de instâncias (ig-us-1 e ig-us-2) como back-ends ao serviço de back-end.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-2 \
       --instance-group-zone us-central1-c \
       --region us-central1
    
  3. Se você criou um grupo de instâncias de failover, adicione-o ao serviço de back-end. Marque esse back-end com a sinalização --failover ao adicioná-lo ao serviço de back-end.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group FAILOVER_INSTANCE_GROUP \
       --instance-group-zone ZONE \
       --region us-central1 \
       --failover
    

Configurar a regra de encaminhamento

Há duas opções: configurar a regra de encaminhamento para direcionar o tráfego para o novo serviço de back-end. É possível atualizar a regra de encaminhamento atual ou criar uma nova com um novo endereço IP.

Use a sinalização set-target para atualizar a regra de encaminhamento atual a fim de apontar para o novo serviço de back-end.

gcloud compute forwarding-rules set-target FORWARDING_RULE  \
    --backend-service network-lb-backend-service \
    --region us-central1

Substitua FORWARDING_RULE pelo nome da regra de encaminhamento atual.

Criar uma nova regra de encaminhamento

Se você não quiser atualizar a regra de encaminhamento atual, crie uma nova com um novo endereço IP. Como um determinado endereço IP só pode ser associado a uma única regra de encaminhamento por vez, será preciso modificar manualmente a configuração de DNS para mudar o tráfego de entrada do antigo endereço IP para o novo.

Use o comando a seguir para criar uma nova regra de encaminhamento com um novo endereço IP. Use a sinalização --address se quiser especificar um endereço IP já reservado na região us-central1.

gcloud compute forwarding-rules create network-lb-forwarding-rule \
    --load-balancing-scheme external \
    --region us-central1 \
    --ports 80 \
    --backend-service network-lb-backend-service

Como testar o balanceador de carga

Teste o balanceador de carga para confirmar se a regra de encaminhamento está direcionando o tráfego de entrada conforme o esperado.

Procure o endereço IP externo do balanceador de carga.

gcloud

Insira o comando a seguir para visualizar o endereço IP externo da regra de encaminhamento network-lb-forwarding-rule usada pelo balanceador de carga.

gcloud compute forwarding-rules describe network-lb-forwarding-rule
    --region us-central1

Usar o comando nc para acessar o endereço IP externo

Neste exemplo, usamos o método de hash padrão para afinidade da sessão. Portanto, as solicitações do comando nc serão distribuídas aleatoriamente nas VMs de back-end com base na porta de origem atribuída pelo sistema operacional.

  1. Para testar a conectividade, primeiro instale o Netcat no Linux executando o comando a seguir:

    $ sudo apt install netcat
    
  2. Repita o comando algumas vezes até ver todas as VMs de back-end respondendo:

    $ nc IP_ADDRESS 80
    

Remover recursos associados ao antigo balanceador de carga

Depois de confirmar que o novo balanceador de carga de rede de passagem externo funciona conforme o esperado, é possível excluir os recursos antigos do pool de destino.

  1. No Console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. Selecione o antigo balanceador de carga associado ao pool de destino e clique em Excluir.
  3. Selecione as verificações de integridade que você criou e clique em Excluir balanceador de carga e recursos selecionados.

A seguir