Usar grupos de alvos

Um conjunto de destino é um grupo de instâncias de back-end que recebem tráfego de entrada de balanceadores de carga de rede de passagem externos. Todas as instâncias de back-end de um conjunto de destino têm de residir na mesma Google Cloud região. Os balanceadores de carga de rede de encaminhamento externo podem usar um serviço de back-end ou um conjunto de destino para definir o grupo de instâncias de back-end. Se estiver a criar novos equilibradores de carga de encaminhamento externo, recomendamos que use serviços de back-end.

Esta página descreve as opções de configuração para back-ends do conjunto de destinos. Quando uma regra de encaminhamento de um Network Load Balancer de passagem externo direciona o tráfego para um conjunto de destino, o Load Balancer escolhe uma instância do conjunto de destino com base num hash do endereço IP de origem, da porta de origem, do endereço IP de destino e da porta de destino.

Se pretender que o conjunto de destino contenha uma única máquina virtual (VM), considere usar a funcionalidade de encaminhamento de protocolos em vez do equilíbrio de carga.

Propriedades do grupo de destino

Os conjuntos de destino funcionam com regras de encaminhamento que processam o tráfego TCP e UDP. Tem de criar um conjunto de destino antes de o poder usar com uma regra de encaminhamento.

Os conjuntos de destino usam verificações de funcionamento de HTTP antigas.

Um grupo de destino é composto pelas seguintes propriedades:

name
O nome deste conjunto de alvos. O nome tem de ser exclusivo neste projeto, ter entre 1 e 63 carateres e corresponder à expressão regular: [a-z]([-a-z0-9]*[a-z0-9])?, o que significa que o primeiro caráter tem de ser uma letra minúscula e todos os carateres seguintes têm de ser um traço, uma letra minúscula ou um dígito, exceto o último caráter, que não pode ser um traço.
description
Opcional. Uma descrição definida pelo utilizador deste conjunto de alvos.
region

O URL totalmente qualificado da região do grupo de destino. A região deve ser a mesma onde residem as suas instâncias de back-end. Por exemplo:

"region" : "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION"

healthChecks[ ]

Opcional. Uma lista opcional de verificações de estado para este conjunto de destinos. Só é possível anexar uma verificação de estado a um determinado conjunto de destinos. Consulte a secção Verificação de saúde para mais informações.

instances[ ]

Uma lista de URLs de instâncias que devem processar o tráfego para este grupo de destino. Todas as instâncias têm de residir na mesma região que o conjunto de destino, mas as instâncias podem pertencer a zonas diferentes numa única região. Por exemplo:

"instances" : [
  "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE",
  "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE-2"
]
sessionAffinity

Opcional. Controla o método usado para selecionar uma instância de máquina virtual de back-end. Só pode definir este valor durante a criação do conjunto de alvos. Depois de definir este valor, não o pode modificar. O método de hash seleciona um back-end com base num subconjunto dos 5 valores seguintes:

  • IP de origem / destino
  • Porta de origem / destino
  • Protocolo de camada 4 (TCP, UDP)

Os hashes possíveis são:

NONE (ou seja, nenhum hash especificado) (predefinição)
Hash de 5 tuplos, que usa os IPs de origem e destino, as portas de origem e destino e o protocolo. Cada nova ligação pode acabar em qualquer instância, mas todo o tráfego de uma determinada ligação permanece na mesma instância, se a instância se mantiver em bom estado.
CLIENT_IP_PROTO
Hash de 3 tuplos, que usa os IPs de origem e destino, e o protocolo. Todas as ligações de um cliente acabam na mesma instância, desde que usem o mesmo protocolo e a instância se mantenha em bom estado.
CLIENT_IP
Hash de 2 tuplos, que usa os IPs de origem e destino. Todas as ligações de um cliente vão parar à mesma instância independentemente do protocolo, desde que a instância se mantenha em bom estado.

A aplicação de hash de 5 tuplos oferece uma boa distribuição do tráfego por muitas máquinas virtuais. No entanto, uma segunda sessão do mesmo cliente pode chegar a uma instância diferente porque a porta de origem pode mudar. Se quiser que todas as sessões do mesmo cliente alcancem o mesmo back-end, desde que o back-end se mantenha em bom estado, pode especificar as opções CLIENT_IP_PROTO ou CLIENT_IP.

Em geral, se selecionar um método de 3 ou 2 tuplos, este oferece uma melhor afinidade de sessão do que o método de 5 tuplos predefinido, mas o tráfego geral pode não ser distribuído de forma tão uniforme.

Pacotes UDP fragmentados: se estiver a fazer o balanceamento de carga do tráfego UDP que é provável que seja fragmentado, defina a afinidade de sessão como CLIENT_IP_PROTO ou CLIENT_IP. Não use NONE (hash de 5 tuplos). Isto deve-se ao facto de os fragmentos UDP que não sejam o primeiro não incluírem o número da porta e o equilibrador de carga poder rejeitar os fragmentos sem a porta. Consulte o artigo Balanceamento de carga e pacotes UDP fragmentados para mais informações.

backupPool

Opcional. Um URL totalmente qualificado para outro recurso de conjunto de alvos. Um grupo de reserva é um grupo de destino que outro grupo de destino referencia. Também tem de definir failoverRatio para usar esta funcionalidade. Se a proporção de máquinas virtuais em bom estado no seu conjunto de destino for inferior a failoverRatio, o balanceador de carga de rede de passagem externo envia tráfego para o seu conjunto de cópias de segurança. Só pode fornecer um conjunto de recursos alternativo por conjunto de recursos de destino. O conjunto de cópias de segurança tem de estar na mesma região que o conjunto de destino. Se a proporção de instâncias íntegras no seu conjunto de destino ficar abaixo da proporção de comutação por falha configurada, o Network Load Balancer de passagem externa usa as seguintes regras para encaminhar o seu tráfego:

  1. Se a proporção de instâncias em bom estado em relação ao total de instâncias no conjunto de destino for inferior à proporção de comutação por falha, o tráfego é enviado para instâncias em bom estado no conjunto de cópia de segurança.
  2. Se a proporção de instâncias em bom estado em relação ao total de instâncias no conjunto de destino for inferior à proporção de comutação por falha, mas não existirem instâncias em bom estado restantes no conjunto de cópia de segurança, o tráfego é enviado para as instâncias em bom estado restantes no conjunto de destino.
  3. Se o conjunto de destino não estiver vazio e se todas as instâncias no conjunto de destino e no conjunto de cópia de segurança falharem nas respetivas verificações de estado, o tráfego é enviado para todas as instâncias no conjunto de destino, como último recurso.
  4. Se o conjunto de destino estiver vazio e se todas as instâncias no conjunto de cópia de segurança falharem nas respetivas verificações de estado, o tráfego é enviado para todas as instâncias no conjunto de cópia de segurança, como último recurso.

Só é suportado um nível de alternativa. Por exemplo, se o conjunto de destino A tiver o conjunto de destino de cópia de segurança B e o conjunto de destino de cópia de segurança B tiver o conjunto de destino de cópia de segurança C, o tráfego destinado ao conjunto de destino A só pode ser direcionado para o conjunto de destino de cópia de segurança B e não para o conjunto de destino de cópia de segurança C.

failoverRatio

Opcional. Um valor flutuante entre 0.0 e 1.0, que determina quando este conjunto de destino é declarado como não saudável. Por exemplo, se este valor estiver definido como 0.1, então este conjunto de destino é declarado como não saudável se o número de instâncias saudáveis for inferior a 0.1 (10%). Se a taxa de comutação por falha for 0.0, pelo menos, um back-end tem de estar em bom estado para o conjunto ser considerado em bom estado. Se a taxa de alternativa for definida como 1.0, todas as instâncias têm de estar em bom estado para o conjunto ser considerado em bom estado. Tem de definir este campo se definir o campo backupPool.

Condições de alternativa

Condições As novas associações são adicionadas a
Rácio de comutação por falha !=0, VMs em bom estado no conjunto de destino >= FR grupo de destino
Rácio de comutação por falha =0, VMs em bom estado no conjunto de destino > 0 grupo de destino
Failover ratio !=0, healthy VMs in target pool < FR, and at least one VM in the backup pool is healthy conjunto de substituição
Rácio de comutação por falha =0, VMs em bom estado no conjunto de destino = 0 e, pelo menos, uma VM no conjunto de cópias de segurança está em bom estado conjunto de substituição
Pelo menos uma VM está no conjunto de destino, e todas as VMs no conjunto de destino estão em mau estado, e todas as VMs no conjunto de cópias de segurança estão em mau estado grupo de destino (último recurso)
Não existem VMs no conjunto de destino e todas as VMs no conjunto de cópias de segurança estão em mau estado pool de reserva (último recurso)
Não existem VMs no conjunto de destino nem no conjunto de cópia de segurança O tráfego é eliminado

Crie um grupo de destino

Consola

Não é possível criar grupos de destino na consola Google Cloud . Pode criar um conjunto de destinos através da CLI Google Cloud ou da API.

Para saber como criar um balanceador de carga de rede de encaminhamento externo baseado num conjunto de destino através da CLI do Google Cloud, consulte o artigo Configure um balanceador de carga de rede de encaminhamento externo com um conjunto de destino.

gcloud

Para usar gcloud compute para criar um grupo de destino, use o comando target-pools create:

  gcloud compute target-pools create TARGET_POOL \
      [--backup-pool=BACKUP_POOL] \
      [--description=DESCRIPTION] \
      [--failover-ratio=FAILOVER_RATIO] \
      [--http-health-check=HEALTH_CHECK] \
      [--region=REGION]
      [--session-affinity=SESSION_AFFINITY; default="NONE"]

Substitua o seguinte:

  • TARGET_POOL: um nome para o grupo de destino
  • BACKUP_POOL: um nome para o conjunto de destino da cópia de segurança
  • DESCRIPTION: uma descrição do grupo de destino
  • FAILOVER_RATIO: um valor entre 0,0 e 1,0, que determina quando o conjunto de destino é declarado como não saudável
  • HEALTH_CHECK: uma verificação do estado desta pool de destino
  • REGION: uma região do grupo de destino
  • SESSION_AFFINITY: o método usado para selecionar uma instância de máquina virtual de back-end

API

Para criar um grupo de destino na API, faça um pedido HTTP POST para o seguinte URI:

  https://www.googleapis.com/v1/compute/projects/PROJECT_ID/regions/REGION/targetPools
  {
    "name": name,
    "instances": [
       "https://www.googleapis.com/v1/compute/project/PROJECT_ID/zones/ZONE/instances/INSTANCE",
       "https://www.googleapis.com/v1/compute/project/PROJECT_ID/zones/ZONE/instances/INSTANCE-2",
    ]
  }
 

Substitua o seguinte:

  • PROJECT_ID: o Google Cloud ID do projeto
  • ZONE: a zona em que as instâncias do grupo de destino se encontram
  • INSTANCE, INSTANCE-2: as instâncias a adicionar ao conjunto de destino

Adicione ou remova uma instância de um conjunto de destino

Consola

Não é possível editar os conjuntos de alvos na consola Google Cloud . Pode editar um conjunto de destinos através da CLI Google Cloud ou da API.

gcloud

Para usar gcloud compute para adicionar instâncias a um conjunto de destinos, use o comando target-pools add-instances:

  gcloud compute target-pools add-instances TARGET_POOL \
      --instances=INSTANCE,[INSTANCE-2,...]

Substitua o seguinte:

  • TARGET_POOL: o nome do grupo de destino
  • INSTANCE, INSTANCE-2: o nome da instância (ou instâncias) a adicionar ao conjunto de destino

Para remover instâncias, use o comando target-pools remove-instances:

  gcloud compute target-pools remove-instances TARGET_POOL \
      --instances=INSTANCE,[INSTANCE-2,...]

Substitua o seguinte:

  • TARGET_POOL: o nome do grupo de destino
  • INSTANCE, INSTANCE-2: o nome da instância (ou instâncias) a remover do conjunto de destino

API

Na API, envie um pedido POST para os seguintes URIs:

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/removeInstance
  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/addInstance

O corpo do seu pedido deve incluir os URIs totalmente qualificados das instâncias que quer adicionar ou remover:

  {
   "instances": [
      {"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE"},
      {"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE-2"}
    ]
  }
 

Substitua o seguinte:

  • PROJECT_ID: o Google Cloud ID do projeto
  • TARGET_POOL: o nome do conjunto de alvos a ser atualizado
  • REGION: a região em que o grupo de destino se encontra
  • ZONE: a zona em que as instâncias atualizadas se encontram
  • INSTANCE, INSTANCE-2: as instâncias a adicionar ao conjunto de destino

Para mais informações, consulte a documentação de referência da API para os métodos targetPools.addInstance e targetPools.removeInstance.

Apresente grupos de destino

Consola

Para ver uma lista de conjuntos de destinos, use o menu avançado de equilíbrio de carga.

Na página de equilíbrio de carga Avançado, aceda ao separador Conjuntos de destino.
Aceda a Conjuntos de alvos

A página apresenta uma lista de grupos de alvos.

gcloud

Para usar gcloud compute para apresentar uma lista de conjuntos de alvos existentes, use o comando target-pools list:

  gcloud compute target-pools list

Para obter um resultado mais detalhado, use o comando describe e especifique um nome do conjunto.

API

Na API, envie um pedido GET para o seguinte URI:

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools

Substitua o seguinte:

  • PROJECT_ID: o Google Cloud ID do projeto
  • REGION: a região em que o grupo de destino se encontra

Descreva um grupo de destino

Consola

Para obter informações sobre um conjunto de destinos, use o menu avançado de equilíbrio de carga.

  1. Na página de equilíbrio de carga Avançado, aceda ao separador Conjuntos de destino.
    Aceda a Conjuntos de alvos
  2. Para ver informações detalhadas, clique no nome do conjunto de alvos.

gcloud

Para usar gcloud compute para obter informações sobre um único conjunto de alvos, use o comando target-pools describe:

  gcloud compute target-pools describe TARGET_POOL

Substitua o seguinte:

  • TARGET_POOL: o nome do grupo de destino

API

Na API, envie um pedido GET vazio para o seguinte URI:

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL

Substitua o seguinte:

  • PROJECT_ID: o Google Cloud ID do projeto
  • TARGET_POOL: o nome do conjunto de alvos a ser atualizado
  • REGION: a região em que o grupo de destino se encontra

Obtenha o estado de saúde das instâncias

Consola

Para obter o estado de funcionamento das instâncias num conjunto de destino, use o menu avançado do balanceamento de carga.

  1. Na página de equilíbrio de carga Avançado, aceda ao separador Conjuntos de destino.
    Aceda a Conjuntos de alvos
  2. Clique no nome do conjunto de alvos.
  3. A página Detalhes do conjunto de destino apresenta todas as instâncias e o respetivo estado de funcionamento.

gcloud

Para usar gcloud compute para verificar o estado de saúde atual de uma instância no seu conjunto de destino ou de todas as instâncias no conjunto de destino, pode usar o comando gcloud compute target-pools get-health:

  gcloud compute target-pools get-health TARGET_POOL

Substitua o seguinte:

  • TARGET_POOL: o nome do grupo de destino

O comando devolve o estado de funcionamento determinado pela verificação de funcionamento configurada, que pode ser bom ou mau.

API

Na API, faça um pedido HTTP POST para o seguinte URI com a instância especificada no corpo do pedido:

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/getHealth

  {
    "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE"
  }

Substitua o seguinte:

  • PROJECT_ID: o Google Cloud ID do projeto
  • TARGET_POOL: o nome do conjunto de alvos a ser atualizado
  • REGION: a região em que o grupo de destino se encontra
  • ZONE: a zona em que as instâncias se encontram
  • INSTANCE: a instância cujo estado da verificação de funcionamento está a verificar

Elimine um grupo de destino

Para eliminar um grupo de destino, primeiro tem de se certificar de que o grupo de destino não está a ser referenciado por nenhuma regra de encaminhamento. Se uma regra de encaminhamento estiver a fazer referência a um conjunto de destino, tem de eliminar a regra de encaminhamento para remover a referência.

Consola

Para usar a Google Cloud consola para eliminar um conjunto de destinos, use o menu avançado de equilíbrio de carga.

  1. Na página de equilíbrio de carga Avançado, aceda ao separador Conjuntos de destino.
    Aceda a Conjuntos de alvos
  2. Clique no nome do conjunto de alvos.
  3. Clique em Eliminar.
  4. Na janela Eliminar um grupo de alvos, clique em Eliminar.

gcloud

Para usar gcloud compute para eliminar um grupo de destino, use o comando target-pools delete:

  gcloud compute target-pools delete TARGET_POOL

Substitua o seguinte:

  • TARGET_POOL: o nome do grupo de alvos a eliminar

API

Na API, envie um pedido DELETE vazio para o seguinte URI:

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL

Substitua o seguinte:

  • PROJECT_ID: o Google Cloud ID do projeto
  • TARGET_POOL: o nome do conjunto de alvos a ser atualizado
  • REGION: a região em que o grupo de destino se encontra

Adicione ou remova uma verificação de estado de um conjunto de destino

Os objetos de verificação de estado são recursos autónomos, globais que podem ser associados ou desassociados de qualquer conjunto de destino.

Se um conjunto de destino não tiver uma verificação de estado associada, o balanceador de carga de encaminhamento externo trata todas as instâncias como estando em bom estado e envia tráfego para todas as instâncias no conjunto de destino. No entanto, se consultar o estado de funcionamento de um conjunto de destino sem uma verificação de estado, o estado é devolvido como unhealthy para indicar que o conjunto de destino não tem uma verificação de estado. Recomendamos que os seus grupos de destino tenham verificações de estado associadas para ajudar a gerir as suas instâncias.

Os balanceadores de carga de rede de passagem externos usam verificações de funcionamento HTTP antigas para determinar o estado de funcionamento das instâncias no conjunto de destino. Um Network Load Balancer de passagem externo só pode usar uma verificação de funcionamento HTTP antiga e não uma verificação de funcionamento HTTPS antiga.

Consola

Quando usa a Google Cloud consola, pode criar uma verificação de funcionamento de HTTP antiga enquanto cria um balanceador de carga de rede de encaminhamento externo com um backend de conjunto de destino.

Não pode usar a página Verificações de funcionamento da Google Cloud consola para criar uma verificação de funcionamento autónoma antiga.

gcloud

Para usar gcloud compute para adicionar uma verificação de funcionamento a um conjunto de destino, use o comando target-pools add-health-checks:

  gcloud compute target-pools add-health-checks TARGET_POOL \
      --http-health-check=HEALTH_CHECK

Substitua o seguinte:

  • TARGET_POOL: o nome do grupo de destino
  • HEALTH_CHECK: a verificação de estado HTTP antiga a usar com este grupo de destino

Para remover uma verificação de funcionamento, use o comando target-pools remove-health-checks:

  gcloud compute target-pools remove-health-checks TARGET_POOL \
    --http-health-check=HEALTH_CHECK

Substitua o seguinte:

  • TARGET_POOL: o nome do grupo de destino
  • HEALTH_CHECK: a verificação de estado HTTP antiga vai ser removida deste conjunto de destinos

API

Para associar ou desassociar uma verificação de estado através da API, faça um pedido HTTP POST aos URIs adequados:

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/removeHealthCheck
  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/addHealthCheck

O corpo do pedido deve conter a verificação de estado a associar ou desassociar:

  {
    "healthCheck": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/httpHealthChecks/HEALTH_CHECK"
  }

Substitua o seguinte:

  • PROJECT_ID: o Google Cloud ID do projeto
  • TARGET_POOL: o nome do conjunto de alvos a ser atualizado
  • REGION: a região em que o grupo de destino se encontra
  • HEALTH_CHECK: a verificação de estado HTTP antiga a associar ou desassociar do conjunto de destino

Para mais informações, consulte a documentação de referência da API para targetPools.addHealthCheck e targetPools.removeHealthCheck.

Adicione ou remova um conjunto de destino de cópia de segurança

Quando cria um grupo de destino pela primeira vez, pode optar por aplicar um grupo de destino de reserva que recebe tráfego se o grupo de destino ficar em mau estado.

Se nunca configurou um conjunto de destino de cópia de segurança, também deve configurar as verificações de funcionamento para que a funcionalidade funcione corretamente.

Consola

Não é possível editar os conjuntos de alvos na consola Google Cloud . Pode editar um proxy de destino através da CLI Google Cloud ou da API.

gcloud

Para usar gcloud compute para atualizar o recurso do conjunto de cópias de segurança, use o comando target-pools set-backup:

  gcloud compute target-pools set-backup TARGET_POOL \
      --backup-pool=BACKUP_POOL \
      --failover-ratio=FAILOVER_RATIO

Substitua o seguinte:

  • TARGET_POOL: o nome do grupo de destino
  • BACKUP_POOL: um nome para o conjunto de destino da cópia de segurança
  • FAILOVER_RATIO: um valor entre 0,0 e 1,0, que determina quando o conjunto de destino é declarado como não saudável

API

Para fazer um pedido de atualização ou remoção de um conjunto de cópias de segurança através da API, envie um pedido POST para o seguinte URI:

  POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/setBackup?failoverRatio=FAILOVER_RATIO

  {
    "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/BACKUP_POOL"
  }

Substitua o seguinte:

  • PROJECT_ID: o Google Cloud ID do projeto
  • TARGET_POOL: o nome do conjunto de alvos a ser atualizado
  • REGION: a região em que o grupo de destino se encontra
  • BACKUP_POOL: o nome do conjunto de cópias de segurança a associar ao conjunto de destino
  • FAILOVER_RATIO: a taxa de comutação por falha

Se definir um alvo vazio ou não definir uma taxa de alternativa, o comportamento do conjunto de reserva é desativado para este conjunto de alvos.

O que se segue?