Linux下Nginx+Tomcat负载均衡的实现

Linux下Nginx+Tomcat负载均衡的实现

               

 

配置与安装文档

 

     作者:康翡

     完成日期:2016-7-25

 

 

 

  1. 虚拟机与centos7的安装
    1. 准备工作

分别下载VMware Workstation 10 centos7

下载地址:  百度云http://pan.baidu.com/s/1c0yG7fE  密码:9egy

 

          http://mirrors.163.com/centos/7.2.1511/isos/x86_64/

    1. 安装VMware10

由于安装过程比较简单并且过程较长,并且百度有详细教程,所以在此不再赘述。不过有以下几点需要注意:

  1. 许可证密匙: 5F4EV-4Z0DP-XZHN9-0L95H-02V17 本人用的
  2. 出现了"Software Updates"(软件升级)页面,去掉默认的勾,即不进行软件升级。
  3. 出现了"User Experience Improvement Program"(程序用户体验改进)页面,去掉默认的勾,即不参与用户体验。

          

          软件完成安装效果图如下:

     

Linux下Nginx+Tomcat负载均衡的实现

至此,VMware虚拟机已经安装成功了。

 

 

    1. 在VM10上安装centos 7

可以参考:http://www.centoscn.com/image-text/setup/2014/0723/3341.html

注意几点:

  1. 在网络类型选择这一步,如果用于本机测试(比如本例),就可以选用NAT模式

要是不同机器,需使用桥接模式(即第一个)

       Linux下Nginx+Tomcat负载均衡的实现

  1. 在本机上并没有以下这一步:

但是本人在网吧测试(本人电脑太卡)时,点击安装虚拟机时系统提示不支持虚拟化(大概意思),解决办法:

如果你的计算机硬件支持虚拟化的话。

重启电脑,在开机时按F2进入bios模式,将虚拟化开关打开即可。

Linux下Nginx+Tomcat负载均衡的实现

 

解决方式如下图:

Linux下Nginx+Tomcat负载均衡的实现

将上图中的Disabled改成enabled就可以解决。

 

  1. 在进行到下图这一步时:

需要注意:

右边的文件系统 除了swap其它都选择最上面的ext4,swap就选择swap即可。

需要的内存按默认的20G就行。 

Linux下Nginx+Tomcat负载均衡的实现

然后按步骤等待安装完成即可。安装过程中有询问则按 1、2、q、yes顺序即可

出现如下界面即代表成功安装(注:网络截图和本机安装有所区别)

Linux下Nginx+Tomcat负载均衡的实现

 

  1. 在centos 7下Nginx服务器的配置

2.1 Nginx服务器的安装

说明:不知道观看者是否了解linux命令,所以都有解释。若是大牛,可忽略,无意冒犯。以下命令行众多,若有纰漏或者错误很抱歉。可以联系本人或者百度。

 

具体步骤:

  1. 用自带的火狐浏览器(左上角应用程序)-->百度Nginx—>进入Nginx News网站(官网)—>下载nginx(本人所用版本为nginx-1.8.1.tar.gz)-->等待下载完成后退出
  2. 点击左上角应用程序—>打开

以下是全部命令(注意:以下()内都为解释):

 

su(进入root模式)-->输入密码—>cd /(有空格)-->cd /home/kangfei/下载(不能敲汉字可从windows系统中复制粘贴)-->tar –zxvf nginx-1.8.1.tar.gz(zxvf后有空格输入 空格一般只有一个 按tab键可以自动补全)

Linux下Nginx+Tomcat负载均衡的实现

-->cd nginx-1.8.1-->./configure-->这个时候可能会报错(error c complier….)

错误一解决方案如下:

-->su(输入密码)--> yum -y install gcc gcc++ autoconf automake(等待完成)--> cd /home/kangfei/下载-->cd nginx-1.8.1-->./configure-->这个时候可能会报错(error the HTTP….)

错误二解决方案如下:

-->su(输入密码)-->yum -y install pcre pcre-devel(等待完成)-->./configure这个时候可能会报错(error the HTTP zlip...)

错误三解决方案如下:

-->yum -y install zlip zlip-devel--> -->./configure-->make-->make install

-->/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf(启动nginx服务器 如启动失败则以root身份运行 su…)

 

至此,Nginx服务器已经安装完毕.

   Linux下Nginx+Tomcat负载均衡的实现

2.2  测试

     打开火狐浏览器,在地址栏输入localhost或者127.0.0.1,若出现欢迎界面,即代表Nginx服务器安装成功。(本机80端口被占用,所以改为81端口)

    

 

 

  1. JDK的安装

  以下步骤和Nginx的安装步骤类似:

  先到火狐浏览器下载JDK,本人为jdk1.8.0_101.tar.gz版本

  su-->输入密码

  cd /home/kangfei/下载

  tar -zxvf jdk-tab(tab键自动补全)

  cd /usr/local

  mkdir jdk(创建jdk文件夹)

  cd /home/kangfei/下载

  mv jdk1.8.0_101/ /usr/local/jdk/(将下载目录解压的文件夹jdk移动到usr/local/jdk下)

  cd /usr/local

  cd jdk

  mv jdk1.8.0_101/ /usr/local/(将下载目录解压的文件夹jdk移动到usr/local下)

  cd ../

  rm -rf jdk

  mv jdk1.8.0_101/ jdk

  vi /etc/profile

  在文件最后添加以下代码(tomcat、tomcat2之后安装):

  JAVA_HOME=/usr/local/jdk

CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JAVA_HOME/bin

export JAVA_HOME CLASSPATH

 

CATALINA_BASE=/usr/local/tomcat

CATALINA_HOME=/usr/local/tomcat

export CATALINA_BASE CATALINA_HOME

 

CATALINA2_BASE=/usr/local/tomcat2

CATALINA2_HOME=/usr/local/tomcat2

export CATALINA2_BASE CATALINA2_HOME

 

TOMCAT_HOME=/usr/local/tomcat

export TOMCAT_HOME

 

TOMCAT2_HOME=/usr/local/tomcat2

export TOMCAT2_HOME

 

source /etc/profile

可以通过以下命令验证JDK是否安装成功:

java –version

 

 

 

  1. tomcat的安装和相关配置

同样的步骤在浏览器中下载tomcat 后缀名为tar.gz即可

su

输入密码

cd /home/kangfei/下载

tar -zxvf tomcat-tab(tab键自动补全)

mv apache-tomcat-7.0.70 /usr/local/

mv apache-tomcat-7.0.70 tomcat

cd /tomcat/bin

安装成功 启动:

cd /usr/local/tomcat/bin

./startup.sh

关闭则为:

./shutdown.sh

若需要关闭防火墙,则输入:

关闭防火墙:iptables -F INPUT

 

按同样步骤可在/usr/local/下再安装一个Tomcat2

Linux下Nginx+Tomcat负载均衡的实现

 

需要解决以下几个问题:

  1. 不同的tomcat启动和监听不同的端口
  2. 不同的tomcat的启动文件startup.sh和关闭文件shutdown.sh要指定各自的CATALINA_HOME和CATALINA_BASE这两个环境变量

 

 

解决步骤:

  1. 修改/etc目录下的profile文件,在文件末尾添加一组环境变量,和两组CATALINA环境变量。对应的命令为: vi  /etc/profile,添加的命令为(上面已配):

 

JAVA_HOME=/usr/local/jdk

CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JAVA_HOME/bin

export JAVA_HOME CLASSPATH

 

CATALINA_BASE=/usr/local/tomcat

CATALINA_HOME=/usr/local/tomcat

export CATALINA_BASE CATALINA_HOME

 

CATALINA2_BASE=/usr/local/tomcat2

CATALINA2_HOME=/usr/local/tomcat2

export CATALINA2_BASE CATALINA2_HOME

 

TOMCAT_HOME=/usr/local/tomcat

export TOMCAT_HOME

 

TOMCAT2_HOME=/usr/local/tomcat2

export TOMCAT2_HOME

Linux下Nginx+Tomcat负载均衡的实现

  1. 第一个解压在/usr/local/tomcat下的tomcat不需要做任何改动,我们只要改变/usr/local/tomcat2下的第二个tomcat即可。

 

A、vi  /usr/local/tomcat2/conf/server.xml

   端口:8005-->9005

  <Server port="9005" shutdown="SHUTDOWN">

 

   端口:8080-->9080

<Connector port="9080" protocol="HTTP/1.1"

       connectionTimeout="20000"

           redirectPort="8443" />

 

   端口:8009-->9009

<!-- Define an AJP 1.3 Connector on port 8009 -->

<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />

 

      B、vi  /usr/local/tomcat2/bin/startup.sh

          export JAVA_HOME=/usr/local/jdk

         

export PATH=$PATH:$JAVA_HOME/bin

 

export CLASSPATH=$JAVA_HOME/lib

 

export CATALINA_HOME=CATALINA_HOME2 利用profile的第二组设置

 

export CATALINA_BASE=CATALINA_BASE2

 

   修改完毕后:wq! 退出

   source  /etc/profile

   出现下图代表tomcat安装成功:

  Linux下Nginx+Tomcat负载均衡的实现

 

  1. Nginx+Tomcat负载均衡的配置

su 

输入密码

cd  /usr/local/nginx/conf

vi  nginx.conf(修改nginx的配置文件)

要修改的位置如下:

    sendfile        on;

    #tcp_nopush     on;

 

    #keepalive_timeout  0;

keepalive_timeout  65;

 

在这些代码下按i加入以下代码:

upstream localhost {

              server localhost:9080;

              server localhost:8080;

              #ip_hash;

         }

其中的server localhost:9080和8080为你配置的tomcat的服务器端口

 

location / {

            root   html;

            index  index.html index.htm;

下加入以下代码

proxy_pass http://localhost;

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size  10m;

client_body_buffer_size  128k;

 proxy_connect_timeout  15;

proxy_send_timeout  15;

proxy_read_timeout  15;

proxy_buffer_size  8k;

proxy_buffers  4 64k;

proxy_busy_buffers_size  128k;

proxy_temp_file_write_size  128k;

 

修改完毕之后:

Esc

:wq!

 

保存退出

此时负载均衡的配置已经设置完毕。

6 负载均衡的测试

  6.1 在两个tomcat下新建两个a.jsp文件

     1、在tomcat中新建a.jsp (除黑体部分皆为linux语句)

      touch  /usr/local/tomcat/webapps/ROOT/a.jsp

     

      vi  a.jsp

      i

      <html>

         <body>

             I am tomcat1=========

         </body>

      </html>

      esc

      :wq!

 

2、在tomcat2中新建a.jsp

touch  /usr/local/tomcat2/webapps/ROOT/a.jsp

vi  a.jsp

i

<html>

         <body>

             Wo shi tomcat2=========

         </body>

      </html>

      esc

      :wq!

 

   6.2 分别开启两个tomcat服务器

        cd  /usr/local/tomcat/bin

       ./startup.sh

       cd  /usr/local/tomcat2/bin

 ./startup.sh

    6.3 测试

         打开火狐浏览器,在地址栏输入127.0.0.1:81/a.jsp

       

        若多次敲入地址显示不同内容即为成功。

        这是第一个tomcat下的a.jsp

       Linux下Nginx+Tomcat负载均衡的实现

 

  Linux下Nginx+Tomcat负载均衡的实现

这是第二个tomcat里面的a.jsp的内容,这样Nginx+tomcat的负载均衡的配置就算成功了!!