Nginx配置负载均衡

负载均衡(Load Balance),其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。
例如,当我们网站的访问量少的时候,单台服务器足以处理客户的请求。但随着我们的客户量,访问量越来越多时,单台服务器处理不过来就会造成响应时长过长,用户体验差,甚至造成服务器宕机,此时我们就需要配置服务器集群,多台服务器共同为用户提供服务,减轻单台服务器压力;而且当其中一台服务器出现问题宕机后,其他服务器依然可以正常接收处理用户请求,提高了系统的稳定性,用户体验也更好。
本文介绍Nginx配置反向代理实现负载均衡的步骤

一、正向代理与反向代理

1. 正向代理

正向代理类似一个跳板机,代理访问外部资源
比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问谷歌了
正向代理的用途:

  1. 访问原来无法访问的资源,如google
  2. 可以做缓存,加速访问资源
  3. 对客户端访问授权,上网进行认证
  4. 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
2. 反向代理

反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器
反向代理的作用:

  1. 保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网
  2. 负载均衡,通过反向代理服务器来优化网站的负载
image.png

二、负载均衡

现在我们搭建一个由两台服务器组成的集群为用户提供服务。
第一台服务器是:192.168.204.133
第二台服务器是:192.168.204.134
那么我们可以这样配置:所有的用户通过域名解析访问到第一台服务器:192.168.204.133的80端口,80端口由Nginx监听,接收到用户请求后,按照一定的策略(平均,权重,ip_hash等等)分发到真正处理请求的服务器中,我们设置真正处理请求的服务器是192.168.204.133的8080端口 和 192.168.204.134的80端口。这样,假如我们有100个请求同时请求我们的网站,那么可以把50个请求转发到192.168.204.133,另外50个请求转发到192.168.204.134,从而达到负载均衡的效果,减轻单机处理所有请求的压力。


image.png

三、负载均衡配置

注意点:
1,新装的Linux可能只允许访问80端口,其他端口不允许访问,此时需要配置防火墙
2,nginx+php环境访问显示access denied 解决办法:将php.ini中cgi.fix_pathinfo从0改为1。        
3,fastcgi_pass有两种配置,unix:/tmp/php-cgi.sock 和 127.0.0.1:9000; 默认是前者

1,第一台服务器192.168.204.133的Nginx配置:
其中192.168.204.133:80提供代理服务,负责分发用户发送的请求到集群节点,192.168.204.133:8080提供真实服务,为一个集群节点

#nginx进程数,建议设置为等于CPU总核心数。该配置的数值越大,Nginx的并发能力就越强
worker_processes auto;
worker_cpu_affinity auto;

#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log  /home/wwwlogs/nginx_error.log  crit;


pid        /usr/local/nginx/logs/nginx.pid; #进程pid文件
worker_rlimit_nofile 51200;                 #指定进程可以打开的最大描述符:数目

events
   {
       use epoll;
       worker_connections 51200;#数值越大,并发能力越强
       multi_accept off;
       accept_mutex off;
   }


http
{
   include       mime.types;           #引入一个外部文件: ./mine.types 该文件放着大量的媒体类型 
   default_type  application/octet-stream;

   # 负载服务器节点
   upstream my-server
   {
       server 192.168.204.133:8080;
       server 192.168.204.134:80;
   }

   # 代理服务器配置:
   server
   {
       listen  80;                         #监听的端口
       server_name _;                      #访问域名

       location /
       {
           proxy_pass http://my-server/;   #配置想要分发到的节点
       }

   }

   # 服务器节点192.168.204.133:8080 配置:
   server
   {
       listen  8080;                       #监听的端口
       server_name _;                      #访问域名
       index index.html index.php;         #默认访问的文件
       root /home/wwwroot/default/balance; #网站根目录

       location /
       {
           index index.html index.php;
       }

       #命中php文件,交由php-cgi处理,非PHP应用忽略以下配置
       location ~ \.php(.*)$  
       {
           fastcgi_pass  unix:/tmp/php-cgi.sock;
           fastcgi_index  index.php;
           fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
           fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
           fastcgi_param  PATH_INFO  $fastcgi_path_info;
           fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
           include        fastcgi_params;
       }
   }

}

2,第二台服务器192.168.204.134的Nginx配置:

worker_processes auto;
worker_cpu_affinity auto;

error_log  /home/wwwlogs/nginx_error.log  crit;
pid        /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept off;
        accept_mutex off;
    }
http
{
    include       mime.types;           
    default_type  application/octet-stream;


    # 服务器节点192.168.204.134 配置:
    server
    {
        listen  80;                         #监听的端口
        server_name _;                      #访问域名
        index index.html index.php;         #默认访问的文件
        root /home/wwwroot/default;         #网站根目录

        location /
        {
            index index.html index.php;
        }

        #命中php文件,交由php-cgi处理,非PHP应用忽略以下配置
        location ~ \.php(.*)$  
        {
            fastcgi_pass  unix:/tmp/php-cgi.sock;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
    }

    #include vhost/*.conf;
}

然后我们打开两个浏览器窗口模拟两个请求,共同访问 192.168.204.133 ,可以看,一个请求分发到了192.168.204.133:8080,一个请求分发到了192.168.204.134:80,此时,负载均衡配置完成。


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352

推荐阅读更多精彩内容