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.

Recursos de la API de Compute Engine para máquinas virtuales.
Configuración de Cloud Service Mesh para TCP y back-ends de Compute Engine (haga clic para ampliar)


Recursos de la API de Compute Engine para NEGs.
Configuración de Cloud Service Mesh para back-ends de TCP y NEG (haz clic en la imagen para ampliarla)

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 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:

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

  1. 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, usamos td-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
    
  2. 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 comando 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 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