Nginx配置负载均衡

一、负载均衡

负载均衡就是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。

 

二、反向代理与正向代理

反向代理:代理的是服务器端

正向代理:代理的是客户端

三、负载均衡策略

(一)轮询(默认)。每个请求,按时间顺序逐一分配到不同的后端应用服务器节点,如果后端服务出现故障,nginx能够自动剔除该节点。如:

  1、在server模块中,配置nginx地址、端口以及负载服务。

  

 

  2、在http中,server模块外,进行负载均衡负载服务器轮询配置

   

 

(二)权重,weight。默认为1,权重越高,被分配的客户端越多,用于后端服务器性能不均的情况。如:

  

 

 (三)ip_hash。获取每个访问的IP,根据hash计算结果分配,每个访访客固定访问一个后端服务器,可以解决session丢失问题,但也可能导致部分服务器超负荷。但可以与weight配合使用。如:

  

 

 (四)least_conn,连接数最少的分配。可以与weight配合使用

  

四、其他关键字配置

 backup和down。

  backup,标记当前server为预留的备用服务器,当所有应用服务器均停止服务时,才会启用被backup标记的服务器,适用于热更新的情况(一般先更新备份服务器,然后关停部分服务器,更新关停的部分服务器,再关闭剩下的服务器同时启动更新完的应用服务器)

  down,标记表示改server当前不参与提供负载均衡服务,比较适用于对服务器进行维护的情况。

  如:

  

 max_fails和 fail_timeout,默认1次,10秒。一般建议设置为10次,60秒。(简单的理解:在周期内,连接失败次数达到最大次数,则判断为节点不可用,将请求转交给下个节点处理,等下一个周期再次去请求)

  这个是Nginx在负载均衡功能中,用于判断后端节点状态,所用到两个参数。

  Nginx基于连接探测,如果发现后端异常,在单位周期为fail_timeout设置的时间中达到max_fails次数,这个周期次数内,如果后端同一个节点不可用,那么接将把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。

  Nginx只有当有访问时后,才发起对后端节点探测。如果本次请求中,节点正好出现故障,Nginx将把请求转交给接下来的节点处理。所以不会影响到这次请求的正常进行。

 

posted @ 2022-04-19 21:23  楠楠之歌  阅读(2146)  评论(0编辑  收藏  举报