Nginx中负载均衡的算法

Nginx的负载均衡目前支持5种算法 weightd round-robin least-connected ip-hash url-hash

什么是负载均衡 
负载平衡也称负载共享,是指对系统中的负载情况进行动态调整,以尽量消除或减少系统中各节点负载不均衡的现象。
具体实现方法是将过载节点上的任务转移到其他轻载节点上,尽可能实现系统各节点的负载平衡,从而提高系统的吞吐量。
负载共享有利于统筹管理分布式系统中的各种资源,便于利用共享信息及其服务机制扩大系统的处理能力。
说白了就是一个人干活现在配置多个人干活 至于你想咋样分配自己设置

1.weighted (指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况)
weighted算法也就是权重算法,会根据每个服务的权重来分发请求,权重大的请求相对会多分发一点,
权重小的会少分发一点。这通常应用于多个服务器的性能不一致时。
需要使用权重算法时只需要在定义服务器组时在服务器后面指定参数 
说白了就是分配请求的比例
http {
    upstream  requests{
        server 192.168.1.70 weight=2;
        server 192.168.1.71 weight=5;
    }
	
2.round-robin (每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除)
round-robin的意思是循环轮询 就是Nginx中默认算法 不解释
http {
    upstream  requests{
        server 192.168.1.70;
        server 192.168.1.71;
    }

3.least-connected (按后端服务器的响应时间来分配请求,响应时间短的优先分配)
least-connected算法的中文翻译是最少连接,即每次都找连接数最少的服务器来转发请求。
例如Nginx负载中有两台服务器,A和B,当Nginx接收到一个请求时,A正在处理的请求数是10,B正在处理的请求数是20
则Nginx会把当前请求交给A来处理。要启用最少连接负载算法只需要在定义服务器组时加上"least_conn" 
说白了就是谁的响应快我就请求谁呗
http {
    upstream  requests{
		least_conn;
        server 192.168.1.70;
        server 192.168.1.71;
    }
	
4.ip-hash (每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题)
ip-hash算法会根据请求的客户端IP地址来决定当前请求应该交给谁使用ip-hash算法时Nginx会确保来自同一客户端的请求都分发到同一服务器,
要使用ip-hash算法时只需要在定义服务器组时加上"ip-hash"
说白了就是同一个服务器一直为你服务
http {
    upstream  requests{
		ip_hash;
        server 192.168.1.70;
        server 192.168.1.71;
    }
	
5.url-hash(这个模块就是用一致性hash来请求后端结节,并且其算法,与PHP中的memcache模块的一致性hash算法,兼容)
多台服务器, 不同的服务器缓存不同的资源,当相同的url访问会到达同一台服务器 
说白了就是提高效率
如需配置请看以下文章配置:http://blog.csdn.net/qq_36030288/article/details/54581024

为什么选择Nginx
1.高并发连接
2.内存消耗少
3.配置文件简单
4.开源
5.内置的健康检查功能
6.稳定性高 

Nginx与lvs的对比优势
1.nginx工作在网络的7层,所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构等 ,相比之下lvs并不具备这样的功能

2.nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通 ,lvs就比较依赖于网络环境

3.nginx安装和配置比较简单,测试起来也很方便,因为它基本能把错误用日志打印出来,lvs的安装和配置、测试就要花比较长的时间了,lvs对网络依赖比较大,
很多时候不能配置成功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦得多

4.nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。
目前lvs中ldirectd也能支持针对服务器内部的情况来监控,但lvs的原理使其不能重发请求。重发请求这点,譬如用户正在上传一个文件,
而处理该上传的节点刚好在上传过程中出现故障,nginx会把上传切到另一台服务器重新处理 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值