方案:负载均衡器配置“会话保持”(改动最小,见效最快)

无需改动后端代码或搭建 Redis,直接在负责负载均衡的服务器(Nginx 或 HAProxy)上做手脚。

1. Nginx 方案

  • IP 哈希(ip_hash):根据客户端 IP 计算哈希值,只要该 IP 不变,就永远固定转发到同一台 Web 服务器。

    Nginx

    upstream web_cluster {
        ip_hash;
        server 192.168.1.11:80;
        server 192.168.1.12:80;
    }
    

    注意:如果大量客户端共用同一个局域网公网 IP(例如同一校园网或公司出口),可能导致所有人都挤在同一台服务器,失去负载均衡效果。

2. HAProxy 方案

HAProxy 在七层会话保持上更灵活,原生支持 Cookie 植入绑定:

  • Cookie 绑定(cookie ... insert indirect nocache):HAProxy 在用户首次访问时给响应头植入一个 Cookie(如标记分配给哪台机器),后续用户带着该 Cookie 请求时,HAProxy 总是将其定向到对应机器。

    代码段

    backend web_servers
        balance roundrobin
        cookie SERVERID insert indirect nocache
        server web01 192.168.1.11:80 check cookie web01
        server web02 192.168.1.12:80 check cookie web0