一、什么是Nginx?
Nginx是一款轻量级高性能的反向代理服务器,支持Web站点和邮件代理。其特点是内存少,并发能力强,结构简单,支持长时间的动作,它通过代理模式将用户的请求转发给不同的服务器,减轻服务器的压力。
二、Nginx负载均衡策略
Nginx支持6种均衡策略,分别为轮询,权重,IP hash(ip 分配),least_conn(最少连接),fair(响应时间),url_hash(url分配)。通过这几种策略来达到不同的业务需求。下面分别介绍下各自的特点:
1、轮询
轮询是策略中最基础的方式,通过upstream模块实现,是默认的均衡策略 在nginx.conf文件里
upstream weburl{
server 127.0.0.1:8080;
server 127.0.0.1:8081 backup;//IP + 端口 +参数配置
}
通过upstram模块 指定后端的服务器列表,每个请求会按时间顺序访问后端的服务器。其中提供一些参数设置:
fail_timeout :时间超出。
max_timeout : 最大超时时间,如超过次数会被认为该服务器为停机状态。
fail_time:请求超时的时间 默认为10s。
backup:标记为该服务为务用服务器,当其中的主机死机后,请求会被备用机接收。
down:表示永远停机。
2、权重策略Weight
权重策略是增加请求次数的几率,可以设置对哪台服务器进行多次的访问:
upstream weburl{
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 backup;
}
上面的例子中使用weight参数=2来表示应该服务器的请求次数,会比权重1的要访问的次数高一些,权重分配的越高处理请求次数越多,此策略用于服务器之间配置较大时进行使用,可以和least_conn,ip_hash配合使用。
3、IP_Hash策略
ip_hash策略指定负载均衡按照基于客户端IP的分配方式,将相同的客户端请求发送到同一个服务器进行处理
upstream weburl{
ip_hash;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 ;
}
其中ip_hash不能和backup进行同时使用,该策略适合状态服务(session)。
4、least_conn策略
least_conn策略是将请求交给后端连接数较少的服务器,轮询策略中是将请求平均的分配给后端服务器,这会增加占用请求的时间,least_conn比轮询效果会好一些。
upstream weburl{
least_conn;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 ;
}
5、第三方策略fair
要实现这种策略需要安装第三方插件。
upstream weburl{
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082;
fair;
}
fair是按照服务器响应时间来进行分配请求,响应时间短的优先分配。
6、url_hash策略
url_hash也是需要第三方插件,url_hash是根据url的hash结果值来分配后端服务器,当多个请求都访问同一个资源,使用url_hash策略可以将同一台服务器之前访问过的资源进