nginx4种负载均衡算法速记及详解

nginx简介:nginx是一个高性能的HTTP和反向代理服务,它是由一个俄罗斯的牛逼的大牛开发的,既可以用作中间件,又可用做负载均衡。Nginx是一款轻量级的Web 服务器/反向代理服务器,其特点是占有内存少,并发能力强。

nginx简介到此结束。

这讲我们来讲解下面试一个常问的问题:nginx4种负载均衡算法(策略)。
出去面试,常会遇到这个问题:请描述一下nginx4种负载均衡算法,你们公司使用的是那种?

答:nginx常用的支持4种负载均衡调度算法(策略)有:轮训、ip_hash、最少连接、权重算法。
另外有2种是第三方的(不做详解):fair(第三方) 响应时间方式 ,url_hash(第三方) 依据URL分配方式

速记方法:最少连拳轮二哈!!!
想象法:拳有点重,轮着打的二哈又挨批,又打哈气(西)的!

好速记完毕。我们来按实际举例!!!

<一>轮询(round-robin默认):每个请求按时间顺序逐一分配到不同的后端服务器,也是最简单的配置算法;如果后端服务器down掉,能自动剔除。

打开 nginx 配置文件(请以你的安装路径为主)
vi /usr/local/nginx/conf/nginx.conf
编写轮训配置,设定负载均衡服务器列表:

upstream testround.com {
server 192.168.1.1:8080 ;
server 192.168.1.2:8081 ;
server 192.168.1.3:8082 ;
}

当访问 http://192.168.188 的时候,会把这个请求负载到 192.168.1.1 的 8080 端口、192.168.1.2 的 8080 端口、192.168.1.3 的 8080 端口。每个请求按时间顺序逐一分配到不同的后端服务器。

<二>ip_hash:每个请求按访问IP的hash值结果进行分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。如果后端服务器down掉,要手工down掉。

upstream testiphash.com {
#后端服务器访问规则
ip_hash;
server 192.168.1.1:8080 ;
server 192.168.1.2:8081 ;
server 192.168.1.3:8082 ;
}

<三>权重算法:
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下,或者仅仅为在主从(2台服务器)的情况下设置不同的权值,达到合理有效的地利用主机资源。

upstream testweight.com {
#后端服务器访问规则
server 192.168.1.1:8080 weight=2;
server 192.168.1.2:8081 weight=2;
}

<四>最少连接(least_conn):把请求转发给连接数较少的后端服务器进行处理。例如Nginx负载中配置了两台服务器,sky和fans,当Nginx接收到一个请求时,sky正在处理的请求数是100,fans正在处理的请求数是200,则Nginx会把当前请求交给sky来处理。
upstream testleastconn.com {
least_conn;
server 192.168.1.1:8080;
server 192.168.1.2:8081;
}

以上便是4种负载均衡策略的实现方式的讲解,在实际环境运用中,需要根据不同的场景选择性运用,大都是多种策略结合使用并且根据项目实际需求来确认。

猜你喜欢

转载自blog.csdn.net/xzm5708796/article/details/83657000