Configure o encaminhamento de tráfego TCP

Este guia demonstra como pode usar a Cloud Service Mesh para encaminhar tráfego para serviços que processam tráfego TCP. Estes serviços incluem bases de dados, serviços VOIP e plataformas de gestão, que esperam receber tráfego TCP em portas específicas ou intervalos de portas.

Este guia aplica-se à implementação com as APIs mais antigas. Se estiver a usar as novas APIs de encaminhamento de serviços, que estão em pré-visualização, consulte a configuração da 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 idênticos ou pontos finais que aceitem pedidos TCP de clientes.
  • Configure um mapa de regras de encaminhamento para que os proxies Envoy que o Cloud Service Mesh configura possam enviar pedidos TCP.

Os diagramas seguintes mostram como o encaminhamento TCP funciona para instâncias de máquinas virtuais (VM) e grupos de pontos finais da rede (NEGs), respetivamente.

Recursos da API Compute Engine para VMs.
Configurar a malha de serviços na nuvem para TCP, back-ends do Compute Engine (clique para aumentar)


Recursos da API Compute Engine para NEGs.
Configurar o Cloud Service Mesh para TCP, back-ends NEG (clique para aumentar)

Preparação

  • Este guia baseia-se no guia de preparação do Envoy para a malha de serviços e pressupõe que já tem uma compreensão básica de como funciona a malha de serviços da Google Cloud.
  • O guia centra-se nos aspetos da configuração da malha de serviços na nuvem que são diferentes quando configura os seus serviços e encaminhamento para tráfego TCP.
  • O guia pressupõe que já configurou um grupo de instâncias geridas (MIG) ou um NEG.

Configure recursos de equilíbrio de carga

Siga os passos abaixo para configurar os recursos de equilíbrio de carga.

Crie uma verificação de funcionamento de TCP

Configuração com VMs

Se estiver a configurar MIGs, use o seguinte comando para criar uma verificação de funcionamento global; substitua PORT pelo número da porta TCP que esta verificação de funcionamento monitoriza:

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

Configuração com NEGs

Se estiver a configurar NEGs, use o seguinte comando para criar uma verificação de estado:

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

Para mais informações sobre as verificações de funcionamento, consulte o seguinte:

Crie uma regra de firewall para a sua verificação de funcionamento

Esta regra permite que as verificações de funcionamento dos verificadores de funcionamento do Google Cloudalcancem os 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 as regras de firewall para verificações de funcionamento, consulte o seguinte:

Crie um serviço de back-end para os seus back-ends TCP

A configuração do serviço de back-end para TCP com a Cloud Service Mesh difere ligeiramente da configuração para HTTP. Os passos seguintes captam essas diferenças.

Configuração com VMs

Se estiver a configurar MIGs, use o seguinte comando para criar um serviço de back-end e adicionar a verificação de funcionamento:

 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

O passo final para configurar o serviço de back-end é adicionar os back-ends. Uma vez que este passo é uma configuração padrão do Cloud Service Mesh (por outras palavras, nada específico para serviços baseados em TCP), não é apresentado aqui. Para mais informações, consulte o artigo Crie o serviço de back-end no guia de configuração de VMs do Compute Engine com implementação automática do Envoy.

Configuração com NEGs

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

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

O passo final para configurar o serviço de back-end é adicionar o grupo de back-end. Uma vez que este passo é uma configuração padrão do Cloud Service Mesh (por outras palavras, nada específico para serviços baseados em TCP), não é apresentado aqui. Para mais informações, consulte o artigo Crie o serviço de back-end no guia de configuração para pods do GKE com injeção automática do Envoy.

Configure o encaminhamento para o seu serviço de back-end baseado em TCP

Nesta secção, cria um proxy TCP de destino global e uma regra de encaminhamento global. Estes recursos permitem que as suas aplicações enviem tráfego para os back-ends com os serviços de back-end criados recentemente.

Considere o seguinte:

  • A regra de encaminhamento tem de ter o esquema de balanceamento de carga INTERNAL_SELF_MANAGED.
  • O endereço IP virtual (VIP) e a porta que configura na regra de encaminhamento são o VIP e a porta que as suas aplicações usam quando enviam tráfego para os seus serviços TCP. Pode escolher o VIP a partir de uma das suas sub-redes. O Cloud Service Mesh usa este VIP e porta para fazer corresponder os pedidos do cliente a um serviço de back-end específico.

    Para obter informações sobre como os pedidos dos clientes são associados aos serviços de back-end, consulte o artigo Deteção 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 no passo anterior. No exemplo seguinte, usamos td-tcp-proxy como nome do proxy TCP de destino, mas pode escolher um nome que se adeque à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 que são usados quando os pedidos de clientes são associados a um serviço de back-end específico. Para mais informações, consulte gcloud compute forwarding-rules create na referência de comandos 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 equilibrar a carga do tráfego para o VIP especificado na regra de encaminhamento nos seus back-ends.

Limitações

Não pode configurar uma política de segurança do Google Cloud Armor se estiver a usar o encaminhamento de tráfego TCP.

Resolução de problemas

Se as suas aplicações estiverem a tentar enviar pedidos para os seus serviços baseados em TCP, faça o seguinte:

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

O que se segue?