Tomcat -- apache+tomcat集群

一曲冷凌霜 提交于 2019-12-05 18:49:12

主要参考了这篇文章
http://blog.csdn.net/flyliuweisky547/article/details/21293071?utm_source=tuicool&utm_medium=referral
这位博主在tomcat方面讲得十分清楚,感谢该博主分享。
环境信息
操作系统:win7(64位)
tomcat版本:apache-tomcat-8.0.36-windows-x64.zip
apache版本:httpd-2.4.23-x64-vc14.zip
mod_jk版本:tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip
#1.下载如上所需软件
到官网上下载如上软件,tomcat和mod_jk直接解压即可。
apache安装详见
https://my.oschina.net/u/2312022/blog/749148
#2.部署tomcat集群
##1.创建Tomcat-cluster目录
输入图片说明
如上文件夹tomcat1与tomcat2下分别解压了下载的tomcat。
##2.配置tomcat1
1.在E:\Tomcat-Cluster\tomcat1\apache-tomcat-8.0.36\webapps 目录下创建文件夹TestCluster。
2.将ROOT文件夹下的WEB-INF文件夹拷贝到TestCluster下。
3.打开TestCluster\WEB-INF\web.xml,在</web-app>上面添加上<distributable/>。
4.在TestCluster文件夹创建index.jsp,做为测试使用

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
    <%@ page import="java.text.SimpleDateFormat"%>  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>  
      <head>  
        <title>TestCluster</title>  
      </head>  
      <body>  
            Server Info:  
        <%  
          String dtm = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());  
          System.out.println("["+request.getLocalAddr()+":"+ request.getLocalPort()+"]" + dtm);  
          out.println("<br>["+request.getLocalAddr()+":" +request.getLocalPort()+"]" + dtm+"<br>");   
        %>  
        Session Info:  
        <%  
            session.setAttribute("name","dennisit");  
            System.out.println("[Session Info] Session ID:"+session.getId());  
            out.println("<br>[Session Info] Session ID:" + session.getId()+"<br>");  
        %>  
      </body>  
    </html>  

5.修改tomcat1的server.xml文件(E:\Tomcat-Cluster\tomcat1\apache-tomcat-8.0.36\conf)
修改信息如下

<Server port="7005" shutdown="SHUTDOWN">
    <Connector port="7080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
<Connector port="7009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="Tomcat1">

打开Cluster注释

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

##3.配置tomcat2
1.webapps 目录下创建文件夹TestCluster。
2、3、4同tomcat1。
5.修改tomcat2配置信息
将8005、8080、8009改为9005、9090、9009。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="Tomcat2">
#3.启动tomcat集群
双击E:\Tomcat-Cluster\tomcat1\apache-tomcat-8.0.36\bin\startup.bat
双击E:\Tomcat-Cluster\tomcat2\apache-tomcat-8.0.36\bin\startup.bat 有可能会出现闪退,请看我另一篇解决闪退问题的文章
https://my.oschina.net/u/2312022/blog/744139
##4.测试
在浏览器输入:
http://localhost:7080/TestCluster/index.jsp
即可访问集群下tomcat1节点
输入图片说明
在浏览器输入:
http://localhost:9080/TestCluster/index.jsp
访问集群下tomcat2节点
输入图片说明
可以发现,tomcat1与tomcat2两个节点的session一样。
自此,可以实现tomcat集群。
#3.整合apache与tomcat集群
有两种方式
1.apache自带的mod_proxy_balancer
2.tomcat推荐的mod_jk
我这里使用mod_jk方式
##1.下载mod_jk模块
最开始已经下载好了
##2.解压mod_jk模块
解压后可得到mod_jk.so,将它拷贝到Apache24\modules目录下。
##3.新建workers.properties
在Apache24\conf下新建workers.properties文件

#worker列表
worker.list=controller,Tomcat1,Tomcat2  
#========Tomcat1========  
worker.Tomcat1.port=7009  
worker.Tomcat1.host=localhost  
worker.Tomcat1.type=ajp13  
worker.Tomcat1.lbfactor=1  
#========Tomcat2========  
worker.Tomcat2.port=9009  
worker.Tomcat2.host=localhost  
worker.Tomcat2.type=ajp13  
worker.Tomcat2.lbfactor=1  
#========controller========  
worker.controller.type=lb  
worker.controller.balanced_workers=Tomcat1,Tomcat2  
worker.controller.sticky_session=false

##4.新建mod_jk.conf
在Apache24\conf下新建mod_jk.conf文件

#加载mod_jk模块
LoadModule jk_module modules/mod_jk.so  
#配置mod_jk
JkWorkersFile conf/workers.properties  
#将apache下所有的请求都交给controller处理  
JkMount /* controller

##5.修改httpd.conf
在httpd.conf结尾处加上include conf/mod_jk.conf
#4测试
重启apache服务器,在浏览器输入http://localhost/TestCluster/index.jsp
两次请求结果如下
输入图片说明
输入图片说明
可以发现,两次请求分别转发给tomcat1与tomcat2了,而且两个节点的session是一样。
结尾:
1.apache和tomcat整合之后,apache是接收请求的入口,它根据设置的条件,决定将请求转发给哪个tomcat处理。
2.通常的应用场景,apache只处理静态页面,动态页面会交给tomcat处理。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!