Como rotear o tráfego TCP com o Traffic Director

Neste guia, demonstramos como usar o Traffic Director para rotear o tráfego a serviços que gerenciam o tráfego TCP, incluindo bancos de dados, serviços VOIP e plataformas de gerenciamento, que esperam receber o tráfego TCP em portas ou intervalos de porta específicos.

Neste guia, mostraremos como:

  • Configure um serviço que represente um conjunto de back-ends/endpoints idênticos, que processam solicitações TCP de clientes.
  • Configure um mapa de regras de roteamento para que os proxies Envoy configurados pelo Traffic Director possam enviar solicitações TCP. Os diagramas a seguir mostram como o roteamento TCP funciona para VMs e NEGs, respectivamente.
Recursos da API Compute Engine para VMs (clique para ampliar)
Como configurar o Traffic Director para TCP, back-ends do Compute Engine (clique para ampliar)
Recursos da API Compute Engine para NEGs (clique para ampliar)
Como configurar o Traffic Director para TCP, back-ends de NEG (clique para ampliar)

preparação

  • Ele se baseia no guia de configuração Envoy para malha de serviço e pressupõe que você já tenha uma compreensão básica do funcionamento do Traffic Director.
  • O foco do tutorial são os aspectos da configuração do Traffic Director que são diferentes ao configurar os serviços e o roteamento para o tráfego TCP.
  • Supomos que você já tenha configurado um grupo gerenciado de instâncias ou um grupo de endpoints de rede.

Como configurar recursos de balanceamento de carga

Siga as etapas abaixo para configurar os recursos de balanceamento de carga.

Crie uma verificação de integridade TCP

Crie uma verificação de integridade.

Configurar com VMs

Se você estiver configurando grupos gerenciados de instâncias, use o seguinte comando para criar uma verificação de integridade global, substituindo o campo PORT.

gcloud compute health-checks create tcp td-vm-health-check \
    --global \
    --port=PORT

Configurar com NEGs

Se você estiver configurando grupos de endpoints de rede, use os seguintes comandos para criar uma verificação de integridade e criar uma regra de firewall para permitir os intervalos de endereços IP do verificador de integridade.

gcloud compute health-checks create tcp td-gke-health-check \
    --use-serving-port

Crie uma regra de firewall para a verificação de integridade. Essa regra permite que as verificações de integridade dos verificadores do Google Cloud alcancem seus back-ends. Consulte verificações de integridade para mais informações sobre como criar regras de firewall para verificações de integridade.

gcloud compute firewall-rules create fw-allow-health-checks \
  --action ALLOW \
  --direction INGRESS \
  --source-ranges 35.191.0.0/16,130.211.0.0/22 \
  --target-tags TAGS \
  --rules tcp:80

Consulte os documentos de referência do gcloud para mais informações (incluindo orientações sobre TAGS).

Como criar um serviço de back-end para back-ends TCP

A configuração do serviço de back-end para TCP com o Traffic Director é um pouco diferente da configuração para HTTP. As etapas a seguir capturam essas diferenças.

Configurar com VMs

Se você estiver configurando grupos gerenciados de instâncias, use o seguinte comando para criar um serviço de back-end e adicionar a verificação de integridade.

gcloud beta compute backend-services create td-vm-service \
   --global \
   --load-balancing-scheme=INTERNAL_SELF_MANAGED \
   --health-checks=td-vm-health-check \
   --protocol=TCP \
   --global-health-checks

A etapa final para configurar o serviço de back-end é adicionar o grupo de back-end. Como essa etapa é a configuração padrão do Traffic Director, ou seja, nada específico dos serviços baseados em TCP, ela não é mostrada aqui. Consulte o guia de configuração para mais informações.

Configurar com NEGs

Se você estiver configurando grupos de endpoints de rede, use os seguintes comandos para criar um serviço de back-end e adicionar a verificação de integridade.

Crie o serviço de back-end e associe a verificação de integridade a ele.

gcloud compute backend-services create td-gke-service \
  --global \
  --health-checks td-gke-health-check \
  --protocol=TCP \
  --load-balancing-scheme INTERNAL_SELF_MANAGED

A etapa final para configurar o serviço de back-end é adicionar o grupo de back-end. Como esta etapa é a configuração padrão do Traffic Director (ou seja, nada específico para serviços baseados em TCP), ela não é mostrada aqui. Consulte o guia de configuração para mais informações.

Configurar o roteamento para seu serviço de back-end baseado em TCP

Nesta seção, mostramos como criar um proxy TCP de destino global e uma regra de encaminhamento global. Esses recursos permitem que os aplicativos enviem tráfego para os back-ends com os serviços de back-end recém-criados.

Lembre-se:

  • Sua regra de encaminhamento precisa ter o esquema de balanceamento de carga INTERNAL_SELF_MANAGED
  • O VIP e a PORT que você configura na regra de encaminhamento são o VIP e a PORT que os aplicativos usarão ao enviar tráfego para os serviços TCP. É possível escolher o VIP de uma das suas sub-redes. O Traffic Director usa esse VIP e essa PORT para corresponder solicitações de clientes a um determinado serviço de back-end.
    • Consulte Descoberta de serviços para informações sobre como as solicitações do cliente são correspondidas aos serviços de back-end.

  1. Use o comando a seguir para criar o proxy TCP de destino, substituindo BACKEND_SERVICE pelo nome do serviço de back-end criado na etapa anterior. No exemplo a seguir, usamos td-tcp-proxy como o nome do proxy TCP de destino, mas é possível escolher um nome que atenda às suas necessidades.

    gcloud compute target-tcp-proxies create td-tcp-proxy \
    --backend-service=BACKEND_SERVICE
  2. Crie a regra de encaminhamento. A regra de encaminhamento especifica o VIP e a PORT usados ao corresponder solicitações de clientes a um determinado serviço de back-end. Consulte a referência da gcloud para mais informações sobre campos.

    gcloud beta compute forwarding-rules create td-tcp-forwarding-rule \
        --global \
        --load-balancing-scheme=INTERNAL_SELF_MANAGED \
        --address=VIP\
        --target-tcp-proxy=td-tcp-proxy \
        --ports PORT \
        --network default
    

Neste ponto, o Traffic Director está configurado para balancear a carga do tráfego do VIP especificado na regra de encaminhamento dos back-ends.

Solução de problemas

Se os aplicativos estiverem tentando enviar solicitações para os serviços baseados em TCP, faça o seguinte:

  • Confirme se a porta de verificação de integridade TCP corresponde à porta em que o aplicativo TCP espera receber o tráfego da verificação de integridade.
  • Confirme se o nome da porta do serviço de back-end corresponde ao especificado no grupo de instâncias.