为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器
,在服务器集群中,Nginx起到一个代理服务器的作用(反向代理)
一、轮询(默认)
其余参数就不一一列出
upstream backserver {
server 192.168.0.13;
server 192.168.0.14;
}
此策略适合服务器配置相当,且某个服务器down掉了,会自动剔除该服务器
二、weight权重分配
该方式适合服务器的硬件配置差别比较大的情况,权重越高分配到需要处理的请求越多
upstream backserver {
server 192.168.0.13 weight=4; //40%
server 192.168.0.14 weight=6; //60%
}
三、ip_hash保证session会话,解决session不能跨服务器的问题
基于前两种方式权重的分配,的确改变了访问服务的概率,但在实际的开发过程中,负载均衡并不能满足我们的需求,例如,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。
upstream backserver {
ip_hash;
server 192.168.0.14:13;
server 192.168.0.15:14;
}
nginx版本1.3.1之前,不能在ip_hash中使用权重。不能与backup联用
四、fair 按响应时间分配,时间短的将先被分配
upstream backserver{
server 192.168.0.13
server 192.168.0.14
fair #实现响应时间短的优先分配
}
五、url_hash