Configura el enrutamiento de tráfico de TCP

En esta guía, se muestra cómo puedes usar Cloud Service Mesh para enrutar el tráfico a servicios que manejan tráfico de TCP. Estos servicios incluyen bases de datos, servicios de VoIP y plataformas de administración, que esperan recibir tráfico TCP en puertos o rangos de puertos específicos.

Esta guía se aplica a la implementación con las API anteriores. Si usas las nuevas APIs de enrutamiento de servicios, que están en vista previa, consulta Configuración de Cloud Service Mesh para servicios TCP con un recurso TCPRoute.

Usa esta guía para hacer lo siguiente:

  • Configurar un servicio que represente una colección de backends o extremos idénticos que acepten solicitudes de TCP de los clientes.
  • Configurar un mapa de reglas de enrutamiento para que los proxies de Envoy que configure Cloud Service Mesh puedan enviar solicitudes de TCP

En los siguientes diagramas, se muestra cómo funciona el enrutamiento TCP para instancias de máquinas virtuales (VM) y grupos de extremos de red (NEG), respectivamente.

Recursos de la API de Compute Engine para VM.
Configuración de Cloud Service Mesh para TCP, backends de Compute Engine (haz clic para ampliar)


Recursos de la API de Compute Engine para NEG.
Configuración de Cloud Service Mesh para TCP, backends de NEG (haz clic para agrandar)

Preparación

  • Esta guía se basa en la guía de preparación Envoy para la malla de servicios y suponemos que tienes conocimientos básicos de cómo funciona Cloud Service Mesh.
  • Esta guía se enfoca en los aspectos de la configuración de Cloud Service Mesh que son diferentes cuando configuras los servicios y el enrutamiento para el tráfico de TCP.
  • En la guía, se da por sentado que ya configuraste un grupo de instancias administrado (MIG) o un NEG.

Configura recursos de balanceo de cargas

Sigue estos pasos para configurar los recursos de balanceo de cargas.

Crea una verificación de estado de TCP.

Configuración con VM

Si configuras MIG, usa el siguiente comando para crear una verificación de estado global. Reemplaza PORT por el número de puerto TCP que esta verificación de estado supervisa:

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

Configuración con NEG

Si configuras NEG, usa el siguiente comando para crear una verificación de estado:

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

Para obtener más información sobre las verificaciones de estado, consulta los siguientes vínculos:

Crea una regla de firewall para la verificación de estado

Esta regla permite que las verificaciones de estado de los verificadores de estado de Google Cloud lleguen a tus backends.

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

Si deseas obtener más información sobre las reglas de firewall para las verificaciones de estado, consulta los siguientes vínculos:

Crea un servicio de backend para tus backends de TCP

La configuración del servicio de backend para TCP con Cloud Service Mesh difiere un poco de la configuración para HTTP. Los siguientes pasos capturan esas diferencias.

Configuración con VM

Si configuras MIG, usa el siguiente comando para crear un servicio de backend y agregar la verificación de estado:

 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

El último paso para configurar tu servicio de backend es agregar tus backends. Debido a que este paso es la configuración estándar de Cloud Service Mesh (en otras palabras, no se muestra nada específico para los servicios basados en TCP) aquí. Para obtener más información, consulta Crea el servicio de backend en la guía de configuración de las VM de Compute Engine con implementación automática de Envoy.

Configuración con NEG

Si configuras NEG, usa los siguientes comandos para crear un servicio de backend y asociar la verificación de estado con el servicio de backend:

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

El último paso para configurar tu servicio de backend es agregar el grupo de backend. Debido a que este paso es la configuración estándar de Cloud Service Mesh (en otras palabras, no se muestra nada específico para los servicios basados en TCP) aquí. Si deseas obtener más información, consulta Crea el servicio de backend en la guía de configuración para pods de GKE con inserción automática de Envoy.

Configura el enrutamiento para tu servicio de backend basado en TCP

En esta sección, crearás un proxy TCP de destino y una regla de reenvío global. Estos recursos permiten que tus aplicaciones envíen tráfico a los backends con los servicios de backend recién creados.

Ten en cuenta lo siguiente:

  • Tu regla de reenvío debe tener el esquema de balanceo de cargas INTERNAL_SELF_MANAGED.
  • El puerto y la dirección IP virtual (VIP) que configuras en la regla de reenvío son la VIP y el puerto que tus aplicaciones usan cuando envían tráfico a tus servicios de TCP. Puedes elegir la VIP de una de tus subredes. Cloud Service Mesh usa esta VIP y el puerto para que coincidan las solicitudes de los clientes con un servicio de backend en particular.

    Para obtener información sobre cómo las solicitudes de clientes coinciden con los servicios de backend, consulta Descubrimiento de servicios.

gcloud

  1. Usa el siguiente comando para crear el proxy TCP de destino y reemplaza BACKEND_SERVICE por el nombre del servicio de backend creado en el paso anterior. En el siguiente ejemplo, usamos td-tcp-proxy como el nombre del proxy TCP de destino, pero puedes elegir un nombre que se adapte a tus necesidades.

    gcloud compute target-tcp-proxies create td-tcp-proxy \
       --backend-service=BACKEND_SERVICE
    
  2. Crea la regla de reenvío. La regla de reenvío especifica el VIP y el puerto que se usan cuando se hacen coincidir las solicitudes de los clientes con un servicio de backend en particular. Para obtener más información, consulta gcloud compute forwarding-rules create en la referencia de comandos de 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
    

En este punto, Cloud Service Mesh está configurado para balancear las cargas del tráfico para el VIP especificado en la regla de reenvío en tus backends.

Soluciona problemas

Si tus aplicaciones intentan enviar solicitudes a tus servicios basados en TCP, haz lo siguiente:

  • Confirma que el puerto de verificación de estado de TCP coincida con el puerto en el que la aplicación TCP espera recibir el tráfico de la verificación de estado.
  • Confirma que el nombre de puerto del servicio de backend coincida con lo que se especifica en el grupo de instancias.

¿Qué sigue?