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 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.
Preparación
- Este instructivo se basa en la guía de configuración Envoy para la malla de servicios y se da por sentado que ya tienes una comprensión básica 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 sobre cómo 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 levemente 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 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
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 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ías 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.
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
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 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
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.