设为首页 收藏本站
查看: 1098|回复: 0

[经验分享] apache整合tomcat部署集群

[复制链接]
发表于 2015-7-30 14:32:59 | 显示全部楼层 |阅读模式
  近日,由于公司项目需要,所以学习了apache整合tomcat以及集群的一些知识。
    所以做下笔记日后回顾可以用到。
    apache只有处理静态事物的能力, 而tomcat的强项就是处理动态的请求,所以apache和tomcat整合相互取长补短,由apache作为入口,如果是请求静态页面或者是静态文件,由apache直接提供,如果是请求动态页面,则让apache分发到tomcat,由tomcat处理以后再响应给客户端。
  apache和tomcat的整合需要准备的一些软件列表:
DSC0000.jpg
  图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文件,如果没有则新增一个,内容为:
DSC0001.jpg
  图2
  图2中的第一行,指定mod_jk的配置文件,配置tomcat以及负载均衡
    图2中的第二行和第三行表示,当请求后缀我jsp或者是do的时候,apache把请求转发给tomcat来处理
  3.配置完上面的配置文件以后,在apache的安装目录下的httpd.conf文件的末尾,把mod_jk.so模块以及mod_jk.conf配置文件加载进去
DSC0002.jpg
  图3
  4.配置apache的安装目录下的workers.properties文件,如果该文件不存在,自己新增一个即可
DSC0003.jpg
  图4
  介绍下图4中的各个参数:



#server
worker.list = controller      #控制器名称
#========tomcat1========
worker.tomcat1.port=8009      #ajp协议的端口,如果2个tomcat部署在同一个服务器中,那个ajp端口需要不同
worker.tomcat1.host=127.0.0.1 #tomcat的所在主机的ip,如果是本机,则写本机的ip即可
worker.tomcat1.type=ajp13     #协议类型
worker.tomcat1.lbfactor=1     #负载因子
#========tomcat2========
worker.tomcat2.port=9009
worker.tomcat2.host=127.0.0.1
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1    #如果2个tomcat,该参数相同,表示等比例,如果想tomcat负载多一点,只要把这个参数改的大一点即可,具体多少还是得看情况
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.retries=3  #请求失败以后重试次数
worker.controller.balance_workers=tomcat1,tomcat2   #controller控制的tomcat的名称,分别为tomcat1和tomcat2,由tomcat中的server.xml中设值
worker.controller.sticky_session=false    #回话是否有粘性,false表示无粘性,同一个回话的请求会到不同的tomcat中处理
worker.controller.sticky_session_force=false #当一个节点蹦了,如果设值为true,那么服务器返回500错误给客户端,如果设值为false,则转发给其他的tomcat,但是会丢失回话信息
#更详细的参数说明:http://tomcat.apache.org/connectors-doc/reference/workers.html
  5.安装好apache服务以后再准备好tomcat(两个tomcat作为例子)
DSC0004.jpg
  图5
  tomcat需要配置server.xml文件



















   













  另外就是在web项目的web.xml中添加属性,用于告诉web容器,该项目属于分布式项目,不然无法session replication
  6. 静态文件直接由apache响应,所需需要把部署的项目中的静态文件放在apache的安装目录下的htdocs文件夹下,偷懒的方法就是直接把tomcat的webapps中的项目拷贝一份放到htdocs中,所以htdocs的作用与tomcat的webapps类似
  7.部署的时候经常会出现一些错误,当遇到错误的时候我经常需要查看日志文件,我经常查看的日志有apache的日志以及tomcat的日志
DSC0005.jpg
  图6
  apache安装目录下的logs文件夹下就存放这apache的相关日志
  access.log文件用于记录apache接收到请求以及响应状态的日志
  error.log文件用于记录apache的运行错误
  httpd.pid文件用于记录进程pid
  mod_jk.log文件用于记录请求转发给tomcat的日志
DSC0006.jpg
  图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的要求:
DSC0007.jpg
  图8
  总共8点:
    1).session中的属性必须全部为实现Serializable
    2).tomcat的server.xml配置文件中的节点的注释去掉
    3).就是用于用于检测当前的响应是否涉及Session数据的更新,如果是则启动Session拷贝操作,这个属性后面会有一个filter属性,filter即过滤不需要Session拷贝操作的内容
    4).如果tomcat在同一个机器上的,那么确保tcpListenerPort端口的唯一性
    5).web.xml中必须添加属性
    6).如果使用mod_jk,那么需要在server.xml中的节点中添加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.iyunv.com/dennisit/p/3370220.html
    3.http://502245466.blog.iyunv.com/7559397/1280152
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-92315-1-1.html 上篇帖子: [JAVA]Apache FTPClient操作“卡死”问题的分析和解决 下篇帖子: windows下apache tomcat整合
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表