负载均衡实现利用服务器集群处理客户端请求,提高访问效率,降低服务器响应压力。负载均衡的调度算法含义参照:Nginx入门介绍。通过修改Nginx.conf配置文件(详见Nginx中nginx.conf配置文件详解 ),可以选用不同的负载均衡的调度算法。
1.不同的负载均衡调度算法的应用
(1)采用轮询调度算法(默认的)-应用例子
upstream test {
server 127.0.0.1:8001;
server 10.10.11.85:8001;
}
server {
listen 8081;
server_name localhost;
location / {
proxy_pass http://test/;
}
}
其中upstream块定义了集群服务器,在location块中proxy_pass中进行调用。
(2)采用权重轮询调度算法-应用例子
upstream test {
server 127.0.0.1:8001 weight=2;
server 10.10.11.85:8001 weight=3;
}
其中weight=2的服务器会被动用2次,而后weight=3的服务器会被调用3次,周而复始。
(3)采用IP哈希调度算法-应用例子
upstream test {
ip_hash;
server 127.0.0.1:8001 ;
server 10.10.11.85:8001;
}
采用IP哈希调度算法可以解决大文件分块上传时,不能传到同一台服务器上的问题。
(4)采用URL哈希调度算法-应用例子
upstream test {
hash $request_uri;
server 127.0.0.1:8001 ;
server 10.10.11.85:8001;
}
这种算法对于利用后端服务器缓存的情况下,能够减少带宽。
2.一些重要的命令和参数
在定义集群服务器中,某个服务器后通过以下命令和参数实现重要功能
(1)down:表示该服务器下线,不参与负载均衡;
(2)backup:表示该服务器为备份服务器,当集群中其他服务器宕机时可用
(3)max_fails:表示该服务器处理客户端请求经过几次失败后认定该服务器宕机,默认为1
(4)fail_timeout:单独使用时表示该服务器被认为宕机后,经过多久会再次被尝试加入集群,默认为10S
(5)max_conns:表示该服务器允许连接数的上限,默认为0即无限制
upstream test {
server 127.0.0.1:8001 down ;
server 10.10.11.85:8001 backup;
server 10.10.11.86:8001 max_fails=2 fail_timeout=30s;;
server 10.10.11.87:8001 max_fails=2 fail_timeout=30s; ;
}
通常max_fails和fail_timeout配合使用,表示在fail_timeout内失败max_fails次以后,认为该服务器宕机,然后再等待fail_timeout后,再尝试与该服务器通信。
动静分离就是将动态资源和静态资源分开;动态资源包括需要访问数据库获得的数据;静态资源如图片、html、css等文件。
动静分离的方式有多种,动态资源和静态资源分别部署在不同服务器或者同一服务器的不同路径下,也可以是在访问时通过location块Nginx中location块配置入门 中与正则字符串的匹配(后缀模式)区分出动态资源和静态资源,从而代理到不同服务器中进行处理,例如:
不区分大小写的匹配模式,以.css结尾的文件,在/res/css/lead/中寻找该css文件。
location ~* .css$ {
root /res/css/lead/;
}