nginx 负载均衡

    为实现nginx 负载均衡, 需要准备nginx tomcat jdk

第一部分 nginx 安装

  第一步:准备安装nginx

    准备好nginx ,tomcat,jdk 的包上传到服务器

    链接: https://pan.baidu.com/s/1mh9aT9e 密码: awnh

    

 

  第二步:解压

    [root@localhost src]# tar -zxf nginx-1.8.0.tar.gz

    

  第三步:创建一个makefile

    ./configure \

    --prefix=/usr/local/nginx \

    --pid-path=/var/run/nginx/nginx.pid \

    --lock-path=/var/lock/nginx.lock \

    --error-log-path=/var/log/nginx/error.log \

    --http-log-path=/var/log/nginx/access.log \

    --with-http_gzip_static_module \

    --http-client-body-temp-path=/var/temp/nginx/client \

    --http-proxy-temp-path=/var/temp/nginx/proxy \

    --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

    --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

    --http-scgi-temp-path=/var/temp/nginx/scgi

    注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录,安装后nginx 在/usr/local/nginx 下

  第四步: 编译 执行   make

  第五步: 安装 执行 make install

 

 第二部分:jdk安装

  第一步:解压文件

  第二步:配置环境变量

    [root@localhost src]# vi /etc/profile

    在文件末尾追加:

    #set java environment
      JAVA_HOME=/usr/local/src/java/jdk1.7.0_79
      JRE_HOME=/usr/local/src/java/jdk1.7.0_79/jre
      CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
      PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
      export JAVA_HOME JRE_HOME CLASS_PATH PATH

  

  第三步: source /etc/profile

 

 第三部分:tomcat安装

  本意实现nginx负载均衡, 这里为了方便在一个机器中安装两个tomcat实例, 改掉冲突端口

  第一步: 解压tomcat文件 tar -zxf apache-tomcat-7.0.47.tar.gz

  第二步: 在/usr/local/下创建一个tomcats 文件夹, 为放tomcat

     [root@localhost ~]# cd /usr/local/

       [root@localhost local]# mkdir tomcats

  第三步: 将第一步解压的文件复制到tomcats下,并重命名为tomcat1,在复制tomcat1改名为tomcat2

    [root@localhost local]# mv apache-tomcat-7.0.47 /usr/local/tomcats/tomcat1

        [root@localhost local]# cd /usr/local/tomcats/

        [root@localhost local]#  cp tomcat1/ -r tomcat2

  第四步: 修改端口

    [root@localhost local]# vi tomcat2/conf/server.xml

    修改端口第一个:  22行 8005 改为 8006

            70行 8080 改为 8081

          91行 8009 改为 8010

  原则就是和第一个不要重复。

  第五步: 修改tomcat 页面的信息用于区分

   [root@localhost tomcats]# vi tomcat1/webapps/ROOT/index.jsp

    

 

    在这个jsp页面显示的信息后面追加一个 -8080 区分

    [root@localhost tomcats]# vi tomcat2/webapps/ROOT/index.jsp

    同样位置添加一个 -8081

    

  第六步: 启动两个tomcat

    [root@localhost tomcats]# ./tomcat1/bin/startup.sh 

    [root@localhost tomcats]# ./tomcat2/bin/startup.sh 

 

第四部分: 配置nginx 负载均衡

  第一步:修改nginx配置文件

  [root@localhost tomcats]# cd /usr/local/nginx/

   编辑配置文件

   [root@localhost nginx]# vi conf/nginx.conf


36 upstream tomcatServer{ # 新增一个upstream模块 里面添加两个tomcat的地址 37 server 192.168.27.209:8080; 38 server 192.168.27.209:8081; 39 } 40 server { 41 listen 80; 42 server_name localhost; 43 44 #charset koi8-r; 45 46 #access_log logs/host.access.log main; 47 48 location / { 49 # root html; 50 # index index.html index.htm; # 注释原有的默认页面 51 proxy_pass http://tomcatServer;  # 新增配好的nginx访问配置的模块 52 } 53 54 #error_page 404 /404.html; 55 56 # redirect server error pages to the static page /50x.html 57 # 58 error_page 500 502 503 504 /50x.html; 59 location = /50x.html { 60 root html; 61 } 62 }

  

    第二步: 启动nginx

    [root@localhost nginx]# ./sbin/nginx

    直接访问 

    

 

   到此实现了一个简单的nginx负载均衡实例

#定义负载均衡设备的 Ip及设备状态 
upstream tomcatServer {   
    server xxx.xx.xx.xx:xxxx down; 
    server xxx.xx.xx.xx:xxxx weight=2; 
    server xxx.xx.xx.xx:xxxx; 
    server xxx.xx.xx.xx:xxxx backup; 
}

在需要使用负载的Server节点下添加

proxy_pass http://tomcatServer;

upstream 每个设备的状态:

down 表示单前的server暂时不参与负载 
weight  默认为1.weight越大,负载的权重就越大。 
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 
fail_timeout:max_fails 次失败后,暂停的时间。 
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

补充: 例如如果nginx+2tomcat 做负载, 如果其中一台tomcat宕机,该怎么办呢?
在网上查到了相关资料
location / {
   # index  index.html index.htm; # 注释原有的默认页面
     proxy_pass http://tomcatServer;  # 新增配好的nginx访问配置的模块
  proxy_connect_timeout 1; #单位为秒 
  proxy_send_timeout 1;
  proxy_read_timeout 1;
}


proxy_connect_timeout 
语法:proxy_connect_timeout time ; 
该指令设置与upstream server的连接超时时间,有必要记住,这个超时不能超过75秒。说明 :该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来获得请求的响应。这个时间不是获得整个response的时间,而是两次reading操作的时间。 
proxy_send_timeout 
语法 proxy_send_timeout time ; 
默认值 60s 
说明: 这个指定设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,而是在两次write操作期间。如果超时后,upstream没有收到新的数据,nginx会关闭连接 
proxy_read_timeout 
语法 proxy_read_timeout time ; 
默认值 60s 
说明: 该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来获得请求的响应。这个时间不是获得整个response的时间,而是两次reading操作的时间。

在http模块内配置了这三个字段,再reload 一下,只启动一个项目,就会发现,就算宕机一台,我们的项目也可以接着使用,如果不放心,可以多试几次。

此处原文提供者:http://blog.csdn.net/qq_29311303/article/details/52887609

  

  

转载于:https://www.cnblogs.com/jacklovejia/p/8064515.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值