设定负载均衡服务器列表
upstream 1v20.com{
ip_hash;
server 192.168.1.3:80;
server 192.168.1.4:80 down;
server 192.168.1.5:80 max_fails=3 fail_timeout=20s;
}
upstram是nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡,在上面的设定中,通过upstream指令指定了一个负载均衡器1v20.com,这个名称可以任意指定,在后面需要用到的地方直接调用即可
nginx的负载均衡目前支持4中调度算法,下面进行分别介绍,其中后面两项属于第三方调度算法
轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器当机,故障系统被自动剔除,使用户访问不受影响
weight 指定轮询权值,weight值越大,分配到的访问几率就越高,主要用于后端服务器性能不均的情况下
ip_hash 每个请求按访问ip的hash结果分配,这样来自同一个ip的访客固定访问一台后端服务器,有效解决了动态网页存在的session共享的问题
fair 这是比上面两个更加智能的负载均衡算法,此种算法可以依据页面大小和加载时间长短智能进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短优先分配,nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载nginx的upstream_fair模块
url_hash 此方法按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率,nginx本身是不支持url_hash的,如果要支持这种调度算法,需要安装nginx的hash软件包
HTTP upstream模块中,可以通过server指令指定后端服务器ip地址和端口,同时还可以设定每个后端服务器在负载均衡中的状态,常用状态有:
down 表示当前server暂时不参与负载均衡
backup 预留的备份机器,当其他所有非backup机器出现故障或者忙的时候,才会请求backup服务器
max_fails 允许请求失败的次数,默认为1,当超过最大失败次数时,返回proxy_next_upstream模块定义的错误
fail_timeout 在经历了max_fails之后,暂停服务的时间,max_fails可以和fail_timeout一起使用