Como adicionar um grupo de instâncias a um balanceador de carga

O balanceamento de carga do Google Cloud usa grupos de instâncias, gerenciadas e não gerenciadas, para veicular o tráfego. Dependendo do tipo de balanceador de carga que você estiver usando, adicione grupos de instâncias a um pool de destino ou serviço de back-end. Para saber mais sobre o assunto, consulte Como escolher um balanceador de carga.

Confira também Visão geral de grupos de instâncias.

Antes de começar

Limitações

  • Para usar o balanceamento de carga com um MIG regional, as seguintes limitações se aplicam:
    • Não é possível usar o modo de balanceamento maxRate.
    • Se você usa um esquema de balanceamento de carga HTTP(S) com um MIG regional, é necessário escolher o modo de balanceamento maxRatePerInstance ou maxUtilization.

Como adicionar um grupo de instâncias gerenciadas a um serviço de back-end

Um serviço de back-end é necessário para criar os tipos de serviços de balanceamento de carga a seguir:

  • Balanceamento de carga HTTP(S) externo
  • Balanceamento de carga HTTP(S) interno
  • Balanceamento de carga de proxy SSL
  • Balanceamento de carga de proxy TCP
  • Balanceamento de carga TCP/UDP interno

Um serviço de back-end pode conter vários back-ends. Um grupo de instâncias é um tipo de back-end. As instâncias contidas no grupo respondem ao tráfego vindo do balanceador de carga. O serviço de back-end, por sua vez, sabe quais instâncias podem ser usadas, quanto tráfego elas podem processar e a quantidade de tráfego que estão processando no momento. Além disso, a verificação de integridade é monitorada no serviço de back-end, que não envia novas conexões para instâncias não íntegras.

Use as instruções para adicionar um grupo de instâncias gerenciadas a um serviço de back-end.

Console

  1. Acesse a página "Balanceamento de carga" no Console do Cloud.

    Acessar a página "Balanceamento de carga"

  2. Selecione o nome do serviço de back-end ao qual você está adicionando o grupo de instâncias gerenciadas.
  3. Clique em Editar.
  4. Selecione +Adicionar back-end.
  5. Selecione o grupo de instâncias que você quer adicionar.
  6. Edite as configurações opcionais como quiser.
  7. Salve as alterações.

gcloud

Com a ferramenta de linha de comando gcloud, use o comando add-backend:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --instance-group=INSTANCE_GROUP \
        [--instance-group-region=INSTANCE_GROUP_REGION | --instance-group-zone=INSTANCE_GROUP_ZONE] \
        --balancing-mode=BALANCING_MODE

Parâmetros adicionais são necessários dependendo do modo de balanceamento do grupo de instâncias gerenciadas. Para mais informações, consulte o comando add-backend no SDK.

API

Para adicionar um serviço de back-end usando a API REST, consulte backendServices.

Como adicionar um grupo de instâncias gerenciadas a um pool de destino

Um pool de destino é um objeto que contém uma ou mais instâncias de máquina virtual. Ele é usado no Balanceamento de carga de rede, em que as solicitações do usuário são encaminhadas para o pool de destino associado ao balanceador de carga. As instâncias que fazem parte desse pool atendem essas solicitações e retornam uma resposta. Adicione um grupo de instâncias gerenciadas a um pool de destino para que, quando as instâncias forem adicionadas ou removidas do grupo, o pool também seja atualizado automaticamente com as alterações.

Para adicionar um grupo de instâncias gerenciadas a um pool de destino, é preciso que esse pool já exista. Para mais informações, consulte a documentação Como adicionar um pool de destino.

Para adicionar um grupo de instâncias gerenciadas a um pool de destino, execute as etapas a seguir. Isso faz com que todas as instâncias de VM contidas no grupo sejam adicionadas ao pool de destino.

Console

  1. Acesse a página "Pools de destino" no Console do Cloud.

    Acessar a página "Pools de destino"

  2. Clique no pool de destino para adicionar o grupo de instâncias.
  3. Clique no botão Editar.
  4. Role para baixo até a seção Instâncias da VMs e clique em Selecionar grupos de instâncias.
  5. Selecione um grupo de instâncias no menu suspenso.
  6. Salve as alterações.

gcloud

Na ferramenta de linha de comando gcloud, use o comando set-target-pools:

gcloud compute instance-groups managed set-target-pools [INSTANCE_GROUP] \
        --target-pools [TARGET_POOL,..] [--zone ZONE]

em que:

  • [INSTANCE_GROUP] é o nome do grupo de instâncias;
  • [TARGET_POOL] é o nome de um ou mais pools de destino aos quais esse grupo de instância precisa ser adicionado.
  • [ZONE] é a zona do grupo de instâncias.

API

Na API, faça uma solicitação POST para o seguinte URI:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/setTargetPools

em que:

  • [PROJECT_ID] é o ID do projeto da solicitação;
  • [ZONE] é a zona do grupo de instâncias.
  • [INSTANCE_GROUP] é o nome do grupo de instâncias.

O corpo da solicitação conterá uma lista de URIs para os pools de destino a que você quer adicionar esse grupo. Exemplo:

{
  "targetPools": [
    "regions/us-central1/targetPools/example-targetpool-1",
    "regions/us-central1/targetPools/example-targetpool-2"
  ]
}

Como atribuir portas nomeadas a grupos de instâncias gerenciadas

Portas nomeadas são pares de valores-chave que representam um nome de serviço e o número da porta em que o serviço é executado. Elas são usadas pelos serviços de balanceamento de carga para direcionar o tráfego a portas específicas em instâncias individuais. Por exemplo, se você definir uma porta nomeada como http:80 e configurar o serviço de back-end para enviar o tráfego a uma porta denominada http, o balanceador de carga encaminhará o tráfego à porta 80 das instâncias individuais que fazem parte do grupo de instâncias.

As portas nomeadas são metadados simples usados pelo balanceamento de carga. Elas não controlam recursos de rede ou firewall no Compute Engine.

É possível atribuir várias portas para cada nome de serviço e vários nomes de serviço para cada porta. No entanto, lembre-se de que um determinado serviço de back-end só pode encaminhar tráfego para uma porta nomeada de cada vez.

Console

  1. Acesse a página Grupos de instâncias no Console do Cloud.

    Acessar a página "Grupos de instâncias"

  2. Clique no nome do grupo de instâncias em que você quer especificar as portas nomeadas. Uma página é aberta com as propriedades do grupo de instâncias.
  3. Clique em Editar grupo para modificar o grupo de instâncias gerenciadas.
  4. Clique em Especificar mapeamento de nomes de porta para expandir as opções de portas nomeadas.
  5. Clique em Adicionar item e digite o nome da porta e os números de porta que você quer associar a esse nome. Se você precisar de mais entradas, clique em Adicionar item novamente.
  6. Clique em Salvar para salvar as alterações e aplicar as portas nomeadas às instâncias no grupo de instâncias gerenciadas.

gcloud

Defina uma ou mais portas nomeadas usando o comando set-named-ports:

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
      --named-ports [PORT_NAME]:[PORT],[PORT_NAME]:[PORT]

Por exemplo:

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
      --named-ports name1:80,name2:8080

Para atribuir várias portas a cada nome de serviço ou vários nomes a cada serviço, crie mais de uma entrada para cada nome ou porta. Por exemplo, atribua name1 às portas 10, 20 e 80. Em seguida, atribua name2 e name3 à porta 8080. Por fim, atribua a porta 9000 a name4.

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
      --named-ports name1:10,name1:20,name1:80,\
                    name2:8080,name3:8080,\
                    name4:9000

Verifique as atribuições de portas nomeadas de um grupo de instâncias gerenciadas usando o comando get-named-ports:

gcloud compute instance-groups managed get-named-ports [INSTANCE_GROUP]
NAME  PORT
name1 10
name1 20
name1 80
name2 8080
name3 8080
name4 9000

API

A API instanceGroupManagers não oferece um método de API setNamedPorts. Em vez disso, use a API instanceGroups para executar esta tarefa.

Crie uma solicitação na API instanceGroups e inclua o nome do grupo de instâncias. Para saber o valor fingerprint atual do grupo de instâncias, acesse as informações sobre um grupo específico. Inclua o fingerprint e um ou mais pares de valores namedPorts no corpo da solicitação:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroups/[INSTANCE_GROUP]/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "[PORT_NAME]",
   "port": [PORT_NUMBER]
  },
  {
   "name": "[PORT_NAME]",
   "port": [PORT_NUMBER]
  }
 ]
}

Por exemplo:

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "name1",
   "port": 80
  },
  {
   "name": "name2",
   "port": 8080
  }
 ]
}

Para atribuir várias portas a cada nome de serviço, crie várias entradas para esses nomes. Por exemplo, atribua as portas 10, 20 e 80 a name1. Atribua também a porta 8080 a name2.

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "name1",
   "port": 10
  },
  {
   "name": "name1",
   "port": 20
  }
  {
   "name": "name1",
   "port": 80
  }
  {
   "name": "name2",
   "port": 8080
  }
  {
   "name": "name3",
   "port": 80
  }
  {
   "name": "name4",
   "port": 8080
  }
 ]
}

Para listar as portas nomeadas que já estão atribuídas a um grupo de instâncias gerenciadas, crie uma solicitação GET que aponte para o grupo:

GET https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

A seguir