在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。
根据权重负载均衡
指定轮询几率,weight和访问比率成正比,weight值越大,所分配的请求就越多,用于后端服务器性能不均的情况。
upstream backserver {server 192.168.1.10 weight=3;server 192.168.1.11 weight=7;
}
根据ip负载均衡
每个请求按 访问ip的hash结果分配 (可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个),这样每个访客固定访问一个后端服务器,可以解决 session的问题。
在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。
我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。
upstream backserver {ip_hash;server 192.168.0.14:88;server 192.168.0.15:80;
}
轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backserver {server 192.168.1.10;server 192.168.1.11;}
最小连接
它的核心思想是将请求分发到当前连接数最少的后端服务器上,以实现负载均衡。
在使用最少连接策略时,负载均衡器会记录每个后端服务器当前的连接数。当一个请求到达负载均衡器时,它会将请求发送到连接数最少的服务器上。这样可以确保每个服务器的负载相对均衡,避免某个服务器过载而导致性能下降。
upstream study{least_conn:server 127.0.0.1:8080 ;server 127.0.0.1:8081 ;
}
fair
按照请求时长、页面大小智能化分配请求
需要下载nginx-upstream-fair
解压nginx-upstream-fair-master.zip :unzip nginx-upstream-fair-master.zip