Enrutar el tráfico de TCP con Traffic Director

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

En esta guía, se muestra cómo realizar las siguientes tareas:

  • Configura un servicio que represente una colección de backends o extremos idénticos, que controlan las solicitudes TCP de los clientes.
  • Configura un mapa de reglas de enrutamiento para que los proxies de Envoy configurados por Traffic Director puedan enviar solicitudes de TCP. En los siguientes diagramas, se muestra cómo funciona el enrutamiento de TCP para las VM y los NEG, respectivamente.
Recursos de la API de Compute Engine para VM (haz clic para ampliar)
Configurar Traffic Director para TCP, backends de Compute Engine (haz clic para agrandar) )
Recursos de la API de Compute Engine para NEG (haz clic para ampliar)
Configuración de Traffic Director para TCP, backends de NEG (haz clic para agrandar)

Preparación

  • Este instructivo se basa en la guía de configuración Envoy para la malla de servicios y suponemos que tienes conocimientos básicos de cómo funciona Traffic Director.
  • El instructivo se centra en los aspectos de la configuración de Traffic Director que son diferentes cuando se configuran los servicios y el enrutamiento para el tráfico de TCP.
  • Suponemos que ya configuraste un grupo de instancias administrado o grupo de extremos de red.

Configura los recursos del balanceo de cargas

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

Crea una verificación de estado de TCP.

Crea una verificación de estado.

Configuración con VM

Si configuras grupos de instancias administrados, usa el siguiente comando para crear una verificación de estado global y reemplaza el campo PORT.

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

Configuración con NEG

Si configuras grupos de extremos de red, usa los siguientes comandos para crear una verificación de estado y crear una regla de firewall que permita los rangos de direcciones IP del verificador de estado.

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

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. Consulta verificaciones de estado a fin de obtener más información para crear reglas de firewall para verificaciones de estado.

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

Consulta los documentos de referencia de gcloud para obtener información adicional (incluida la orientación para TAGS).

Crea un servicio de backend para tus backends de TCP

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

Configuración con VM

Si configuras grupos de instancias administrados, 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 el grupo de backend. Debido a que este paso es la configuración de Traffic Director estándar (en otras palabras, no se muestra nada específico para los servicios basados en TCP) aquí. Consulta la guía de configuración para obtener más información.

Configuración con NEG

Si configuras grupos de extremos de red, usa los siguientes comandos para crear un servicio de backend y agregar la verificación de estado.

Crea el servicio de backend y asocia la verificación de estado con este.

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 de Traffic Director estándar (en otras palabras, no se muestra nada específico para los servicios basados en TCP) aquí. Consulta la guía de configuración para obtener más información.

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 VIP y el PORT que configuras en la regla de reenvío son el VIP y PORT que tus aplicaciones usarán cuando envíes tráfico a tus servicios TCP. Puedes elegir el VIP de una de tus subredes. Traffic Director usa este VIP y PORT para que coincidan las solicitudes de los clientes con un servicio de backend en particular.
    • Consulta Descubrimiento de servicios para obtener información sobre cómo se vinculan las solicitudes de clientes con los servicios de backend.

  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 la VIP y el puerto que se usan cuando se hacen coincidir las solicitudes de los clientes con un servicio de backend en particular. Consulta la referencia de gcloud para obtener información adicional sobre los campos.

    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, Traffic Director está configurado para balancear las cargas del tráfico para la VIP especificada en la regla de reenvío en tus backends.

Soluciona problemas

Si tus aplicaciones intentan enviar solicitudes a tus servicios basados en TCP:

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