Nginx负载均衡:分布式/热备Web Server的搭建

Nginx负载均衡:分布式/热备Web Server的搭建

大家好,又见面了,我是全栈君。

       Nginx是一款轻量级的Web server/反向代理server及电子邮件(IMAP/POP3)代理server。并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发。供俄国大型的入口站点及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,中国大陆使用nginx站点用户有:新浪、网易、腾讯等。

      

        Nginx 是一个非常强大的高性能Web和反向代理server,它具有非常多非常优越的特性,在高连接并发的情况下,Nginx是Apacheserver不错的替代品,Nginx在美国是做虚拟主机生意的老板们常常选择的软件平台之中的一个。可以支持高达 50,000 个并发连接数的响应。

       在一些大型的项目中,Nginx常常是用作负载均衡的,Nginx将请求依照一定的规律分发给分布式的Web Server,这样能够解决Web Server是项目性能瓶颈的问题。这样便构成了LNMPA架构,即Linux+Nginx+Mysql+PHP+Apache,有相同功能的还有LVS,可是各有优缺点,最好的是F5硬件,可是价格很昂贵;同一时候Nginx也很适合处理静态页面。文件上传与下载的server,在这些业务上。其它server软件是无法比拟的。事实上如今有许多项目就直接用Nginx作Web server,Nginx做Web server在处理PHP业务逻辑上能够没有Apache那么强大,假如单独用Nginx不能满足您项目的须要,那就把业务分离开,Nginx做负载均衡,处理静态页。负责文件上传下载,PHP业务逻辑交给Apache。

        Nginx最好安装在Linux系统上,由于在Linux下能够让Nginx达到预期的性能。的安装方法能够參见:

        http://blog.csdn.net/jhq0113/article/details/43812895

         反向代理与负载均衡配置:

         Web Server1:       192.168.1.16:80              Nginx

         Web Server2:       192.168.1.16:8080          Nginx

        临  时  域  名:      yii.nginx.com           

         Nginx Server:        192.168.1.18:80            

        本地仅仅有两台机器,所以Web Server就都放在192.168.1.16上了,到真实环境下,配置类似,真实环境下仅仅是Web Server的IP不同。PHP程序同样,这里为了演示区分。Web Server配置不同的PHP程序。


        1.在192.168.1.16 Nginx配置

user  www;           #执行用户
worker_processes  1; #工作进程数量。最好是CPU核心数量

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    charset utf-8;            #编码,最好指定
    sendfile        on;
    keepalive_timeout  65;

    #######################myphp8080.com配置#########################
    server{
        listen       8080;#监听8080port
        server_name  myphp8080.com;
        root /home/data/web/php/myphp8080.com;  #web文件夹
        location / {
             index index.php index.html index.htm;
        }
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

#######################myphp80.com配置#########################
    server {
        listen       80;
        server_name myphp80.com
        root /home/data/web/php/myphp80.com; 
        location / {  
           index index.php index.html index.htm; 
        } 
        location ~ \.php$ { 
             fastcgi_pass 127.0.0.1:9000; 
             fastcgi_index index.php; 
             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
             include fastcgi_params; 
        } 
     }

 } 


   
2.192.168.1.16 在web文件夹下分别创建myphp80.com和myphp8080.com文件夹,各自文件夹分别创建index.php文件,php代码分别为:

      myphp80.com文件夹中index.php代码:

<?php
   echo json_encode(['type'=>'200','data'=>'80']);
?

>

       myphp8080文件夹中index.php代码:

<?php
   echo json_encode(['type'=>'200','data'=>'8080']);
?

>


       将两个文件夹权限交给www组www用户:

       [root@jhq0113 php]# chown -R www:www myphp80.com/

       [root@jhq0113 php]# chown -R www:www myphp8080.com/

     

       然后。重新启动Nginx服务

       [root@jhq0113 php]# service nginx restart

      

       3.防火墙开放80和8080port,开发方法也是參见Nginx安装方法那篇博客。然后在浏览器中进行訪问測试,检查配置是否成功。測试结果例如以下:

               Nginx负载均衡:分布式/热备Web Server的搭建                    Nginx负载均衡:分布式/热备Web Server的搭建

         4.192.168.1.18 Nginxserver反向代理与负载均衡配置:

######################yii.nginx.com反向代理负载均衡#########################
    #负载均衡配置,以权重方式分发
    upstream yii.nginx.com {
       server 192.168.1.16:80 weight=5;
       server 192.168.1.16:8080 weight=5;
    }

   #反向代理配置
   server {
     listen       80;
     server_name  yii.nginx.com;
     charset utf-8;
     location /{
        proxy_pass http://yii.nginx.com;
     }
  }

        重新启动Nginx服务

        [root@jhq0229 php]# service nginx restart

        5.本地域名,浏览器端须要配置hosts。配置hosts方法去网上找吧,非常easy,在hosts文件里加入

         192.168.1.18 yii.nginx.com

        6.浏览器端訪问yii.nginx.com,多訪问几次。这样我们就能够看到,会依照权重更换显示80port和8080port的内容。

        至此。Nginx负载均衡、反向代理配置完成。

        Nginx负载均衡的分发方式有4种:

        1.轮询。默认採取此方式,Nginx会依照请求时间的先后顺序进行轮询分发,若某台Web Server宕机,Nginx自己主动将其摘掉。

        2.weight,权重,即轮询的几率。值越大,被分发的可能性越大,用于后端server性能不均的情况。

        3.ip_hash,每一个请求按訪问ip的hash结果分配,这样每一个訪客固定訪问一个后端server,能够解决共享session的问题。

        4.自己定义规则

       举例:

upstream myphp.com {   
     server 192.168.1.16:80 down;
     server 192.168.1.18:80 weight=2;
     server 192.168.1.13:80;
     server 192.168.1.12:80 backup;
}

      配置具体解释:

         down 表示当前的Web Server临时不參与负载
         weight  默觉得1.weight越大。负载的权重就越大。
         backup: 其他全部的非backup Server down或者忙的时候。请求backup机器。

所以这台机器压力会最轻。

     

      backup是利用nginx的热备功能,这也是最典型的应用带来的重要优点之中的一个,当非backup Server可以非常好的为Client提供服务的时候,backup Server不正确外界提供服务,此时backup Server处于冷状态;当全部非backup Server不能非常好的为Client提供服务的时候,backup Server为Client提供服务,做到了热备,某台或者全部非backup Web Server宕机不会影响整个Web项目的訪问功能,Web项目仍然能够为Client提供服务。

       Nginx做负载均衡。对Web Server的操作系统和语言环境没有特殊要求。Web Server的操作系统能够是Linux也能够是Windows Server,Web程序是Java、PHP、Asp.Net等均能够。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116218.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Snapde和常用的CSV文件编辑器对比

    Snapde和常用的CSV文件编辑器对比Snapde,一个专门为编辑超大型数据量CSV文件而设计的单机版电子表格软件;它运行的速度非常快,反应非常灵敏。CSV是一种用逗号分隔列、回车分割行的文本文件,市面上常用的CSV编辑软件有:Snapde、Ron’sEditor、CSVEditorPro、DMcsvEditor、CSVPad、CSVed、CSVFileView、KillinkCSVEditor、CSVBuddy、Me…

    2022年7月21日
  • 记忆化搜索算法

    记忆化搜索算法概述记忆化搜索算法事实上是一种对递归算法的优化因为在递归算法中有很多重复计算,导致了非常离谱的时间和空间复杂度所以我们采用记住计算结果的方式,能很大程度上减少复杂度例题1AcWing901.滑雪例题2AcWing2067.走方格…

    2022年7月26日
  • python的学生信息管理系统_学员信息管理系统设计

    python的学生信息管理系统_学员信息管理系统设计一.系统需求使用面向对象编程思想完成学员管理系统的开发,具体如下:系统要求:学员数据存储在文件中系统功能:添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员信息及退出系统等功能。程序文件如下:程序入口文件:main.py学员文件:student.py管理系统⽂文件:managerSystem.pymain.py#1.导入managerSystem模块frommanagerSystemimport*#2.启动学员管理系统if__name__

    2022年9月20日
  • BM3D的学习与Matlab实现「建议收藏」

    BM3D的学习与Matlab实现「建议收藏」                    BM3D的学习与Matlab的实现      BM3D是2007年TIP的文章,题目是《ImageDenoisingbySparse3-DTransform-DomainCollaborativeFiltering》。最近想尝试一下图像去噪,看看能否应用到项目中,顺便测试了一下效果,结果不…

    2022年5月2日
  • 研招网的准考证还能下载吗_考研准考证还能下载吗

    研招网的准考证还能下载吗_考研准考证还能下载吗下载打印方式往下看,有手把手教学。【考生请注意】据了解,《准考证》由考生使用A4幅面白纸在规定时间内(2021年12月10日开始至12月27日)上网自行下载打印。《准考证》正、反两面在使用期间均不得涂改或书写。考生凭下载打印的《准考证》及居民身份证参加考研初试和复试。考生凭本人《准考证》及有效居民身份证按规定时间进入考场,对号入座。入座后将上述证件放在桌面左上角,以便核验。请考生下载《准考证》前认真阅读报考点所在地省(区、市)考生防疫有关要求,并认真关注《准考证》上“省级招生考试…

    2022年9月7日
  • Mask_RCNN训练自己的数据,标注工具Labelme的使用说明

    Mask_RCNN训练自己的数据,标注工具Labelme的使用说明#2018/05/04更新由于labelme的数据预处理过程还是太繁琐,现在换成了类似于COCO数据集注释的方式(JSON文件):https://blog.csdn.net/qq_15969343/article/details/80167215#以下为原文该Mask_RCNN版本为基于:Python3,Keras,TensorFlow,我使用的具体版本为:Python3.6.3TensorF………

    2022年9月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号