ls0398 发表于 2018-11-21 11:52:43

apache 2.4.12 + tomcat 7.0.61 + jk connectors 1.2.40实现tomcat负载均衡集群

  实验环境:
    CentOS 5.11 final
    hostname:T1.getg.com
    IP地址:192.168.50.138

软件准备:
    CentOS Linux 5.*系统光盘中的“Development tools”工具包组
    jdk-8u45-linux-x64.tar.gz

    pcre-8.36.tar.gz

    apr-util-1.5.4.tar.gz
    apr-1.5.1.tar.gz
    httpd-2.4.12.tar.gz

    apache-tomcat-7.0.61.tar.gz


所有应用程序都安装部署在/opt目录下,当然这不是必须的,如果你愿意也可以部署在你想要的目录下,大多数人都按照习惯部署在/usr/local目录下,由于/usr/local目录下有其他的程序,我怕混淆,因此这个实验的所有程序都部署在/opt目录下。

第一步:下载安装程序
    (使用root用户下载到root用户的家目录下/root,后续移动应用程序的命令都是在这个目录下执行的)
      下载jdk-8u45-linux-x64.tar.gz
            wget http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.tar.gz?AuthParam=1430202129_13eb567f3345e9666fcd83ec03861832

      下载pcre-8.36.tar.gz
            wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz

      下载apr-1.5.1.tar.gz
            wget http://mirror.bit.edu.cn/apache/apr/apr-1.5.1.tar.gz

      下载apr-util-1.5.4.tar.gz
            wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.5.4.tar.gz

      下载Apache httpd2.4.12
            wget http://apache.fayea.com//httpd/httpd-2.4.12.tar.gz

      下载apache-tomcat-7.0.61.tar.gz
            wget http://apache.fayea.com/tomcat/tomcat-7/v7.0.61/bin/apache-tomcat-7.0.61.tar.gz

      下载tomcat-connectors-1.2.40-src.tar.gz
            wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.40-src.tar.gz

第二步:安装程序
    这里需要说明一下,jdk和tomcat下载的时候已经编译好了,属于免安装版;pcre、apr、httpd、tomcat-connectors下载的是源程序,需要编译安装,这一步骤里面将讲述如何编译安装,其实这些程序在光盘的程序包中都是已经有的,我们这里实验的apache和tomcat都是最新版,因此相关的依赖程序也需要最新版本的才行。

    ----->安装Development tools(这里需要yum的支持,所以如果系统中没有配置yum,还需要先配置好yum才能执行这一以及后续的步骤,关于如何配置yum及其安装源请参考其他相关资料,我这里使用的是官网的安装源。)
      # yum groupinstall "Development tools"

    ----->安装JDK,说是安装,其实就是解压下载的文件,然后配置环境变量,我么将JDK的环境变量设置在/etc/profile文件中,这样对所有用户都适用,如何仅仅配置在root用户的.bash_profile文件中,环境变量只对root用户生效。(如果你之前配置过JDK,也可以下载rpm安装包、bin二进制安装包或者源代码自己编译安装)
      1、将下载的安装程序文件移动到opt目录下;
      # mv jdk-8u45-linux-x64.tar.gz /opt

      2、解压文件;
      # cd /opt
      # tar -xvf jdk-8u45-linux-x64.tar.gz
      # cd jdk1.8.0_45/bin

      3、验证java是否可以工作;
      # ./java -version

      4、编辑JDK环境变量;
      # vim /etc/profile
      添加下面的内容到/etc/profile文件中
            JAVA_HOME=/opt/jdk1.8.0_45
            PATH=$JAVA_HOME/bin:$PATH
            CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
            export JAVA_HOME PATH CLASSPATH

      5、验证设置JDK环境。
      # . /etc/profile
      # java -version
      # echo $JAVA_HOME
      # echo $PATH
      # echo $CLASSPATH

    ----->安装pcre(PCRE(Perl Compatible Regular Expressions中文含义:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,由菲利普.海泽(Philip Hazel)编写。PCRE是一个轻量级的函数库,比Boost之类的正则表达式库小得多。PCRE十分易用,同时功能也很强大,性能超过了POSIX正则表达式库和一些经典的正则表达式库。)
      1、将下载安装程序移动到/opt目录下;
      # mv pcre-8.36.tar.gz /opt
      # mv pcre-devel-8.36-5.fc22.x86_64.rpm/opt

      2、解压文件;   
      # cd /opt
      # tar -xvf pcre-8.36.tar.gz

      3、编译安装pcre
      # cd pcre-8.36
      # ./configure
      # make && make install

    ----->安装pcre-devel(开发组件库我们使用系统自带的)
      # yum install pcre-devel

    ----->安装配置Tomcat(配置3个节点的Tomcat,以便可以实现集群)
      1、将下载的安装程序移动到/opt目录下;
      # mv apache-tomcat-7.0.61.tar.gz /opt
      # cd /opt

      2、解压文件;
      # tar -xvf apache-tomcat-7.0.61.tar.gz

      3、复制一份tomcat程序做为tomcat节点1;
      # cp -r apache-tomcat-7.0.61 tomcat1

      4、复制一份tomcat程序做为tomcat节点2;
      # cp -r apache-tomcat-7.0.61 tomcat2

      5、重命名tomcat程序作为tomcat节点3;
      # mv apache-tomcat-7.0.61 tomcat3

      6、修改tomcat节点1的配置参数;
      # cd tomcat1
      # cd conf
      # vim server.xml
            将配置文件中部分内容修改如下:
            

            

            

            

            

             去掉上下的注释符号

             在配置文件中加入如下内容:
               

             保存退出

      7、我们这个配置实例的jsp测试网页部署在/opt/webapps目录下,我们在该目录下新建一个test.jsp的测试网页,他可以显示tomcat运服务器的IP地址和端口号;
      # cd /opt
      # mkdir webapps
      # vim test.jsp
            加入如下内容:
               
               
                获取服务器的IP地址和端口号是:
               
            保存退出

      8、启动Tomcat节点1的JVM虚拟机;
      # cd /opt/tomcat1/bin
      # ./startup.sh

      9、测试Tomcat节点1已经能够正常工作;
      在浏览器中输入:192.168.50.138:8180/webapps/test.jsp,验证结果如下图:

  
      10、修改tomcat节点2的配置参数;
      # cd /opt/tomcat2
      # cd conf
      # vim server.xml
            将配置文件中部分内容修改如下:
            

            

            

            

            

             去掉上下的注释符号

             在配置文件中加入如下内容:
               

             保存退出

      11、启动Tomcat节点2的JVM虚拟机;
         # cd /opt/tomcat2/bin
      # ./startup.sh

      12、测试Tomcat节点2已经能够正常工作;
      在浏览器中输入:192.168.50.138:8280/webapps/test.jsp,验证结果如下图:

  
      13、修改tomcat节点3的配置参数;
      # cd /opt/tomcat3
      # cd conf
      # vim server.xml
            将配置文件中部分内容修改如下:
            

            

            

            

            

             去掉上下的注释符号

             在配置文件中加入如下内容:
               

             保存退出

      14、启动Tomcat节点3的JVM虚拟机;
         # cd /opt/tomcat3/bin
      # ./startup.sh

      15、测试Tomcat节点3已经能够正常工作;
      在浏览器中输入:192.168.50.138:8380/webapps/test.jsp,验证结果如下图:

  
    ----->编译Apache httpd、apr、apr-util(我们将apr可移植运行库与httpd一起编译)
      1、将下载的应用程序移动到/opt目录下;
      # mv apr-1.5.1.tar.gz /opt
      # mv apr-util-1.5.4.tar.gz /opt
      # mv httpd-2.4.12.tar.gz /opt

      2、解压文件;
      # tar -xvf httpd-2.4.12.tar.gz
      # tar -xvf apr-1.5.1.tar.gz
      # tar -xvf apr-util-1.5.4.tar.gz

      3、将apr和apr-util源码文件移动到apache源码目录下的srclib目录下;
      # mv apr-1.5.1/opt/httpd-2.4.12/srclib/apr
      # mv apr-util-1.5.4/opt/httpd-2.4.12/srclib/apr-util

      4、编译安装apache httpd应用程序;
      # cd httpd-2.4.12
      # mkdir -p /opt/apache
      # ./configure --prefix=/opt/apache --with-included-apr --enable-nonportable-atomics=yes --with-z
      # make
      # make install

      5、启动apache应用程序;
      # cd /opt/apache/bin
      # ./apachectl start
      # ps -ef |grep httpd

      6、验证apache已经能够正常工作。
      在浏览器中输入:192.168.50.138.确认页面能够正常打开,并且出现“It Works!”说明编译安装成功,验证结果如下所示:

  
    ----->编译Tomcat-connectors mod_jk模块
      1、将下载的应用程序移动到/opt目录下
      # mv tomcat-connectors-1.2.40-src.tar.gz /opt

      2、解压文件
      # cd /opt
      # tar -xvf tomcat-connectors-1.2.40-src.tar.gz

      3、编译jk模块
      # cd tomcat-connectors-1.2.40-src/native
      # ./configure --with-apxs=/opt/apache/bin/apxs
      # make

      4、将编译好的JK模块移动到/opt/apache/modules模块目录下
      # cd apache-2.0/
      # mv mod_jk.so /opt/apache/modules/


第三步:配置集群环境
      1、验证系统编译的内核模块
            # cd /opt/apache
            # cd bin
            # ./apachectl -l
            Compiled in modules:
            core.c
            mod_so.c
            http_core.c
            event.c

      2、验证系统中已经加载的内核模块
            # ./apachectl -M
            Loaded Modules:
             core_module (static)
             so_module (static)
             http_module (static)
             mpm_event_module (static)
             authn_file_module (shared)
             authn_core_module (shared)
             authz_host_module (shared)
             authz_groupfile_module (shared)
             authz_user_module (shared)
             authz_core_module (shared)
             access_compat_module (shared)
             auth_basic_module (shared)
             reqtimeout_module (shared)
             filter_module (shared)
             mime_module (shared)
             log_config_module (shared)
             env_module (shared)
             headers_module (shared)
             setenvif_module (shared)
             version_module (shared)
             unixd_module (shared)
             status_module (shared)
             autoindex_module (shared)
             dir_module (shared)
             alias_module (shared)

    ----->编辑httpd.conf配置文件(由于我们此次试验的目的是做tomcat集群,因此关于apache这里不做过多的配置修改,使用默认的即可,如果使用Apache做静态网页服务器,请参考其他资料进行配置的修改)

      # vim /opt/apache/conf/httpd.conf
      1、在配置文件中修改如下内容
            ServerRoot "/opt/apache"
            Include conf/extra/httpd-mpm.conf
            # 取消前面的注释符号,mpm模块是配置Apache的主要模块,关于后续如果对Apache进行优化,都需要修改该文件。

      2、在配置文件中添加如下内容,加载jk模块,以便能够实现集群的功能
            LoadModule    jk_modulemodules/mod_jk.so
            Include /opt/apache/conf/mod_jk.conf


    ----->在/opt/apache/conf目录下创建workers.properties
      # touch /opt/apache/conf/workers.properties

      # vim /opt/apache/conf/workers.properties
      添加如下内容:
            workers.java_home=/opt/jdk1.8.0_45
            worker.list=controller
            
            #========tomcat1========
            worker.tomcat1.port=8109
            worker.tomcat1.host=192.168.50.138
            worker.tomcat1.type=ajp13
            worker.tomcat1.lbfactor=1
            worker.tomcat1.cachesize=10
            worker.tomcat1.cache_timeout=600
            worker.tomcat1.socket_keepalive=1
            worker.tomcat1.socket_timeout=300
            
            #========tomcat2========
            worker.tomcat2.port=8209
            worker.tomcat2.host=192.168.50.138
            worker.tomcat2.type=ajp13
            worker.tomcat2.lbfactor=1
            worker.tomcat2.cachesize=10
            worker.tomcat2.cache_timeout=600
            worker.tomcat2.socket_keepalive=1
            worker.tomcat2.socket_timeout=300

            #========tomcat3========
            worker.tomcat3.port=8309
            worker.tomcat3.host=192.168.50.138
            worker.tomcat3.type=ajp13
            worker.tomcat3.lbfactor=1
            worker.tomcat3.cachesize=10
            worker.tomcat3.cache_timeout=600
            worker.tomcat3.socket_keepalive=1
            worker.tomcat3.socket_timeout=300
            
            #=======controller======
            worker.controller.type=lb
            worker.controller.balance_workers=tomcat1,tomcat2,tomcat3
            worker.controller.sticky_session=1

    ----->在/opt/apache/conf目录下创建mod_jk.conf文件
      # touch/opt/apache/conf/mod_jk.conf

      # vim /opt/apache/conf/mod_jk.conf
      添加如下内容:
            JKWorkersFile /opt/apache/conf/workers.properties
            JkLogFile/opt/apache/logs/mod_jk.log
            JkShmFile/opt/apache/logs/jk-runtime-status
            JkLogLevel info
            JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
            JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
            JkRequestLogFormat "%w %V %T"

            # Sample JkMounts.Replace these with the paths you would
            # like to mount from your JSP server.
            # syntax: JkMount ${URL_DIR}/*.jsp worker_name

            JkMount /servlet/* controller
            JkMount /* controller

      创建如下两个日志文件:
      # touch /opt/apache/logs/mod_jk.log
      # touch /opt/apache/logs/jk-runtime-status

    ----->重启apache程序(生产中最好将其加入到服务列表中,或者至少降入到PATH变量中)
      # cd /opt/apache/bin
      # ./apachectl stop
      # ./apachectl start

      修改test.jsp测试网页,使其可以显示SessionID
      # vim/opt/webapps/test.jsp
            添加如下内容:
            
      验证可以通过80端口访问test.jsp页面,其不同的访问来自不同的tomcat节点,观察是否实现了负载均衡,此次试验的地址如下
      http://192.168.50.138/webapps/test.jsp

  验证结果如下图所示:



  

      如果达不到多用户并发访问的效果,可以是用ab命令+netstat命令,模拟多用户访问,并观察系统端口的连接状态
  下图示使用ab命令模仿多用户连接情况下,tcp连接情况,从中我们可以看出,三个tomcat的8109、8209、8309端口上都有连接。

  





页: [1]
查看完整版本: apache 2.4.12 + tomcat 7.0.61 + jk connectors 1.2.40实现tomcat负载均衡集群