Nginx代理与负载均衡策略

一、Nginx简介

  Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。

二、正向代理与反向代理

  Nginx一般分为正向代理和反向代理。

反向代理:如果局域网向Internet提供资源服务,让Internet上的其他客户端来访问局域网内的资源,使它们必须通过一个代理服务器来进行访问,这种服务就称为反向代理。正向代理和反向代理逻辑正好相反。  正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

三、Nginx的负载均衡调度算法

 1.轮询

  默认。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除

 2.weight轮询

  根据后端服务硬件配置,设置不同的权重值。用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大。

 3.ip_hash

  每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。

 4.fair

  智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了weight轮询和iphash优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,需要安装upstreamfair模块。

 5.url_hash

  按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包。配置示例一:

upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法 。配置示例二:

在需要使用负载均衡的server中增加

proxy_pass http://bakend/;

每个设备的状态设置为:

1.down 表示单前的server暂时不参与负载

2.weight 默认为1.weight越大,负载的权重就越大。

3.maxfails :允许请求失败的次数默认为1.当超过最大次数时,返回proxynextupstream 模块定义的错误

4.failtimeout:max_fails次失败后,暂停的时间。

5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181216G0JLYI00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券