您的位置:首页 > 运维架构 > Tomcat

apache整合tomcat部署集群

2016-02-23 19:42 597 查看
近日,由于公司项目需要,所以学习了apache整合tomcat以及集群的一些知识。

  所以做下笔记日后回顾可以用到。

  apache只有处理静态事物的能力, 而tomcat的强项就是处理动态的请求,所以apache和tomcat整合相互取长补短,由apache作为入口,如果是请求静态页面或者是静态文件,由apache直接提供,如果是请求动态页面,则让apache分发到tomcat,由tomcat处理以后再响应给客户端。

apache和tomcat的整合需要准备的一些软件列表:



图1

说明:

1.首先安装apache服务(httpd-2.2.25-win32-x86-no_ssl.msi),默认是80端口的,如果80端口被占用,则无法安装成功;

  用一下命令可以查询80端口被哪个进程id占用,netstat -aon|findstr "80"

  再用一下命令查询该进程id是代表哪个进程,tasklist|findstr "2016"

  apache检查错误方法:进入cmd 然后进入 Apache安装目录(具体为你自己的安装目录)\bin> httpd.exe -w -n "Apache2" -k start

2.打开apache的安装目录下面的modules文件夹,把图1中的mod_jk.so文件放入

3.在apache安装目录的conf文件夹下面配置mod_jk.conf文件,如果没有则新增一个,内容为:



图2

  图2中的第一行,指定mod_jk的配置文件,配置tomcat以及负载均衡

  图2中的第二行和第三行表示,当请求后缀我jsp或者是do的时候,apache把请求转发给tomcat来处理

3.配置完上面的配置文件以后,在apache的安装目录下的httpd.conf文件的末尾,把mod_jk.so模块以及mod_jk.conf配置文件加载进去



图3

4.配置apache的安装目录下的workers.properties文件,如果该文件不存在,自己新增一个即可



图4

介绍下图4中的各个参数:

5.安装好apache服务以后再准备好tomcat(两个tomcat作为例子)



图5

tomcat需要配置server.xml文件

  另外就是在web项目的web.xml中添加属性<distributable/>,用于告诉web容器,该项目属于分布式项目,不然无法session replication

6. 静态文件直接由apache响应,所需需要把部署的项目中的静态文件放在apache的安装目录下的htdocs文件夹下,偷懒的方法就是直接把tomcat的webapps中的项目拷贝一份放到htdocs中,所以htdocs的作用与tomcat的webapps类似

7.部署的时候经常会出现一些错误,当遇到错误的时候我经常需要查看日志文件,我经常查看的日志有apache的日志以及tomcat的日志



图6

apache安装目录下的logs文件夹下就存放这apache的相关日志

access.log文件用于记录apache接收到请求以及响应状态的日志

error.log文件用于记录apache的运行错误

httpd.pid文件用于记录进程pid

mod_jk.log文件用于记录请求转发给tomcat的日志



图7

tomcat的日志:

localhost_access_log.日期.txt文件用于记录tomcat接收到的请求以及响应的状态等,作用于apache的access.log类似

catalina.日期.txt文件用于记录tomcat启动时候控制台的一些信息以及服务端错误信息

localhost.日期.txt文件用于记录站点访问信息,Tomcat下内部代码丢出的日志,文件名localhost.日期.log(jsp页面内部错误的异常,org.apache.jasper.runtime.HttpJspBase.service类丢出的,日志信息就在该文件!)

8.官方文档中对于集群中session repliction的要求:



图8

总共8点:

  1).session中的属性必须全部为实现Serializable

  2).tomcat的server.xml配置文件中的<Cluster>节点的注释去掉

  3).就是用于用于检测当前的响应是否涉及Session数据的更新,如果是则启动Session拷贝操作,这个属性后面会有一个filter属性,filter即过滤不需要Session拷贝操作的内容

  4).如果tomcat在同一个机器上的,那么确保tcpListenerPort端口的唯一性

  5).web.xml中必须添加<distributable/>属性

  6).如果使用mod_jk,那么需要在server.xml中的<Engine/>节点中添加jvmRoute=“tomcat1”属性,事实证明在ajp端口那边添加也是可行的

  7).确保所有的tomcat时钟同步,使用ntp服务器来达成

  8).确保负载均衡器的sticky_session=false已经设置,即设置为非粘性

参考:

  1.https://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html

  2.http://www.cnblogs.com/dennisit/p/3370220.html

  3.http://502245466.blog.51cto.com/7559397/1280152

转载博客,原博客地址:http://www.cnblogs.com/God-froest/p/apache_tomcat.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: