Nginx 负载均衡解决同 IP 连接漂移的问题

Jun 07, 2024 • 预计阅读时间 1 分钟

问题场景:设置了多个服务器以后,同一个客户端进来的连接会分配到不同的服务器上,在做端口转发的时候就会出现问题,必须保证同一个 IP 来源的请求始终对应同一台服务器。

对于 http 段,配置 ip_hash

http {
    upstream stream_backend {
        ip_hash;
        server backend1.example.com:12345;
        server backend2.example.com:12345;
        server backend3.example.com:12346;
    }
}

对于 stream 段,配置 hash $remote_addr

stream {
    upstream stream_backend {
        hash $remote_addr consistent;
        server backend1.example.com:12345;
        server backend2.example.com:12345;
        server backend3.example.com:12346;
    }
}

其中,consistent 是可选参数,用来指定 Hash 算法为 ketama consistent hashing method

参考资源:

https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

Nginx
版权声明:如果转发请带上本文链接和注明来源。

lvv.me

iOS/macOS Developer

使用 Nginx 反向代理的时候和上游服务器也使用 SSL 连接

修复 FreeBSD 大版本升级后出现的依赖库不能加载的问题