Configurar o roteamento de tráfego TCP

Neste guia, demonstramos como usar o Cloud Service Mesh para rotear o tráfego para serviços que processam tráfego TCP. Esses serviços incluem bancos de dados, serviços de VOIP e plataformas de gerenciamento, que esperam receber tráfego TCP em portas ou intervalos de portas específicos.

Este guia se aplica à implantação com as APIs mais antigas. Se você estiver usando as novas APIs de roteamento de serviço, que estão em pré-lançamento, consulte Configuração do Cloud Service Mesh para serviços TCP com um recurso TCPRoute.

Use este guia para fazer o seguinte:

  • Configure um serviço que represente uma coleção de back-ends ou endpoints idênticos que aceitam solicitações de TCP dos clientes.
  • Configure um mapa de regras de roteamento para que os proxies Envoy configurados pelo Cloud Service Mesh possam enviar solicitações TCP.

Os diagramas a seguir mostram como o roteamento TCP funciona para instâncias de máquina virtual (VM) e grupos de endpoints de rede (NEGs, na sigla em inglês), respectivamente.

Recursos da API Compute Engine para VMs.
Como configurar o Cloud Service Mesh para TCP, back-ends do Compute Engine (clique para ampliar)


Recursos da API Compute Engine para NEGs.
Como configurar o Cloud Service Mesh para TCP e back-ends de NEG (clique para ampliar)

preparação

  • Este guia se baseia no guia de preparação do Envoy para malha de serviço e pressupõe que você já tenha uma compreensão básica de como o Cloud Service Mesh funciona.
  • O guia se concentra em aspectos da configuração do Cloud Service Mesh que são diferentes quando você configura os serviços e o roteamento para o tráfego TCP.
  • Para este guia, é necessário ter configurado um grupo gerenciado de instâncias (MIG, na sigla em inglês) ou NEG.

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

Configurar com VMs

Se você estiver configurando MIGs, use o seguinte comando para criar uma verificação de integridade global. Substitua PORT pelo número da porta TCP que esta verificação de integridade monitora:

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

Configurar com NEGs

Se estiver configurando NEGs, use o seguinte comando para criar uma verificação de integridade:

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

Para saber mais sobre verificações de integridade, consulte:

Criar 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.

gcloud

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

Para mais informações sobre regras de firewall para verificações de integridade, consulte:

Criar um serviço de back-end para back-ends TCP

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

Configurar com VMs

Se você estiver configurando MIGs, use o seguinte comando para criar um serviço de back-end e adicionar a verificação de integridade:

 gcloud 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 os back-ends. Como essa é uma configuração padrão do Cloud Service Mesh (em outras palavras, nada específico para serviços baseados em TCP), ela não é mostrada aqui. Para mais informações, consulte Criar o serviço de back-end no guia de configuração das VMs do Compute Engine com implantação automática do Envoy.

Configurar com NEGs

Se estiver configurando NEGs, use os seguintes comandos para criar um serviço de back-end e associar a verificação de integridade a esse serviço:

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 essa é uma configuração padrão do Cloud Service Mesh (em outras palavras, nada específico para serviços baseados em TCP), ela não é mostrada aqui. Para mais informações, consulte Criar o serviço de back-end no guia de configuração dos pods do GKE com injeção automática do Envoy.

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.

Considere o seguinte:

  • Sua regra de encaminhamento precisa ter o esquema de balanceamento de carga INTERNAL_SELF_MANAGED
  • O endereço IP virtual (VIP, na sigla em inglês) e a porta que você configura na regra de encaminhamento são o VIP e a porta que seus aplicativos usam ao enviar tráfego para seus serviços TCP. É possível escolher o VIP de uma das suas sub-redes. O Cloud Service Mesh usa esse VIP e porta para corresponder solicitações de clientes a um serviço de back-end específico.

    Para informações sobre como as solicitações de cliente são correspondidas aos serviços de back-end, consulte Descoberta de serviços.

gcloud

  1. Use o seguinte comando para criar o proxy TCP de destino: substitua 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 porta usados ao corresponder solicitações de clientes a um determinado serviço de back-end. Para mais informações, consulte gcloud compute forwarding-rules create na referência do comando gcloud.

    gcloud 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 Cloud Service Mesh está configurado para balancear a carga do tráfego do VIP especificado na regra de encaminhamento nos 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.

A seguir