Um pool de destino é um grupo de instâncias de back-end que recebem tráfego de entrada de balanceadores de carga de rede de passagem externa. Todas as instâncias de back-end de um pool de destino precisam residir na mesma região do Google Cloud. Os balanceadores de carga de rede de passagem externa podem usar um serviço de back-end ou um pool de destino para definir o grupo de instâncias de back-end. Se você estiver criando novos balanceadores de carga de rede de passagem externa, recomendamos usar serviços de back-end.
Nesta página, descrevemos as opções de configuração para back-ends de pool de destino. Quando a regra de encaminhamento de um balanceador de carga de rede de passagem externa direciona o tráfego para um pool de destino, o balanceador de carga escolhe uma instância do pool de destino com base em um hash do endereço IP de origem, da porta de origem, do endereço IP de destino e da porta de destino.
Se você quer que o pool de destino contenha uma única máquina virtual (VM, na sigla em inglês), use o recurso encaminhamento de protocolos em vez de balanceamento de carga.
O pool de destino foi excluído
Os pools de destino funcionam com regras de encaminhamento que processam o tráfego
TCP
e UDP
. Você precisa criar um pool de destino antes de poder usá-lo com uma regra de
encaminhamento.
Os pools de destino usam verificações de integridade HTTP legadas.
Um pool de destino é composto das seguintes propriedades:
name
- O nome deste pool de destino. O nome precisa ser exclusivo dentro do projeto, ter de 1 a 63 caracteres e coincidir com a expressão regular:
[a-z]([-a-z0-9]*[a-z0-9])?
, o que significa que o primeiro caractere precisa ser uma letra minúscula e todos os caracteres seguintes precisam ser um hífen, letra minúscula ou dígito, exceto o último caractere, que não pode ser um hífen. description
- Opcional. Opcional: uma descrição definida pelo usuário deste pool de destino.
region
O URL totalmente qualificado da região do pool de destino. A região precisa ser a mesma onde residem as instâncias de back-end. Exemplo:
"region" : "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION"
healthChecks[ ]
Opcional. Uma lista opcional de verificações de integridade para este pool de destino. Apenas uma verificação de integridade pode ser vinculada a um determinado pool de destino. Consulte Verificação de integridade para mais informações.
instances[ ]
Uma lista de URLs de instância que lidam com o tráfego para este pool de destino. Todas as instâncias devem residir na mesma região do pool de destino, mas as instâncias podem pertencer a diferentes zonas dentro de uma única região. 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. Você só pode definir esse valor durante a criação do pool de destino. Uma vez definido, você não pode modificar esse valor. O método de hash seleciona um back-end com base em um subconjunto dos cinco valores a seguir:
- IP de origem/destino
- Porta de origem/destino
- Protocolo de camada 4 (TCP, UDP)
Os possíveis hashes são:
NONE
(ou seja, nenhum hash especificado) (padrão)- Hash de cinco tuplas, que usa os IPs de origem e destino, as portas de origem e destino e o protocolo. Cada nova conexão pode acabar em qualquer instância, mas todo o tráfego para uma determinada conexão permanecerá na mesma instância, caso ela continue íntegra.
CLIENT_IP_PROTO
- Hash de três tuplas, que usa os IPs de origem e destino e o protocolo. Todas as conexões de um cliente vão acabar na mesma instância, desde que usem o mesmo protocolo e a instância permaneça íntegra.
CLIENT_IP
- Hash de duas tuplas, que usa os IPs de origem e destino. Todas as conexões de um cliente vão acabar na mesma instância, independentemente do protocolo, desde que a instância permaneça íntegra.
O hash de cinco tuplas proporciona uma boa distribuição do tráfego em 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 você quiser que todas as sessões do mesmo cliente cheguem ao mesmo back-end, desde que ele permaneça íntegro, é possível especificar as opções
CLIENT_IP_PROTO
ouCLIENT_IP
.Em geral, se você selecionar o método de três ou duas tuplas, ele oferecerá uma afinidade de sessão melhor do que o método padrão de cinco tuplas, mas o tráfego normalmente não poderá ser distribuído de forma tão uniforme.
Pacotes UDP fragmentados: defina a afinidade de sessão como
CLIENT_IP_PROTO
ouCLIENT_IP
, caso você esteja realizando o balanceamento de carga do tráfego UDP, que provavelmente está fragmentado. Não useNONE
(hash de cinco tuplas). Isso ocorre porque fragmentos UDP, além do primeiro, não carregam o número da porta, e o balanceador de carga pode descartar os fragmentos sem a porta. Consulte Balanceamento de carga e pacotes UDP fragmentados para mais informações.backupPool
Opcional. Um URL totalmente qualificado para outro recurso de pool de destino. Um pool de backup é um pool de destino referenciado por outro pool. Também é necessário definir
failoverRatio
para usar este recurso. Se a proporção de máquinas virtuais íntegras no pool de destino estiver abaixo defailoverRatio
, o balanceador de carga de rede enviará tráfego para o pool de backup. Só é possível fornecer um pool de backup por pool de destino. O pool de backup precisa estar na mesma região que o pool de destino. Se a proporção de instâncias íntegras no pool de destino estiver abaixo da proporção de failover configurada, o balanceador de carga de rede usará as seguintes regras para encaminhar o tráfego:- Se a proporção de instâncias íntegras para o total de instâncias no pool de destino for menor que a proporção de failover, o tráfego será enviado para instâncias íntegras no pool de backup.
- Se a proporção de instâncias íntegras para o total de instâncias no pool de destino for menor que a proporção de failover, mas não houver instâncias íntegras restantes no pool de backup, o tráfego será enviado para as instâncias íntegras restantes no pool de destino.
- Se o pool de destino não estiver vazio e se todas as instâncias nos pools de destino e de backup falharem nas verificações de integridade, o tráfego será enviado para todas as instâncias no pool de destino, como último recurso.
- Se o pool de destino estiver vazio e se todas as instâncias no pool de backup falharem nas verificações de integridade, o tráfego será enviado para todas as instâncias no pool de backup, como último recurso.
Somente um nível de failover é compatível. Por exemplo, se o pool de destino A tiver pool de backup B e o de backup B tiver pool de backup C, o tráfego para o pool de destino A só poderá ser direcionado ao pool de backup B e não para o backup C.
failoverRatio
Opcional. Uma flutuação entre
0.0
e1.0
, que determina quando este pool de destino é declarado não íntegro. Por exemplo, se esse valor for definido como0.1
, este pool de destino será declarado não íntegro se o número de instâncias íntegras for menor que0.1
(10%). Se a taxa de failover é0.0
, pelo menos um back-end precisa estar íntegro para que o pool seja considerado íntegro. Se a taxa de failover é1.0
, todas as instâncias precisam estar íntegras para que o pool seja considerado íntegro. Esse valor precisará ser especificado se o campobackupPool
for definido.
Condições de failover
Condições | Novas conexões vão para |
---|---|
Proporção de failover !=0, VMs íntegras no pool de destino >= FR | pool de destino |
Proporção de failover =0, VMs íntegras no pool de destino > 0 | pool de destino |
Proporção de failover !=0, VMs íntegras no pool de destino < FR e pelo menos uma VM no pool de backup está íntegra | pool de backup |
Proporção de failover =0, VMs íntegras no pool de destino =0 e pelo menos uma VM no pool de backup está íntegra | pool de backup |
Pelo menos uma VM está no pool de destino, todas as VMs no pool de destino não são íntegras e todas as VMs no pool de backup não são íntegras | pool de destino (último recurso) |
Nenhuma VM está no pool de destino e todas as VMs no pool de backup não são íntegras | pool de backup (último recurso) |
Não há VMs no pool de destino ou no pool de backup | O tráfego é descartado |
Criar um pool de destino
Console
Não é possível criar pools de destino no console do Google Cloud. É possível criar um pool de destino usando a CLI do Google Cloud ou a API.
Para saber como criar um balanceador de carga de rede de passagem externa baseado em pool de destino usando a CLI do Google Cloud, consulte Configurar um balanceador de carga de rede de passagem externa com um pool de destino.
gcloud
Para usar gcloud compute
para criar um pool 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:
TARGET_POOL
: nome do pool de destinoBACKUP_POOL
: um nome para o pool de destino de backupDESCRIPTION
: uma descrição do pool de destino.FAILOVER_RATIO
: um valor entre 0,0 e 1,0, que determina quando o pool de destino é declarado não íntegroHEALTH_CHECK
: uma verificação de integridade para este pool de destinoREGION
: uma região do pool de destino.SESSION_AFFINITY
: o método usado para selecionar uma instância de máquina virtual de back-end
API
Para criar um pool de destino na API, faça uma solicitação HTTP POST
para
o URI a seguir:
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:
PROJECT_ID
: o ID do projeto do Google CloudZONE
: a zona em que as instâncias do pool de destino estãoINSTANCE
,INSTANCE-2
: as instâncias a serem adicionadas ao pool de destino
Adicionar ou remover uma instância de um pool de destino
Console
Não é possível editar os pools de destino no Console do Google Cloud. É possível editar um pool de destino usando a API ou CLI do Google Cloud.
gcloud
Para usar gcloud compute
a fim de adicionar instâncias a um pool de destino, use o comando target-pools add-instances
:
gcloud compute target-pools add-instances TARGET_POOL \ --instances=INSTANCE,[INSTANCE-2,...]
Substitua:
TARGET_POOL
: o nome do pool de destinoINSTANCE
,INSTANCE-2
: o nome da instância (ou instâncias) a ser adicionada ao pool 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:
TARGET_POOL
: o nome do pool de destinoINSTANCE
,INSTANCE-2
: o nome da instância (ou instâncias) a ser removida do pool de destino
API
Na API, envie uma solicitação 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 da solicitação deve incluir URIs totalmente qualificados para as instâncias que você 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:
PROJECT_ID
: o ID do projeto do Google CloudTARGET_POOL
: o nome do pool de destino a ser atualizadoREGION
: a região em que o pool de destino estáZONE
: a zona em que as instâncias atualizadas estão localizadasINSTANCE
,INSTANCE-2
: as instâncias a serem adicionadas ao pool de destino
Para mais informações, consulte a documentação de referência da API para os métodos targetPools.addInstance
e targetPools.removeInstance
.
Listar pools de destino
Console
Para ver uma lista de pools de destino, use o menu avançado de balanceamento de carga.
Na página de balanceamento de carga Avançado, acesse a guia Pools de destino.
Acessar pools de destino
A página exibe uma lista de pools de destino.
gcloud
Para usar gcloud compute
e listar pools de destino atuais, use o comando target-pools list
:
gcloud compute target-pools list
Para ter um resultado mais detalhado, use o comando describe
e especifique o nome de um pool.
API
Na API, envie uma solicitação GET para o seguinte URI:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools
Substitua:
PROJECT_ID
: o ID do projeto do Google CloudREGION
: a região em que o pool de destino está
Descrever um pool de destino
Console
Para ver informações sobre um pool de destino, use o menu avançado de balanceamento de carga.
- Na página de balanceamento de carga Avançado, acesse a guia Pools de destino.
Acessar pools de destino - Para ver informações detalhadas, clique no nome do pool de destino.
gcloud
Para usar gcloud compute
a fim de receber informações sobre um único pool de destino, use o comando target-pools describe
:
gcloud compute target-pools describe TARGET_POOL
Substitua:
TARGET_POOL
: o nome do pool de destino
API
Na API, envie uma solicitação GET vazia para o URI a seguir:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL
Substitua:
PROJECT_ID
: o ID do projeto do Google CloudTARGET_POOL
: o nome do pool de destino a ser atualizadoREGION
: a região em que o pool de destino está
Saber o status de integridade das instâncias
Console
Para ver o status de integridade das instâncias em um pool de destino, use o menu avançado de balanceamento de carga.
- Na página de balanceamento de carga Avançado, acesse a guia Pools de destino.
Acessar pools de destino - Clique no nome do pool de destino.
- A página Detalhes do pool de destino lista todas as instâncias e o status de integridade delas.
gcloud
Para usar gcloud compute
a fim de verificar o status de integridade atual de uma ou todas as instâncias
no pool de destino, use o comando gcloud compute target-pools get-health
:
gcloud compute target-pools get-health TARGET_POOL
Substitua:
TARGET_POOL
: o nome do pool de destino
O comando retorna o status de integridade como determinado pela verificação de integridade definida, íntegro ou não íntegro.
API
Na API, faça uma solicitação HTTP POST para o seguinte URI com a instância especificada no corpo da solicitação:
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:
PROJECT_ID
: o ID do projeto do Google CloudTARGET_POOL
: o nome do pool de destino a ser atualizadoREGION
: a região em que o pool de destino estáZONE
: a zona em que a instância estáINSTANCE
: a instância em que você está fazendo a verificação de integridade
Excluir um pool de destino
Para excluir um pool de destino, primeiro verifique se não há nenhuma regra de encaminhamento que faça referência a ele. Se uma regra de encaminhamento estiver fazendo referência ao pool de destino, será preciso excluir essa regra para remover a referência.
Console
Para usar o Console do Google Cloud a fim de excluir um pool de destino, use o menu avançado do balanceamento de carga.
- Na página de balanceamento de carga Avançado, acesse a guia Pools de destino.
Acessar pools de destino - Clique no nome do pool de destino.
- Clique em Excluir.
- Na janela Excluir um pool de destino, clique em Excluir.
gcloud
Para usar gcloud compute
a fim de excluir um pool de destino, use o comando target-pools delete
:
gcloud compute target-pools delete TARGET_POOL
Substitua:
TARGET_POOL
: o nome do pool de destino a ser excluído
API
Na API, envie uma solicitação DELETE vazia para o seguinte URI:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL
Substitua:
PROJECT_ID
: o ID do projeto do Google CloudTARGET_POOL
: o nome do pool de destino a ser atualizadoREGION
: a região em que o pool de destino está
Adicionar ou remover uma verificação de integridade de um pool de destino
Objetos de verificação de integridade são recursosglobais autônomos que podem ser associados ou dissociados de qualquer pool de destino.
Se um pool de destino não tiver uma verificação de integridade associada, o balanceador
de carga de rede tratará todas as instâncias como íntegras e enviará tráfego a todas as instâncias no
pool de destino. No entanto, se você consultar o status de integridade de um pool de destino sem verificação de integridade, o status retornará como unhealthy
, indicando que o pool de destino não tem verificação de integridade. Recomendamos que os pools de destino tenham verificações de integridade associadas para ajudar a gerenciar as instâncias.
Os balanceadores de carga de rede usam verificações de integridade HTTP legadas para determinar a integridade das instâncias no pool de destino. Um balanceador de carga de rede só pode usar uma verificação de integridade HTTP legada, não uma verificação de integridade HTTPS legada.
Console
Ao usar o console do Google Cloud, é possível criar uma verificação de integridade HTTP legada enquanto cria um balanceador de carga de rede de passagem externa com um back-end de pool de destino.
Não é possível usar a página Verificações de integridade do Console do Google Cloud para criar uma verificação de integridade legada autônoma.
gcloud
Para adicionar gcloud compute
a uma verificação de integridade para um pool 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:
TARGET_POOL
: o nome do pool de destinoHEALTH_CHECK
: a verificação de integridade de HTTP legada a ser usada com este pool de destino
Para remover uma verificação de integridade, use o comando target-pools remove-health-checks
:
gcloud compute target-pools remove-health-checks TARGET_POOL \ --http-health-check=HEALTH_CHECK
Substitua:
TARGET_POOL
: o nome do pool de destinoHEALTH_CHECK
: a verificação de integridade de HTTP legada a ser removida do pool de destino
API
Para associar ou dissociar uma verificação de integridade usando a API, faça uma solicitação HTTP POST
aos URIs apropriados:
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 da solicitação precisa conter a verificação de integridade a ser associada ou dissociada:
{ "healthCheck": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/httpHealthChecks/HEALTH_CHECK" }
Substitua:
PROJECT_ID
: o ID do projeto do Google CloudTARGET_POOL
: o nome do pool de destino a ser atualizadoREGION
: a região em que o pool de destino estáHEALTH_CHECK
: a verificação de integridade de HTTP legada a ser associada ou dissociada com o pool de destino
Para mais informações, consulte a documentação de referência da API para targetPools.addHealthCheck
e targetPools.removeHealthCheck
.
Adicionar ou remover um pool de destino de backup
Ao criar um pool de destino pela primeira vez, é possível optar por aplicar um pool de destino de backup que receberá tráfego caso o pool de destino se torne não íntegro.
Se você nunca configurou um pool de destino de backup, configure também as verificações de integridade para que o recurso funcione corretamente.
Console
Não é possível editar os pools de destino no Console do Google Cloud. É possível editar um proxy de destino usando a API ou CLI do Google Cloud.
gcloud
Para usar gcloud compute
para atualizar o recurso do pool de backup, use o comando target-pools set-backup
:
gcloud compute target-pools set-backup TARGET_POOL \ --backup-pool=BACKUP_POOL \ --failover-ratio=FAILOVER_RATIO
Substitua:
TARGET_POOL
: o nome do pool de destinoBACKUP_POOL
: um nome para o pool de destino de backupFAILOVER_RATIO
: um valor entre 0,0 e 1,0, que determina quando o pool de destino é declarado não íntegro
API
Para fazer uma solicitação a fim de atualizar ou remover um pool de backup com a API, envie uma solicitação 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:
PROJECT_ID
: o ID do projeto do Google CloudTARGET_POOL
: o nome do pool de destino a ser atualizadoREGION
: a região em que o pool de destino estáBACKUP_POOL
: nome do pool de backup a ser associado ao pool de destinoFAILOVER_RATIO
: a proporção de failover
Se você definir um destino vazio ou não definir uma proporção de failover, o comportamento do pool de backup será desativado para este pool de destino.
A seguir
- Para mais informações sobre pools de destino, consulte a documentação de referência da API para
targetPools.setBackup
. - Para mais informações sobre as regras de encaminhamento, consulte Visão geral das regras de encaminhamento.