yungame 2019-12-10
upstream 支持4种负载均衡调度算法:
A)轮询(默认)
:每个请求按时间顺序逐一分配到不同的后端服务器;
B)ip_hash
:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。
C)url_hash
:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。后台服务器为缓存的时候效率。
D)fair
:这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx
本身是不支持 fair
的,如果需要使用这种调度算法,必须下载Nginx的 upstream_fair
模块。
示例配置如下:
upstream ServerList { server 127.0.0.1:7878 weight=2; server 127.0.0.5:7878 weight=3; server 192.168.10.121:3333 backup;# 热备 server 192.168.10.121:6767 down;# 不参与负载 } server { listen 80; server_name 192.168.1.1; location / { proxy_pass http://ServerList; } }
down 当前server暂时不参与负载均衡
backup 预留的备份服务器(当正在使用的后端服务异常时,启动预留服务)
max_fails 允许请求失败的次数
fail_timeout 经过max_fails失败后,服务暂停的时间
max_conns 限制最大的接受的连接数