nginx plus 中的粘性 session 与开源版本中的哈希 cookie 之间的主要区别是什么?
根据docs nginx 开源允许基于对 nginx 内可用的不同全局变量进行哈希处理的 session 持久性,包括 $cookie_
具有以下配置:
upstream myserver {
hash $cookie_sessionID;
server localhost:8092;
server localhost:8093;
server localhost:8094 weight=3;
}
location / {
proxy_pass http://myserver;
}
假设,跨后端将有一个集中机制,为所有新请求生成唯一的 sessionID cookie,那么与 nginx 加粘性 session 方法相比,这种方法的主要缺点是什么?
最佳答案
IP 哈希负载平衡可以作为“粘性 session ”工作, 但您必须记住,这种负载平衡方法本身效果相对较差,因为现代世界中许多用户/设备共享相同的外部 IP 地址。
我们对负载相当重(数千个并行用户)的应用程序进行了实验,并观察到使用 IP 哈希时服务器之间存在百分之几十的不平衡。
理论上,这种情况应该随着负载和服务器数量的增加而改善,但例如,当使用 3 台和 5 台服务器时,我们没有看到任何显着差异。
因此,我强烈建议不要在生产环境中使用 IP 哈希。
作为基于开源的粘性 session 解决方案,使用 HAProxy 不错,因为 HAProxy 开箱即用地支持它。 或者 HAProxy + Nginx bundle ,其中 HAProxy 负责“粘性 session ”。 (我知道有一个负载极高的系统成功地使用了这样的 bundle 来达到此目的,因此,这是可行的想法。)
关于nginx - 使用 nginx 开源的粘性 session 负载均衡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47876948/