Nginx的负载均衡及配置
趁热打铁,再接上文。
前提:负载均衡,负载均衡,顾名思义就是减少一个人的工作量,分配给其他人做,达到缩短时间嘛。nginx 的负载均衡已是分布式开发必要手段之一,随着站点请求量与并发量达到一定程度的时候,一台服务器是无法承受的,很容易就发生宕机,为了避免这种情况,以下我们就来学习一下nginx 的负载均衡吧~
说明:Nginx 的负载均衡是实现了反向代理。
负载均衡常用方式:
- 轮询(默认的)
upstream backserver { server 192.168.0.3; server 192.168.0.4; }
按请求时间来分配服务器,其中一台宕机的话,会进行跳过。
2. 权重
upstream backserver { server 192.168.0.3 weight=2; server 192.168.0.4 weight=8; }
轮询的几率,按请求比例来,像上面的就是20%与80%。适用于不同服务器性能有差异的情况。
3. ip_hash
upstream backserver { ip_hash; server 192.168.0.3; server 192.168.0.4; }
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个服务器,用于服务器需要记录session的情况下。
4. fair(需安装)
upstream backserver { server 192.168.0.3; server 192.168.0.4; fair; }
按照各个server响应的时间分配,响应时间短的优先分配。
修改nginx.conf文件
worker_processes 4; events { # 最大并发数 worker_connections 1024; } http{ # 待选服务器列表 upstream myproject{ #默认是轮询 server 135.219.42.4 fail_timeout=60s; server 174.21.2.183; server 179.31.2.183 down;#不参与负载 } server{ # 监听端口 listen 80; # 根目录下 location / { # 选择哪个服务器列表,记得与upstream 中配置名对应 proxy_pass http://myproject; } } }
除此之外,每个server可以配置为
1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大,(ip_hash情况下不能制定权重)。
3.max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
参考资料:https://blog.csdn.net/qq_28602957/article/details/61615876