Configurar el enrutamiento del tráfico TCP
En esta guía se muestra cómo puedes usar Cloud Service Mesh para enrutar el tráfico a los servicios que gestionan el tráfico TCP. Estos servicios incluyen bases de datos, servicios VoIP y plataformas de gestión, que esperan recibir tráfico TCP en puertos o intervalos de puertos específicos.
Esta guía se aplica a las implementaciones con las APIs antiguas. Si usas las nuevas APIs de enrutamiento de servicios, que están en versión preliminar, consulta Configuración de Cloud Service Mesh para servicios TCP con un recurso TCPRoute
.
Con esta guía aprenderás a hacer lo siguiente:
- Configura un servicio que represente una colección de backends o endpoints idénticos que acepten solicitudes TCP de clientes.
- Configura un mapa de reglas de enrutamiento para que los proxies de Envoy que Cloud Service Mesh configure puedan enviar solicitudes TCP.
En los siguientes diagramas se muestra cómo funciona el enrutamiento TCP para las instancias de máquinas virtuales y los grupos de extremos de red, respectivamente.
Preparación
- Esta guía se basa en la guía de preparación de Envoy para la malla de servicios y da por hecho que ya tienes conocimientos básicos sobre cómo funciona Cloud Service Mesh.
- En esta guía se describen los aspectos de la configuración de Cloud Service Mesh que son diferentes cuando configuras tus servicios y el enrutamiento del tráfico TCP.
- En esta guía se da por hecho que ya has configurado un grupo de instancias gestionado o un NEG.
Configurar recursos de balanceo de carga
Sigue estos pasos para configurar los recursos de balanceo de carga.
Crear una comprobación del estado TCP
Configuración con VMs
Si estás configurando MIGs, usa el siguiente comando para crear una comprobación del estado global. Sustituye PORT
por el número de puerto TCP que monitoriza esta comprobación del estado:
gcloud compute health-checks create tcp td-vm-health-check \ --global \ --port=PORT
Configuración con NEGs
Si vas a configurar NEGs, usa el siguiente comando para crear una comprobación de estado:
gcloud compute health-checks create tcp td-gke-health-check \ --use-serving-port
Para obtener más información sobre las comprobaciones del estado, consulta lo siguiente:
- Crear comprobaciones del estado en la documentación de Cloud Load Balancing
gcloud compute health-checks create tcp
en la referencia del comandogcloud
Crear una regla de cortafuegos para la comprobación del estado
Esta regla permite que los comprobadores de estado de Google Cloudaccedan 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
Para obtener más información sobre las reglas de cortafuegos para las comprobaciones del estado, consulta lo siguiente:
- Reglas de cortafuegos para comprobaciones del estado en la documentación de Cloud Load Balancing
gcloud compute firewall-rules create
en la referencia del comandogcloud
(incluye instrucciones paraTAGS
)
Crear un servicio de backend para tus backends TCP
La configuración del servicio de backend para TCP con Cloud Service Mesh difiere ligeramente de la configuración para HTTP. En los pasos siguientes se describen esas diferencias.
Configuración con VMs
Si vas a configurar MIGs, usa el siguiente comando para crear un servicio de backend y añadir la comprobación del 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 el servicio de backend es añadir los backends. Como este paso es la configuración estándar de Cloud Service Mesh (es decir, no es específico de los servicios basados en TCP), no se muestra aquí. Para obtener más información, consulta el artículo Crear el servicio backend de la guía de configuración de máquinas virtuales de Compute Engine con despliegue automático de Envoy.
Configuración con NEGs
Si vas a configurar NEGs, usa los siguientes comandos para crear un servicio de backend y asociar la comprobación de estado al 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 el servicio de backend es añadir el grupo de backend. Como este paso es la configuración estándar de Cloud Service Mesh (es decir, no es específico de los servicios basados en TCP), no se muestra aquí. Para obtener más información, consulta la sección Crear el servicio backend de la guía de configuración de pods de GKE con inyección automática de Envoy.
Configurar el enrutamiento de un servicio de backend basado en TCP
En esta sección, crearás un proxy TCP de destino global 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 que acabas de crear.
Ten en cuenta lo siguiente:
- La regla de reenvío debe tener el esquema de balanceo de carga
INTERNAL_SELF_MANAGED
. La dirección IP virtual (VIP) y el puerto que configures en la regla de reenvío son la VIP y el puerto que usan tus aplicaciones al enviar tráfico a tus servicios TCP. Puedes elegir la VIP de una de tus subredes. Cloud Service Mesh usa este VIP y este puerto para asociar las solicitudes de los clientes a un servicio de backend concreto.
Para obtener información sobre cómo se emparejan las solicitudes de los clientes con los servicios de backend, consulta Descubrimiento de servicios.
gcloud
Usa el siguiente comando para crear el proxy TCP de destino. Sustituye
BACKEND_SERVICE
por el nombre del servicio de backend que has creado en el paso anterior. En el siguiente ejemplo, usamostd-tcp-proxy
como nombre del proxy TCP de destino, pero puedes elegir el nombre que quieras.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 el VIP y el puerto que se usan cuando se emparejan las solicitudes de los clientes con un servicio backend concreto. Para obtener más información, consulta
gcloud compute forwarding-rules create
en la referencia del comandogcloud
.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 la carga del tráfico de la dirección IP virtual especificada en la regla de reenvío entre tus backends.
Limitaciones
No puedes configurar una política de seguridad de Google Cloud Armor si usas el enrutamiento de tráfico TCP.
Solución de problemas
Si tus aplicaciones intentan enviar solicitudes a tus servicios basados en TCP, haz lo siguiente:
- Confirma que el puerto de comprobación del estado TCP coincide con el puerto en el que la aplicación TCP espera recibir tráfico de comprobación del estado.
- Confirma que el nombre del puerto del servicio de backend coincide con el especificado en el grupo de instancias.
Siguientes pasos
- Prepararse para configurar Cloud Service Mesh con Envoy
- Solucionar problemas de despliegues de Envoy