nginx负载均衡如何实现

什么是nginx?Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的Web和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
nginx服务器基本特征
  • 处理静态文件,索引文件以及自动索引;打开文件描述符缓冲
  • 无缓存的反向代理加速,简单的负载均衡和容错
  • FastCGI,简单的负载均衡和容错
  • 模块化的结构。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或 其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待
  • 支持SSL 和 TLSSNI
nginx常用功能1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。
2、负载均衡
Nginx的负载均衡是通过upstream实现的。

[XML] 纯文本查看 复制代码 ?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 upstream test.aaa {     ip_hash;  ## 调度算法     server 192.168.1.10:80;     server 192.168.1.11:80 down;     server 192.168.1.12:8009 max_fails=3 fail_timeout=20s;     server 192.168.1.13:8080;  } server {     listen       80;     server_name  localhost;     location / {     proxy_pass http://test.aaa;     }  }


upstream 支持的负载均衡算法:
  • 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。
  • weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
  • fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。
  • url_hash(第三方)
按访问URL的hash结果来分配请求,使每个URL定向到同一个后端服务器,后端服务器为缓存时比较适用。另外,在upstream中加入hash语句后,server语句不能写入weight等其他参数。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。
upstream 支持的状态参数
  • down,表示当前的server暂时不参与负载均衡。
  • backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
  • max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
  • fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
注,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。
3、web缓存
Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。



转载:https://www.jianshu.com/p/3a3c1fc37358
上一篇:centos安装nginx 带upstream


下一篇:Nginx反向代理因proxy_next_upstream导致数据重复插入问题