Tengo una situación con ip_hash
nginx para sesiones fijas donde siempre dirige el tráfico a un solo servidor. nginx se ejecuta detrás de un balanceador de carga de Google Cloud, desde nginx llega al balanceador de carga GC Kubernetes de mi aplicación antes de ir a uno de los pods.
Se me ocurre que la IP de todos los usuarios fue enmascarada por el balanceador de carga de GC para que nginx los reconozca como una sola fuente.
Me dijeron que podemos agregar la IP original del usuario al encabezado de nginx para que el balanceador de carga pueda reconocerlos como usuarios diferentes. ¿Cómo puedo acercarme a uno? ¿O hay otra solución?
Respuesta1
Si está utilizando el equilibrio de carga de red (con grupos de destino), el equilibrador de carga conserva la IP. Lo que pasa es que Kubernetes está cambiando elIP de origencon las IP del clúster/nodo.
Kubernetes tiene una función para preservar la IP de origen del cliente. Puede consultar los documentos paracómo preservar la IP de origen del cliente en los servicios con Type=LoadBalancer(Equilibrio de carga de red).
Respuesta2
Configurarafinidad de sesióndurante la configuración inicial de ungrupo objetivoconfigurándolo en uno de los siguientesvalores no predeterminadospara proporcionar el nivel deseado desesión pegajosa:
CLIENT_IP
Hashing de 2 tuplas, que utiliza las IP de origen y destino. Todas las conexiones de un cliente terminarán en la misma instancia independientemente del protocolo, siempre que la instancia se mantenga en buen estado.
CLIENT_IP_PROTO
Hashing de 3 tuplas, que utiliza las IP de origen y de destino y el protocolo. Todas las conexiones de un cliente terminarán en la misma instancia siempre que utilicen el mismo protocolo y la instancia se mantenga en buen estado.
Lakshman Diwaakarse refiere a la configuración de afinidad de sesión como un conjunto de atributos no modificables"durante la creación de"un grupo objetivo. Puede resultarle interesante revisar su revisión de las funcionalidades de equilibrio de carga de Cloud Compute disponibles:Balanceador de carga de red versus balanceador de carga HTTP(s).
Respuesta3
Utilice proxy_set_header para agregar su IP original al encabezado NGINX. Consulte los siguientes ejemplos:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
De la misma manera, puedes agregar tu origen IP al encabezado NGINX.