nginx静态负载均衡与反向代理

服务的进化史:单机->集群->分布式集群

针对服务集群,分布式服务,我们通过负载均衡和反向代理来保证我们服务的高可用,高性能等特点

负载均衡:

  DNS(将一个域名绑定多个ip) 负载均衡,一般由运营商进行管理,可根据ip分配就近服务器,提高响应速度

  LVS 软件负载均衡,F5 硬件负载均衡(价格贵),一般交由系统运维工程师维护

  Nginx 服务负载均衡,反向代理

  客户端负载均衡:ribbon,feign,配合服务注册发现来实现,这样可以省去nginx等中间一层代理,提高响应速度。

作为一般软件开发人员,我们只需关注nginx即可,当然除了nginx还有其他可选。

对于nginx负载均衡我们需要关心几个方面:

  服务器配置 : http - upstream 

  负载均衡算法 :轮询,加权轮询,ip_hash,fair,url_hash

  失败重试机制

  服务器心跳检测

 

nginx 的 upstream目前支持 4 种算法方式的分配 
1)、轮询(默认) 
      每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 
2)、weight 
      指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 
2)、ip_hash 
      每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。  
3)、fair(第三方) 
      按后端服务器的响应时间来分配请求,响应时间短的优先分配。  
4)、url_hash(第三方)

 

nginx负载均衡器调度状态:

1、down,表示当前的server暂时不参与负载均衡

2、backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的访问压力最低

3、max_fails,允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误。

4、fail_timeout,请求失败超时时间,在经历了max_fails次失败后,暂停服务的时间。max_fails和fail_timeout可以一起使用。

 

nginx失败重试机制

max_fails和fail_timeout:当fail_timeout时间内失败了max_fails次后,则认为上游服务不可用,将会将该服务从列表中自动剔除,但是当fail_timeout后 该服务器会再次加入到服务列表中

 

反向代理:

  全局配置

  location配置:失败重试机制,请求方法,请求头配置

 

posted @ 2019-05-05 17:14  穷开心y  阅读(350)  评论(0编辑  收藏  举报