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

[经验分享] tomcat+apache+jk集群、负载均衡

[复制链接]

尚未签到

发表于 2015-8-4 11:54:03 | 显示全部楼层 |阅读模式
  一。需要软件:tomcat6.0+apache2.2+mod_jk(符合apache2.2的,apache官网有下载...)
  二。参考:http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html
  
  三。环境:多台服务器。
  四。安装。
  主机A:apache,tomcatA,ip:192.168.1.20  ,apache端口80,tomcat端口8080
  主机B tomcatB,ip:192.168.1.21,端口80
  主机C tomcatC,ip:192.168.1.22,端口80
  五。配置apache。
  将下载的mod_jk(名字假如:mod_jk-1.2.28-httpd-2.2.3.so) 放在apache的modules文件夹下。并修改httpd.conf文件。搜索LoadModule。找到一大排#LoadModule xxx xxxx.so下面,加入
  LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so
  当然你也可以放在httpd.conf文件最后面,随大家爱好。。。,然后在http.conf最后面加入这几行
  JkWorkersFile conf/workers.propertiesJkMountFile conf/uriworkermap.propertiesJkLogFile logs/mod_jk.logJkLogLevel warn
  
  这个workers.properties和uriworkermap.properties名字随便取,但是后缀名要是properties。mod_jk.log同样也可以随便取名字,这个文件就是写日志的。JkLogLevel 日志等级,warn以上的都会写入日志,而这些文件将会放在根目录下的conf文件夹下。
  workers.properties就是负责负载均衡的。而uriworkermap.properties则是设置哪些文件由apache处理,哪些文件由tomcat处理。
  在conf文件夹下新建刚才说的workers.properties。在里面写:
  worker.list=DLOG4J,status#========tomcatA========   worker.tomcatA.port=8009         worker.tomcatA.host=192.168.1.20 worker.tomcatA.type=ajp13   worker.tomcatA.lbfactor = 1    #========tomcatB========   worker.tomcatB.port=8009         worker.tomcatB.host=192.168.1.21worker.tomcatB.type=ajp13   worker.tomcatB.lbfactor = 1  #========tomcatC========   worker.tomcatC.port=8009         worker.tomcatC.host=192.168.1.22worker.tomcatC.type=ajp13   worker.tomcatC.lbfactor = 1 #========controller,负载均衡控制器========   worker.DLOG4J.type=lb   worker.DLOG4J.balanced_workers=tomcatA,tomcatB,tomcatCworker.retries=3worker.DLOG4J.sticky_session=trueworker.status.type=status
  其中port为tomcat下server.xml里的 对应端口。host值为对应主机,这里不要担心其他主机tomcat不为8080等其他端口,apache是通过ajp端口找到对应tomcat的。type的值为固定ajp13,这个值不能修改哦。lbfactor 的值就是均衡时apache访问tomcat的概率,如果3个tomcat的值都相等,那么服务设置了负载均衡的话,就会平均分发给各个tomcat,。controller下面就是负载均衡器了。type=lb表示负载均衡,balanced_workers表示指定哪些tomcat负载均衡,retries的值我现在还不明白什么意思。sticky_session=false 表示进行session复制,为true表示session不复制。详细见上面给的参考
  接着在conf文件夹下新建uriworkermap.properties。在里面写下:
  /*=DLOG4J/jkstatus=status!/*.gif=DLOG4J!/*.jpg=DLOG4J!/*.png=DLOG4J!/*.css=DLOG4J!/*.js=DLOG4J!/*.htm=DLOG4J!/*.html=DLOG4J
  status是刚才workers.properties文件中配置的,意思是由tomcat进行处理。哪些由tomcat处理呢?除了下面那些后缀的文件外,其他的都由tomcat处理,相信大家这时候都知道后面哪些由谁处理了,对,就是apache。当然你也可以增加其他类型文件由apache处理。
  另:如果tomcatB下面有其他jsp应用的话,那么server.xml就要这样配置了:
        192.168.1.21
  localhost这个值请不要域名表示,因为apache是通过ip找到对应项目的。当然下面的"其他应用"可以使用域名表示。并不影响。
  就这样apache就配置完了,接着是配置tomcat。
  六。配置tomcat。
  在每个tomcat的server.xml文件中,修改以下信息:
  找到类似这样的: ,默认tomcat把这个给注释掉了,去掉注释,jvmRoute里面的值就是workers.properties中设置的tomcatA,tomcatB,tomcatC。然后在该标签内添加以下信息:
           
  还有一点,就是如果3个tomat都是放在同一台电脑上的话,ajp端口要设置不同,还有
              
  找到这里,端口4000也要设置不同。。。。
  这样,集群就配置好了,当然这个集群只是实现了其中的一种方式,就是第一次请求某个tomcat,后续的请求都会由这个tomcat进行处理。当然,这里session没有进行复制了。
  如果想进行session复制,那么要修改workers.properties:worker.DLOG4J.sticky_session=false。
  还要在项目中的web.xml文件下加上:
  最后一点就是修改server.xml,在  标签下加上:
  
  我就是没有加上这点,其他都设置好了,导致session无法复制。将以下这行注释掉:
           
  改为:
           
  这个mapSendOptions的值也有特殊含义,好像tomcat文档有讲解吧...
  
  额,似乎就这些配置了,session可以复制了。但是我要说的是,这个session是可以复制,但也就是当session在创建或者消费的时候会进行复制,如果session进行更新操作,将无法复制。当然,也许是我少配置哪里了,如果谁这样配置了session更新了还可以复制的话,还希望在下面留个言,谢谢!在tomcat官网看到,
           
  这个就是提供session复制的接口,不过tomcat6.0版本好像还没实现这个接口,导致session不能真正意义上复制了。
  
  另外:session集群还会涉及到图片共享问题,如果多台服务器组成了局域网,可以使用jcifs上传图片到共享文件夹。当然还可以通过ftp上传了。

运维网声明 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-94057-1-1.html 上篇帖子: 安装apache的时候80端口被PID为4的系统进程所占用 下篇帖子: CentOS 4.4下源码编译安装apache+php+mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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