负载均衡之权重轮询调度算法
一、负载均衡
nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器。如果nginx是以反向代理的形式配置运行,那么对请求的实际处理需要转发到后端服务器运行,如果后端服务器有多台,如何选择一台合适的后端服务器来处理当前请求,这就是负载均衡
二、nginx负载均衡策略之round_robin
round_robin策略做为默认策略:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
例如
upstream tomcats {
server 10.1.1.107:88 max_fails=3 fail_timeout=3s weight=1;
server 10.1.1.132:80 max_fails=3 fail_timeout=3s weight=2;
}
功能:nginx在用作反向代理服务器时,对于后端的服务器可以采用两种分流策略:加权分流和ip hash。nginx默认采用round_robin加权算法:对于权重较高的机器,被选中的概率大,对于权重相同的机器,则采用轮询方式。上面的这个配置,如果的3个请求,则会有1个请求分发到10.1.1.107服务器上,2个请求分发到10.1.1.132服务器上。
三、轮询调度算法(Round-Robin Scheduling)
轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。
轮询调度算法假设所有服务器的处理性能都相同,不关心每台服务器的当前连接数和响应速度。当请求服务间隔时间变化比较大时,轮询调度算法容易导致服务器间的负载不平衡。所以此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。
四、权重轮询调度算法(Weighted Round-Robin Scheduling)
上面所讲的轮询调度算法并没有考虑每台服务器的处理能力,在实际情况中,可能并不是这种情况。由于每台服务器的配置、安装的业务应用等不