我有一个应用程序在两个不同的AWS实例上运行,我想基于IP启用“粘性”或“持久”会话,以便我可以以特定方式利用Web套接字技术.
我有两个不同的设置,都涉及使用ip_hash来启用这些粘性会话.
在第一个设置中,应用程序进程在与Nginx配置相同的实例上运行.这是有效的,会议按预期持久.
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;
}
在第二个设置中,我指向外部实例并尝试实现相同的效果.此设置无效.换句话说,会话仍然是负载平衡的.
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;
}
我正确使用ip_hash吗?如何为外部服务器启用“粘性”基于IP的会话?
最佳答案
根据Nginx文档,Sticky会话支持仅适用于其昂贵的Plus版本.
我一直在研究替代方案,而我越接近这个老叉子与Nginx 1.5 https://github.com/lusis/nginx-sticky-module不兼容
我一直在研究替代方案,而我越接近这个老叉子与Nginx 1.5 https://github.com/lusis/nginx-sticky-module不兼容
我还试图构建一个LUA模块,但没有用于对等选择的API挂钩,仅用于枚举和阻塞.
更新
我找到了另一个很棒的模块,见https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src