Tengo una aplicación que se ejecuta en dos instancias diferentes de AWS y me gustaría habilitar sesiones "permanentes" o "persistentes" basadas en IP para poder aprovechar las tecnologías de socket web de una manera particular.
Tengo dos configuraciones diferentes que ambas implican usar ip_hash
para habilitar estas sesiones fijas.
En la primera configuración, los procesos de la aplicación se ejecutan en la misma instancia que la configuración de Nginx. Esto está funcionando , las sesiones son persistentes como se esperaba.
upstream my_app {
ip_hash;
# local servers
server 127.0.0.1:3001 weight=100 max_fails=5 fail_timeout=300;
server 127.0.0.1:3002 weight=100 max_fails=5 fail_timeout=300;
keepalive 8;
}
En la segunda configuración, estoy apuntando a instancias externas y tratando de lograr el mismo efecto. Esta configuración no funciona . En otras palabras, las sesiones todavía están siendo balanceadas en carga.
upstream my_app {
ip_hash;
# external servers
server 111.11.11.11:3001 weight=100 max_fails=5 fail_timeout=300;
server 222.22.22.22:3002 weight=100 max_fails=5 fail_timeout=300;
keepalive 8;
}
¿Estoy usando ip_hash
correctamente? ¿Cómo puedo habilitar sesiones "fijas" basadas en IP para servidores externos?
fuente
Respuestas:
Mi servidor estaba detrás del equilibrio de carga de AWS, por lo que necesitaba pasar los encabezados correctos a la parte superior para que siempre reflejara la IP del cliente. La siguiente configuración solucionó mi problema (vea la línea comentada):
fuente
De acuerdo con la documentación de Nginx, el soporte de sesión fija solo está disponible para su costosa versión Plus. He estado investigando alternativas y cuanto más cerca he estado es este viejo tenedor que no es compatible con Nginx 1.5+ https://github.com/lusis/nginx-sticky-module
También he intentado construir un módulo LUA pero no hay enlaces API para la selección por pares, solo para enumeración y bloqueo.
Equilibrio de carga Nginx Plus
Actualizar
He encontrado otro gran módulo, consulte https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src
fuente