MENU

Nginx负载均衡

前言

驱动我学习这个负载均衡是最近遇到一个算是高并发的问题吧,1秒瞬间有800次左右HTTP请求,但是咧,问题来了,之前一直用的是Apache服务器,Apache本来就是比较笨重,对于高并发不好的,所以对于一下子如此庞大的HTTP请求,服务器瞬间就瘫痪啦,所以不得不使用NGINX做负载均衡。

详细做法

36-1

  • 负载平衡器的那台服务器nginx.conf配置文件,在其HTTP段加入下面代码

    upstream mydomain.com {              //mydomain.com这个可以随便取
        server Real Svr1:xx;             //Real Svr1:xx为Real Svr1服务器IP地址以及端口号
        server Real Svr2:xx;             //Real Svr1:xx为Rea2 Svr1服务器IP地址以及端口号
        server Real Svr3:xx;             //Real Svr1:xx为Rea3 Svr1服务器IP地址以及端口号
    }
    
  • 接着在负载平衡器的那台服务器server段加入下面代码

    location / { 
        proxy_pass http://mydomain.com;               //mydomain.com要跟上面的一值
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
    
  • 重启NGINX,到此负载均衡就OK啦

36-2

upstream支持的几种分配方式

  • 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。
  • Weight权重分配 Weight值越大,分配到该服务器的次数就越多,用于后端每个服务器性能不均的情况下。
  • ip_hash 每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。
  • fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配。需要下载安装upstream_fair模块。
  • url_hash 根据url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。需要下载安装hash软件。

upstream参数说明

  • backup指的是仅当该台服务器宕机或者忙时才会请求这台服务器。
  • down,表示当前的服务器暂时不参与负载均衡。
  • max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
  • fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
  • 当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。

参考文章
nginx负载均衡配置

返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码