不会健身的程序员
不是好作家

单系统多tomcat集群(Apache2+Tomcat7+mod_jk集群负载)

因为项目需要,下面记录一下项目中apache2+tomcat+mod_jk的集群负载部署细节

部署环境

  • 操作系统:windows server 2003
  • jdk:
  • tomcat: apache-tomcat-7.0.69-windows-x64
  • apache: apache_2.0.55-win32-x86-no_ssl.msi
  • mod_jk: mod_jk-apache-2.0.55.so

规划

目录规划

我们规划本次安装涉及到的所有东西都放在D:\linjunlong下。
  • apache:apache安装目录
  • tomcat1:tomcat1安装目录
  • tomcat2:tomcat2安装目录
  • tomcat3:tomcat3安装目录
  • works:应用非结构化数据存储目录,一个应用除了有结构化数据(存数据,还有非结构化数据,集群的时候文件上传都会存放在此处,目录可通过存储挂载方式和其他服务器共享)

端口规划

  • apache 80端口
  • tomcat1
  • tomcat2

安装

  • jdk安装:略
  • apache安装:略
  • tomcat安装:
    1. 先解压一个tomcat1到d:\linjunlong下
    2. 在系统变量中增加CATALINA_HOME变量指向TOMCAT所在的目录

配置

apache配置

  1. 把mod_jk-apache-2.0.55.so复制到apache安装目录下的modules文件中
  2. 在conf/httpd.conf
    • 最后一行加入

      1. Include conf.d/*.conf
    • 所有有 /linjunlong/apache/htdocs都改成 d:/linjunlong/works/wwwroot

    • 修改端口改成80端口Listen 80
  3. 在modules中新建conf.d文件夹,用来专门存放我们的修改文件
  4. 在conf.d文件加新建下列文件
  • mod_jk.conf
  1. LoadModule jk_module modules/mod_jk.so
  2. # 与tomcat整合实现负载均衡配置
  3. JkWorkersFile conf.d/workers.properties
  4. # 访问url地址规则定义和过滤
  5. #JkMountFile conf.d/uriworkermap.properties
  6. JkShmFile logs/mod_jk.shm
  7. # 记录负载均衡日志
  8. JkLogFile logs/mod_jk.log
  9. # Set the jk log level [debug/error/info]
  10. JkLogLevel info
  11. # Select the log format
  12. JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
  13. # JkOptions indicates to send SSK KEY SIZE
  14. JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
  15. # JkRequestLogFormat
  16. JkRequestLogFormat "%w %V %T"
  17. #对tomcat项目别名,此处一定要配置,否则你项目的静态文件无法调用
  18. #Alias /OneByOne /opt/wwwroot/webapps/OneByOne
  19. #设置tomcat发布文件的权限,必须配置,否则报403错误
  20. <Directory "D:/amyd/amydhome/wwwroot">
  21. #Options FollowSymLinks
  22. Options Indexes FollowSymLinks
  23. #Options Indexes MultiViews
  24. AllowOverride None
  25. Order deny,allow
  26. #Deny from all
  27. allow from all
  28. Satisfy all
  29. </Directory>
  30. # 定义需要由tomcat解析的访问url
  31. JkMount /* controller
  32. # 排除不需要由tomcat解析的地址,比如下面定义的dbm是php工程,所以访问目录就需要排除
  33. # JkUnMount /*.js controller
  34. ```
  35. * uriworkermap.properties
  36. ```properties
  37. !/*=controller
  38. !/*.html=controller
  39. !/*.css=controller
  40. !/*.gif=controller
  41. !/*.jpg=controller
  42. !/*.png=controller
  43. !/*.js=controller

小林项目中用不到这些,所以屏蔽了,以后按需开启

  • workers.properties
  1. # 定义worker,此处的list名称必须和mod_jk.conf文件中的controller名称一致
  2. worker.list=controller
  3. # Define Node1
  4. worker.tomcat1.port=8009
  5. worker.tomcat1.host=localhost
  6. worker.tomcat1.type=ajp13
  7. worker.tomcat1.lbfactor=1
  8. worker.tomcat1.connection_pool_size=10
  9. worker.tomcat1.connection_pool_timeout=600
  10. worker.tomcat1.socket_connect_timeout=300
  11. # Define Node2
  12. worker.tomcat2.port=8010
  13. worker.tomcat2.host=localhost
  14. worker.tomcat2.type=ajp13
  15. worker.tomcat2.lbfactor=1
  16. worker.tomcat2.connection_pool_size=10
  17. worker.tomcat2.connection_pool_timeout=600
  18. worker.tomcat2.socket_connect_timeout=300
  19. # Define Node3
  20. worker.tomcat3.port=8011
  21. worker.tomcat3.host=localhost
  22. worker.tomcat3.type=ajp13
  23. worker.tomcat3.lbfactor=1
  24. worker.tomcat3.connection_pool_size=10
  25. worker.tomcat3.connection_pool_timeout=600
  26. worker.tomcat3.socket_connect_timeout=300
  27. # Load-balancing behaviour
  28. worker.controller.type=lb
  29. worker.controller.balance_workers=tomcat1, tomcat2 ,tomcat3
  30. worker.controller.sticky_session=0
  31. worker.controller.sticky_session_force=1
  32. #loadbalancer

这里要注意worker.xxx.属性,xxx是最后面负载均衡的balance_workers的内容

tomcat配置

  1. 根据解压好的tomcat1,复制粘贴出tomcat2,tomcat3出来
  2. 修改各个tomcat中conf/server.xml每个tomcat1,tomcat2,tomcat3需要修改的文件如下
  • 修改tomcat关闭监听端口,可以改成9开头的,3台分别是9005,9006,9007
  1. <Server port="9005" shutdown="SHUTDOWN">
  • 把http服务端口号由8080改成和上面集群一样的8009,8010,8011端口
  1. <Connector port="8009" protocol="HTTP/1.1"
  2. connectionTimeout="20000"
  3. redirectPort="8443" />
  • 把集群注释去掉,下面这个原本是注释的,去掉注释
  1. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
  • 设置结点名称
  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
  • 保持ajp端口一致,3台tomcat的ajp端口需要一致 要么都改,要么都不改
  1. <Connector port="9000" protocol="AJP/1.3" redirectPort="8443" />
  • 修改应用根目录
  1. <Host name="localhost" appBase="d:/linjunlong/works/wwwroot"
  2. unpackWARs="true" autoDeploy="true">

部署,启动

把war放到d:/linjunlong/works/wwwroot下,启动apache,启动tomcat就行,根据我们的配置,访问端口是80,浏览器中访问localhost/[war名称]

赞(1)
转载请注明出处:林俊龙博客 » 单系统多tomcat集群(Apache2+Tomcat7+mod_jk集群负载)

评论 11

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    看了代码之后又老了一岁……

    威客兼职 2年前 (2016-08-31) 来自天朝的朋友 360浏览器 Unknow Os 回复
  2. #2

    很好,学习了

    飞利浦呼吸机 2年前 (2016-09-01) 来自天朝的朋友 360浏览器 Unknow Os 回复
  3. #3

    写的不错哈,支持一下 http://www.viplinger.cn

    VIP灵儿网 2年前 (2016-09-01) Russian Federation 未知浏览器 Unknow Os 回复
  4. #4

    看不懂,求解释

    网上赚钱 2年前 (2016-09-02) 来自天朝的朋友 未知浏览器 Unknow Os 回复
  5. #5

    看不懂,求解释

    太阳能热水器厂家 2年前 (2016-09-04) 来自天朝的朋友 未知浏览器 Unknow Os 回复
  6. #6

    很好,学习了

    威客众包 2年前 (2016-09-07) 来自天朝的朋友 未知浏览器 Unknow Os 回复
  7. #7

    码农都是这样的,很高深,我也看不懂。

    hdpe缠绕增强管 2年前 (2016-09-08) 来自天朝的朋友 未知浏览器 Unknow Os 回复
  8. #8

    写的很好,虽然我看不懂

    工控资料窝 2年前 (2016-09-08) 来自天朝的朋友 未知浏览器 Unknow Os 回复
  9. #9

    每看一次代码,脑细胞就死了好多好多好多

    佛山影视 2年前 (2016-09-08) 来自天朝的朋友 未知浏览器 Unknow Os 回复
  10. #10

    很好,学习了

    威客众包 2年前 (2016-09-12) 来自天朝的朋友 未知浏览器 Unknow Os 回复
  11. #11

    做运营的人呢,标示卡不懂代码

    从零开始学运营 2年前 (2016-09-14) 来自天朝的朋友 未知浏览器 Unknow Os 回复

年年岁岁花相识,岁岁年年人不同

给我留言网站地图

谢主隆恩

支付宝扫一扫打赏

微信扫一扫打赏