nginx的负载均衡算法解析

首先nginx也是个web服务器,通常作为静态资源服务器,比如保存图片、文件,但更多的时候是被当做反向代理和负载均衡组件使用,目前nginx负载算法有5种,自带的有3种,需安装第三方插件的有2种,如下:

1、round robin(自带默认)

轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式,适用于后台机器性能一致的情况;挂掉的机器可以自动从服务列表中剔除。

2、weight(自带)

根据权重来分发请求到不同的机器中,指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

upstream bakend { 

server 192.168.1.1 weight=20;   

server 192.168.1.2 weight=10;   

}  设置weight之后,192.168.1.1有三分之二的概率处理请求,192.168.1.2 有三分之一的概率处理请求,可根据需要将服务器配置较高的weight设置高。

3、ip_hash(自带)

根据请求者ip的hash值将请求发送到后台服务器中,可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题,这种算法的最大优势在于一定程度上解决了集群部署环境下session共享的问题。

4、fair(第三方)

智能调整调度算法:动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少。需安装upstream_fair模块。

upstream bakend { 

server 192.168.1.1;   

server 192.168.1.2;   

fair;

}

5、url_hash(第三方)

按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,当后台服务器为缓存服务(squid、varnish)的时候效率高。

upstream backend {

server squid1:3128;   

server squid2:3128;   

hash $request_uri;   

hash_method crc32;   

}

总结:

#定义负载均衡设备的 Ip及设备状态    

upstream myServer {   

    server 127.0.0.1:9090 down; 

    server 127.0.0.1:8080 weight=2; 

    server 127.0.0.1:6060; 

    server 127.0.0.1:7070 backup; 

}

down:表示当前的server不参与负载。

weight:默认是1,weight越大,负载的权重就越大。

backup:其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

大部分的nginx的负载都采用默认轮询方式,但其他算法也有自己的应用场景,具体还应根据服务情况分析。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值