来源腾讯元宝 DeepSeek
默认情况下的 nginx 作为负载均衡器的时候,不会很均衡,可以使用下面的几种方式
方案一:least_conn
将请求分发到当前连接数最少的服务器,适用于请求处理时间不一致的场景。
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
方案二:加权轮询
如果后端服务器的性能不一致,可以为每台服务器分配不同的权重,性能强的服务器处理更多的请求。
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com weight=2;
server backend3.example.com weight=1;
}
方案三:轮询
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
方案四:IP 哈希
根据客户端 IP 地址的哈希值将请求分发到固定的服务器,适用于需要会话保持的场景。
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
方案五:一致性哈希
通过一致性哈希算法将请求分发到后端服务器,适用于动态增减服务器的场景。
Nginx 本身不支持一致性哈希,但可以通过第三方模块(如 ngx_http_upstream_consistent_hash)实现。