Nginx(三):负载均衡策略 与 Nginx静态服务器
Nginx使用最多的三个核心功能是反向代理、负载均衡和静态服务器。在前面的博客中,我们已经介绍过Nginx的反向代理功能能,这篇博客主要介绍nginx的负载均衡策略,以及作为静态服务器的使用。
所谓负载均衡, 负载均衡即是代理服务器将接收的请求均衡的分发到各服务器。负载均衡主要解决网络拥塞问题,提高服务器响应速度,服务就近提供,达到更好的访问质量,减少后台服务器大并发压力。
一、Nginx的负载均衡策略:
1、加权轮询算法(默认)
按照接收的请求顺序 逐一分配到不同的后端服务器,即使在使用的过程中,某一台后端服务器宕机,nginx会自动将该后端服务器剔除,请求受理情况不会受到任何影响。存在session丢失的问题。
upstream backserver { server 192.168.0.14; server 192.168.0.15; }
在这种方式下,可以给不同的后端服务器设置权重值weight,用于调整不同的服务器上的请求的分配率;权重数据越大,被分配到的请求的几率越大;适合用于后端服务器性能不均衡的情况。
upstream backserver { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; }
2、与IP地址绑定 ip_hash
每个请求 按照 发起请求的客户端的ip的hash结果进行分配,在这种算法下,每个ip请求都会访问到一个固定的后端服务器。可以再一定程度上解决集群部署环境下session共享的问题。
upstream backserver { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; }
3、fair智能调整算法(依赖第三方)
智能调整调度算法,动态根据后端服务器处理请求的响应时间进行均衡分配,响应时间短处理效率高的服务器 分配到请求的概率高,响应时间长处理效率低的服务器分配到请求的概率低。nginx本身不支持fair算法,需要安装upstream_fair模块。
upstream backserver {
server server1;
server server2;
fair;
}
4、url_hash:
按照访问的url 的hash结果分配请求,每个请求的url都会指向后端固定的某台服务器。在nginx作为静态服务器的情况下 可以提高后端服务器的缓存效率。nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包。
upstream backserver { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }
二、Upstream支持的状态参数:
在Nginx的Upstream模块中,除了可以通过server指定到特定服务器和端口,还可以设置服务器在负载均衡中的状态。目前的状态如下:
1、down:代表当前的服务器server不参与负载均衡。
2、backup:预留的备用设备,也就是当其它的服务器故障或忙时才会分配它给客户请求,所以它的压力最小。
3、max_fails:服务器server允许请求失败的次数,默认为1次,当失败次数超过限定的次数,就会返回proxy_next_upstream错误信息。
4、fail_timeout:当经历了max_fails的次数后,暂停服务的时间,一般与max_fails配合使用。
注意:
当服务器的调度算法为ip_hash时,服务器在负载均衡中的状态不能是weight和backup。
三、搭建nginx静态文件服务器:
本部分内容基于Centos7系统。
(1)进入配置文件目录:
cd /usr/local/nginx/conf/
(2)在nginx的默认配置文件中进行配置:
vim nginx.conf
需要把nginx的根目录指向上传文件的目录:按下面代码修改root的目录路径,然后保存退出。
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root /home/servicemarketpic/serviceMarket; index index.html index.htm; }
}
(3)重新加载nginx配置文件:
./nginx -s reload