nginx - 使用 nginx 开源的粘性 session 负载均衡器

标签 nginx load-balancing

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/

相关文章:

SolrCloud 负载均衡

nginx - gzip_types image/jpeg 如何工作

docker - Nginx 405当另一个站点重定向到我的vue应用程序时不允许

azure - 使用公共(public) IP 在 Azure 上运行的 Kubernetes 服务。 DNS 名称是什么?

networking - GCP负载平衡器将如何管理WebSocket连接?

java - glassfish 负载均衡器配置

java - 负载均衡情况下的 OpenID

node.js - robots.txt 未通过 node.js 路由显示发送纯文本

ssl - CA 签名的 SSL 证书不受信任,声称是自签名的

ssl - 如何解决为 letsencrypt 授权我的域的挑战?