Conceptos del balanceo de cargas de proxy TCP

El balanceo de cargas de proxy TCP de Google Cloud te permite usar una sola dirección IP para todos los usuarios a nivel global. El balanceador de cargas de proxy TCP enruta de manera automática el tráfico a las instancias que están más cerca del usuario.

Ten en cuenta que el balanceo de cargas global requiere que uses el nivel Premium de los niveles de servicio de red, que es el predeterminado. De lo contrario, el balanceo de cargas se maneja a nivel regional.

El balanceo de cargas de proxy TCP está diseñado para el tráfico que no es HTTP. Para el tráfico HTTP, usa el balanceo de cargas HTTP en su lugar. Para el tráfico entregado por proxy SSL, usa el balanceo de cargas de proxy SSL.

El balanceo de cargas de proxy TCP admite direcciones IPv6 y direcciones IPv4 para el tráfico del cliente. Las solicitudes de clientes de IPv6 se finalizan en la capa de balanceo de cargas y se redirigen mediante proxies IPv4 a tus backends.

Para obtener información acerca de cómo los balanceadores de cargas de Google Cloud difieren entre sí, consulta los siguientes documentos:

Descripción general

Cuando usas el balanceo de cargas de proxy TCP para tu tráfico TCP, puedes finalizar las sesiones TCP de tus clientes en la capa de balanceo de cargas y, luego, reenviar el tráfico a tus instancias de máquina virtual mediante TCP o SSL.

El balanceo de cargas de proxy TCP se puede configurar como un servicio de balanceo de cargas global. Con esta configuración, puedes implementar tus instancias en varias regiones, y el balanceo de cargas global dirige de manera automática el tráfico a la región más cercana al usuario. Si una región está al máximo de capacidad, el balanceador de cargas dirige de forma automática las conexiones nuevas a otra región con capacidad disponible. Las conexiones de los usuarios existentes permanecen en la región actual.

Ventajas de balanceo de cargas de proxy TCP:

  • Enrutamiento inteligente: El balanceador de cargas puede enrutar solicitudes a ubicaciones de backend que tengan capacidad. En comparación, un balanceador de cargas L3/L4 debe enrutar a backends regionales sin importar la capacidad. El uso de enrutamiento más inteligente permite el aprovisionamiento en N + 1 o N + 2, en lugar de x * N.
  • Parches de seguridad: Si surgen vulnerabilidades en la pila TCP, Cloud Load Balancing aplica parches al balanceador de cargas de manera automática para proteger tus instancias.
  • El balanceo de cargas de proxy TCP es compatible con los puertos 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883 y 5222.

Comportamiento del balanceador de cargas en diferentes niveles de servicio de red

El balanceo de cargas de proxy TCP es un servicio global cuando se usa el nivel Premium del servicio de red. Es posible que tengas más de un servicio de backend en una región y que puedas crear servicios de backend en más de una región, todos atendidos por el mismo balanceador de cargas global. El tráfico se asigna a los servicios de backend de la manera siguiente:

  1. Cuando llega una solicitud de usuario, el servicio de balanceo de cargas determina el origen aproximado de la solicitud a partir de la dirección IP de origen.
  2. El servicio de balanceo de cargas conoce las ubicaciones de las instancias que posee el servicio de backend, su capacidad general y uso actual general.
  3. Si las instancias más cercanas al usuario tienen capacidad disponible, la solicitud se reenviará a ese conjunto de instancias.
  4. Las solicitudes entrantes a la región determinada se distribuyen de manera uniforme entre todos los servicios de backend y las instancias disponibles en esa región. Sin embargo, con cargas muy pequeñas, la distribución puede parecer desigual.
  5. Si no hay instancias en buen estado con capacidad disponible en una región determinada, el balanceador de cargas envía la solicitud a la siguiente región más cercana con capacidad disponible.

El balanceo de cargas de proxy TCP es un servicio regional cuando se usa el nivel estándar del servicio de red. Los grupos de instancias de backend deben estar ubicados en la región que usa la dirección IP externa y la regla de reenvío del balanceador de cargas.

Componentes

Los siguientes son componentes de balanceadores de cargas de proxy TCP.

Direcciones y reglas de reenvío

Las reglas de reenvío enrutan el tráfico por dirección IP, puerto y protocolo a una configuración de balanceo de cargas que consiste en un proxy de destino y uno o más servicios de backend.

Cada regla de reenvío proporciona una sola dirección IP que puedes usar en los registros DNS de tu aplicación. No se requiere balanceo de cargas basado en DNS. Puedes reservar una dirección IP estática para usarla o permitir que Cloud Load Balancing te asigne una. Recomendamos reservar una dirección IP estática; de lo contrario, deberás actualizar tu registro DNS con la dirección IP efímera recién asignada cada vez que borres una regla de reenvío y crees una nueva.

Proxies objetivos

El balanceo de cargas de proxy TCP finaliza las conexiones TCP desde el cliente y crea conexiones nuevas con las instancias. De forma predeterminada, la dirección IP de cliente original y la información del puerto no se conservan. Puedes conservar esta información con el protocolo PROXY. Los proxies objetivo enrutan las solicitudes entrantes directamente a los servicios de backend.

Servicios de backend

Los servicios de backend dirigen el tráfico entrante a uno o más backends adjuntos. Cada backend está compuesto por un grupo de instancias o un grupo de extremos de red y metadatos de capacidad de entrega. La capacidad de entrega del backend se puede basar en CPU o en solicitudes por segundo (RPS).

Cada servicio de backend especifica las verificaciones de estado que se realizarán para las instancias disponibles.

Para garantizar interrupciones mínimas a tus usuarios, puedes habilitar el vaciado de conexiones en los servicios de backend. Estas interrupciones pueden ocurrir cuando una instancia se finaliza, se quita de forma manual o si un escalador automático la quita. Si quieres obtener más información sobre el uso del vaciado de conexiones para minimizar las interrupciones del servicio, lee la documentación Habilita el vaciado de conexiones.

Protocolo para los backends

Cuando configuras un servicio de backend para el balanceador de cargas de proxy TCP, configura el protocolo que usa el servicio de backend a fin de comunicarse con estos. Puedes elegir SSL o TCP. El balanceador de cargas usará solo el protocolo que especifiques, y no intentará negociar una conexión con el otro protocolo.

Depósitos de backend

Los depósitos de backend dirigen el tráfico de entrada a depósitos de Google Cloud Storage en lugar de a grupos de instancias.

Los depósitos son contenedores que conservan datos. Puedes usar los depósitos como almacenamiento común entre las instancias de VM, Google App Engine y otros servicios en la nube. Usa un depósito de almacenamiento cuando tengas una gran cantidad de datos que no necesiten almacenarse de forma local en una sola instancia de VM.

Reglas de firewall

Las reglas de firewall permiten que el tráfico llegue a tus instancias. Debes configurar las reglas de firewall para permitir el tráfico tanto del balanceador de cargas como del verificador de estado.

Puedes usar una sola regla de firewall si se cumple lo siguiente:

  • La regla permite tráfico en el puerto que usa tu regla de reenvío global.
  • El verificador de estado usa el mismo puerto.

Si tu verificador de estado usa un puerto diferente, debes crear una regla de firewall diferente para ese puerto.

Ten en cuenta que las reglas de firewall bloquean y permiten el tráfico al nivel de instancia, no en los extremos de la red. No pueden evitar que el tráfico llegue al balanceador de cargas.

También ten en cuenta que Google Cloud Platform usa una gran variedad de direcciones IP que cambian con el tiempo. Si necesitas determinar las direcciones IP externas en un momento determinado, sigue las instrucciones que se brindan en Preguntas frecuentes de Google Compute Engine.

Direcciones IP de origen

Las direcciones IP de origen de los paquetes, vistas por cada instancia de máquina virtual (VM) de backend o contenedor, son una dirección IP de estos rangos:

  • 35.191.0.0/16
  • 130.211.0.0/22

La dirección IP de origen para el tráfico real del balanceo de cargas es la misma que la de los rangos de IP del sondeo de verificación de estado.

Las direcciones IP de origen del tráfico, vistas por los backends, no son la dirección IP externa de Google Cloud del balanceador de cargas. En otras palabras, existen dos sesiones HTTP, SSL o TCP:

  • Sesión 1: desde el cliente original hasta el balanceador de cargas (GFE):

    • Dirección IP de origen: Es el cliente original (o la dirección IP externa si el cliente usa NAT).
    • Dirección IP de destino: Es la dirección IP del balanceador de cargas.
  • Sesión 2: desde el balanceador de cargas (GFE) a la VM de backend o contenedor:

    • Dirección IP de origen: Es una dirección IP en uno de estos rangos: 35.191.0.0/16 o 130.211.0.0/22.

      No puedes predecir la dirección real de origen.

    • Dirección IP de destino: Es la dirección IP interna de la VM de backend o contenedor en la red de nube privada virtual (VPC).

Ejemplo de balanceo de cargas de proxy TCP

Con el proxy TCP, el tráfico que llega a través de una conexión TCP se finaliza en la capa de balanceo de cargas y, luego, se envía al grupo de instancias disponible más cercano.

En este ejemplo, las conexiones para el tráfico de usuarios en Iowa y Boston se finalizan en la capa de balanceo de cargas. En el diagrama, estas conexiones se etiquetan como 1a y 2a. Se establecen conexiones independientes desde el balanceador de cargas hasta las instancias de backend seleccionadas. Estas conexiones están etiquetadas como 1b y 2b.

Google Cloud Load Balancing con finalización TCP (haz clic para ampliar)
Google Cloud Load Balancing con finalización TCP (haz clic para ampliar)

Afinidad de sesión

La afinidad de sesión envía todas las solicitudes del mismo cliente a la misma instancia de máquina virtual, si la instancia está en buen estado y tiene capacidad.

El balanceo de cargas de proxy TCP ofrece afinidad de IP de cliente, que reenvía todas las solicitudes de la misma dirección IP de cliente a la misma instancia.

Interfaces

Configura y actualiza el servicio de balanceo de cargas de proxy TCP mediante las siguientes interfaces:

  • La herramienta de línea de comandos de gcloud: Es una herramienta de línea de comandos incluida en el SDK de Cloud. La documentación del balanceo de cargas de proxy TCP proporciona ejemplos con esta herramienta. Para obtener una descripción general completa de la herramienta, consulta la guía de la herramienta de gcloud. Puedes encontrar comandos relacionados con el balanceo de cargas en el grupo de comandos gcloud compute.

    También puedes obtener ayuda detallada para cualquier comando de gcloud con la marca --help:

    gcloud compute http-health-checks create --help
        
  • Google Cloud Console: Google Cloud Console puede realizar todas las tareas de balanceo de cargas.

  • La API de REST: La API de Cloud Load Balancing puede realizar todas las tareas de balanceo de cargas. En la documentación de referencia de la API, se describen los recursos y métodos disponibles para ti.

Puertos abiertos

Los balanceadores de cargas de proxy TCP son balanceadores de cargas de proxy inverso. El balanceador de cargas finaliza las conexiones entrantes y abre nuevas conexiones del balanceador de cargas a los backends. La función del proxy inverso la proporciona Google Front Ends (GFE).

Las reglas de firewall que configuras bloquean el tráfico de los GFE a los backends, pero no bloquean el tráfico entrante a los GFE.

Los balanceadores de cargas de proxy TCP tienen una cantidad de puertos abiertos para admitir otros servicios de Google que se ejecutan en la misma arquitectura. Si ejecutas un escaneo de puertos o de seguridad en función de la dirección IP externa de tu balanceador de cargas, parecerá que hay puertos adicionales abiertos.

Esto no afecta a los balanceadores de cargas de proxy TCP. Las reglas de reenvío externas, que se usan en la definición de un balanceador de cargas SSL, solo pueden hacer referencia a un conjunto específico de puertos. El tráfico con un puerto de destino TCP diferente no se reenvía al backend del balanceador de cargas.

Próximos pasos