实验环境:
    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
            将配置文件中部分内容修改如下:
            <Server port="8105" shutdown="SHUTDOWN">

<Connector port="8180" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

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

<Engine name="Catalina" defaultHost="192.168.50.138" jvmRoute="tomcat1">

<Host name="192.168.50.138"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 去掉上下的注释符号

在配置文件中加入如下内容:
                 <Context docBase="/opt/webapps" path="/webapps" reloadable="false"/>

保存退出

7、我们这个配置实例的jsp测试网页部署在/opt/webapps目录下,我们在该目录下新建一个test.jsp的测试网页,他可以显示tomcat运服务器的IP地址和端口号;
        # cd /opt
        # mkdir webapps
        # vim test.jsp
            加入如下内容:
                <%@ page contentType="text/html;charset=UTF-8" %>
                <%@ page import="java.util.*" %>
                <BR>获取服务器的IP地址和端口号是:
                <BR><%
                out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
            保存退出

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
            将配置文件中部分内容修改如下:
            <Server port="8205" shutdown="SHUTDOWN">

<Connector port="8280" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

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

<Engine name="Catalina" defaultHost="192.168.50.138" jvmRoute="tomcat2">

<Host name="192.168.50.138"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 去掉上下的注释符号

在配置文件中加入如下内容:
                 <Context docBase="/opt/webapps" path="/webapps" reloadable="false"/>

保存退出

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
            将配置文件中部分内容修改如下:
            <Server port="8305" shutdown="SHUTDOWN">

<Connector port="8380" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

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

<Engine name="Catalina" defaultHost="192.168.50.138" jvmRoute="tomcat3">

<Host name="192.168.50.138"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 去掉上下的注释符号

在配置文件中加入如下内容:
                 <Context docBase="/opt/webapps" path="/webapps" reloadable="false"/>

保存退出

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、验证系统编译的内核模块
            [root@T1 apache-2.0]# cd /opt/apache
            [root@T1 apache]# cd bin
            [root@T1 bin]# ./apachectl -l
            Compiled in modules:
              core.c
              mod_so.c
              http_core.c
              event.c

2、验证系统中已经加载的内核模块
            [root@T1 bin]# ./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_module  modules/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
            添加如下内容:
            <BR><%
              out.println("<br> ID " + session.getId()+"<br>");%>
        验证可以通过80端口访问test.jsp页面,其不同的访问来自不同的tomcat节点,观察是否实现了负载均衡,此次试验的地址如下
        http://192.168.50.138/webapps/test.jsp

验证结果如下图所示:

如果达不到多用户并发访问的效果,可以是用ab命令+netstat命令,模拟多用户访问,并观察系统端口的连接状态

下图示使用ab命令模仿多用户连接情况下,tcp连接情况,从中我们可以看出,三个tomcat的8109、8209、8309端口上都有连接。

转载于:https://blog.51cto.com/getg8642/1640966

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

  1. Linux平台上搭建apache+tomcat负载均衡集群

    传统的Java Web项目是通过tomcat来运行和发布的.但在实际的企业应用环境中,采用单一的tomcat来维持项目的运行是不现实的.tomcat 处理能力低,效率低,承受并发小(1000左右).当 ...

  2. Apache+tomcat+mod_jk+centos6.2负载均衡集群配置--转载

    转载地址:http://blog.163.com/chenhui_java/blog/static/17267249420128101191860/ 注: 由于长期受转载毒害,所以本人日志均是原创:其 ...

  3. Nginx+Tomcat 负载均衡集群方案

    2019独角兽企业重金招聘Python工程师标准>>> Nginx+Tomcat 负载均衡集群方案 该方案是我之前做过的一个项目生产应用的,目前运行良好,如何您生产使用,请先做好测试 ...

  4. 搭建Nginx+Tomcat 负载均衡集群

    Nginx+Tomcat 负载均衡集群 一. 实验拓扑: 二. 实验要求: 1. 试验环境: 主机 操作系统 所需软件 Nginx服务器 rhel 6.5 x86_64 nginx-1.6.0.tar ...

  5. keepalive+nginx实现负载均衡高可用_高可用、负载均衡 集群部署方案:Keepalived + Nginx + Tomcat...

    前言:初期应用较小,一般以单机部署为主,即可满足业务的需求,随着业务的不断扩大,单机部署的模式无法承载这么大的业务量,需要进行服务集群化的部署,本文主要介绍服务器Tomcat多实例部署,搭载Keepa ...

  6. Nginx+Tomcat搭建高性能负载均衡集群的实现方法

    一.    目标实现高性能负载均衡的Tomcat集群: 二.步骤 1.首先下载Nginx,要下载稳定版: 2.然后解压两个Tomcat,分别命名为apache-tomcat-6.0.33-1和apac ...

  7. Nginx+Tomcat搭建高性能负载均衡集群

    2019独角兽企业重金招聘Python工程师标准>>> 一.       工具 nginx-1.8.0 apache-tomcat-6.0.33 二.    目标 实现高性能负载均衡 ...

  8. Nginx + Tomcat 负载均衡集群配置

    摘要 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 已经因为它的稳定性.丰 ...

  9. 使用Redis存储Nginx+Tomcat负载均衡集群的Session

    配置Tomcat的session共享可以有三种解决方案: 第一种是以负载均衡服务器本身提供的session共享策略,每种服务期的配置是不一样的并且nginx本身是没有的. 第二种是利用web容器本身的 ...

最新文章

  1. 过分了,又双叒叕吃狗粮:因为爱情,才有思科
  2. Cadence Orcad 无法启动出现Capture.exe找不到cdn_sfl401as.dll问题
  3. .Net 垃圾回收和大对象处理
  4. WinCE中,环境变量的添加,删除和查询
  5. LeetCode 1560. 圆形赛道上经过次数最多的扇区
  6. 华为云MVP熊保松谈物联网开发:华为云IoT是首选,小熊派是神器
  7. 一个月市值蒸发116亿元,《姜子牙》救不了光线传媒
  8. php7 一句话木马,PHP一句话木马研究
  9. php编写文章发布程序教程,PHP开发文章发布系统之后台文章修改处理程序
  10. RedHat 安装 CentOS yum
  11. [C++基础]031_如何正确获取用户的输入
  12. mapper.xml中注释问题
  13. 宋体(Simsun)和新宋体(NSimsun)的区别
  14. python模拟登陆GDUFE教学一体化平台
  15. 二维码名片页面的样式设计
  16. 根据Uniprot ID/PDB ID批处理获取蛋白质.pdb文件
  17. Google用AI技术为Allo增加表情符号建议按钮
  18. C++ 数学与算法系列之认识格雷码
  19. Cocos技术派 | TS版属性面板定义高级用法
  20. JS String.toDate

热门文章

  1. MySQL常用性能分析方法-profile,explain,索引
  2. wireshark的使用教程--用实践的方式帮助我们理解TCP/IP中的各个协议是如何工作的
  3. GDB调试--以汇编语言为例
  4. Python3中闭包介绍
  5. 在Ubuntu上编译opencv 2.4.13源码支持android平台操作步骤
  6. 图像空间变换--imtransform
  7. 【C++】C++11 STL算法(八):对未初始化内存的操作(Operations on uninitialized memory)、C库(C library)
  8. 【Qt】QObject::moveToThread 总结
  9. 【网络编程】MarioTCP
  10. linux驱动:i2c驱动(四)流程图之注册驱动