我有一个在两个不同的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是否安装了“ ngx_http_upstream_module”?我不知道默认情况下是否包含它。“ nginx -V”通常输出其构建的模块。我的(从源头建造)没有提及它
—
蒂姆(Tim)