Configura el modo de herramientas de redes de balanceo de cargas

En este documento, se describen los dos modos de herramientas de redes de Dataplane V2 para el balanceo de cargas y cómo habilitarlos en GKE en Bare Metal. Antes de la versión 1.16.0 de GKE en Bare Metal, el modo de red de Dataplane V2 para el balanceo de cargas no se puede configurar. Dataplane V2 solo admitía balanceo de cargas de traducción de direcciones de red de origen (SNAT). Con las versiones del clúster 1.16.0 y posteriores, puedes configurar el modo de red de balanceo de cargas en SNAT (predeterminado) o Direct Server Return (DSR) cuando creas un clúster.

Balanceo de cargas de SNAT

La traducción de direcciones de red de origen (SNAT) es el modo de red predeterminado para el balanceo de cargas de Dataplane V2. Sin embargo, en el modo de SNAT, la dirección IP de cliente no se conserva para los Pods de backend. Cuando el paquete del cliente llega al nodo del balanceador de cargas, se traduce y se reenvía al nodo trabajador de destino con el Pod de backend. El Pod de backend ve que la solicitud proviene del nodo del balanceador de cargas, en lugar de la ubicación del cliente. Como resultado, la respuesta se muestra al nodo del balanceador de cargas, se revierte la traducción y se envía de vuelta al cliente.

Flujo de paquetes para SNAT

Con el modo de red SNAT para el balanceo de cargas de Dataplane V2, se muestra el flujo de paquetes desde un cliente externo hasta un Pod de backend y viceversa:

  • El servicio de tipo LoadBalancer se asigna al nodo del balanceador de cargas, y la bocina de MetalLB que se ejecuta en ese nodo anuncia su dirección IP 172.16.20.16.

  • Dataplane V2 traduce la dirección IP y el puerto de origen con SNAT a <LB_NODE_IP>:52000 y reenvía el paquete al nodo trabajador.

  • La respuesta se envía de vuelta al nodo del balanceador de cargas y la dirección de destino se traduce de manera inversa.

En el siguiente diagrama, se muestra el flujo de paquetes para el modo SNAT:

Flujo de paquetes para el balanceo de cargas de Dataplane V2 en modo SNAT

Balanceo de cargas DSR

El retorno directo del servidor (DSR) soluciona los problemas con el balanceo de cargas de SNAT. En el modo DSR, el nodo del balanceador de cargas usa las opciones de IP para guardar la dirección de origen del cliente. El nodo trabajador puede recuperar el paquete original y reenviarlo al Pod de backend. El Pod de backend puede ver que el paquete proviene de la dirección IP de cliente en lugar de la dirección IP del nodo del balanceador de cargas. Como resultado, el paquete de retorno regresa directamente a la dirección IP del cliente en lugar de regresar al nodo del balanceador de cargas.

Este modo no solo resuelve el problema de visibilidad de la dirección IP de cliente, sino que también ahorra el ancho de banda para el nodo del balanceador de cargas. El tráfico de retorno no tiene que pasar por el nodo del balanceador de cargas, y este nodo ya no tiene que realizar el seguimiento de conexiones. Este enfoque ahorra memoria y libera el puerto de reenvío. En el caso de las cargas de trabajo asimétricas, en las que el tráfico de descarga es mucho más alto que el de solicitudes, el flujo de DSR reduce el ancho de banda de manera significativa.

Flujo de paquetes para DSR

Con el modo de red DSR para el balanceo de cargas de Dataplane V2, este es el flujo de paquetes desde un cliente externo hacia un Pod de backend y viceversa:

  • El servicio de tipo LoadBalancer se asigna al nodo del balanceador de cargas, y la bocina de MetalLB que se ejecuta en ese nodo anuncia su dirección IP 172.16.20.16.

  • Dataplane V2 reenvía el paquete al nodo trabajador y usa las opciones de IP para guardar el puerto y la dirección IP de origen del cliente original.

  • Dataplane V2 en el nodo trabajador reenvía el paquete al Pod del backend.

  • El Pod de backend recupera la dirección IP y el puerto de origen, y responde al cliente.

En el siguiente diagrama, se muestra el flujo de paquetes para el modo DSR:

Flujo de paquetes para el balanceo de cargas de Dataplane V2 en modo SNAT

Limitación de la DSR

DSR solo es compatible con el modo no de túnel, lo que significa que el modelo de red de modo plano debe habilitarse. Si deseas obtener instrucciones para habilitar el modelo de red de modo plano, consulta Cómo implementar un modelo de red de modo IPv4 plano. Si el modelo de red de modo plano no está habilitado, la verificación previa debería fallar si intentas habilitar DSR.

Habilitar el modo DSR

Como se mencionó antes, el modo de SNAT está habilitado de forma predeterminada. Para habilitar el modo DSR, agrega la siguiente anotación a tu archivo de configuración de clúster antes de crearlo. En la versión preliminar, esta función usa una anotación preview.baremetal.cluster.gke.io/dpv2-lbmode-dsr: enable para habilitar el modo DSR. Para inhabilitar el modo DSR, quita la anotación o establécela en disable. No se aceptan otros valores y generan errores de validación.

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: bm
  namespace: cluster-bm
  annotations:
    preview.baremetal.cluster.gke.io/dpv2-lbmode-dsr: enable  # valid options: enable or disable
spec:
...

El valor no se puede modificar después de que se crea el clúster. Asegúrate de haber configurado la opción correcta según tus necesidades antes de crear el clúster.