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

[经验分享] 总结一:apache+tomcat的集群

[复制链接]

尚未签到

发表于 2017-1-5 08:08:11 | 显示全部楼层 |阅读模式
  

(一)需要的相关程序:
1. apache_2.2.11-win32-x86-no_ssl.msi
2. mod_jk-1.2.28-httpd-2.2.3.so
3. tomcat6
(二)术语解释:
1.apache

      Apache是普通服务器,本身只支持html即普通网页。不过可以通过插件支持php,还可以与Tomcat连通。 Apache和Tomcat整合使用:如果客户端请求的是静态页面,则只需要Apache服务器响应请求;如果客户端请求动态页面,则是Tomcat服务器响应请求;因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销 。 

区别:Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。 Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,serverlet)。
2.mod_jk
tomcat为一个jsp的容器,apache为一个web server,他们之间的通信可以通过worker进行(由Tomcat使用Server.xml文件中Connector的标签来定义其端口和协议),即通过通过mod_jk的模块进行通信。
过程是这样子:apache的httpd.conf文件先调用mod_jk.conf,mod_jk.conf调用workers.properties,最后配置虚拟主机。
(三)文件说明:
httpd.conf

mod_jk.conf
主要定义mod_jk模块的位置以及mod_jk模块的连接日志设置,还有定义worker.properties文件的位置。
worker.properties
定义worker的参数,主要是连接tomcat主机的地址和端口信息。如果Tomcat与apache不在同一台机器上,或者需要做多台机器上tomcat的负载均衡只需要更改workers.properties文件中的相应定义即可。
server.xml
(四)文件内容
httpd.conf最后一行添加:
Include conf/mod_jk.conf

mod_jk.conf内容:
#加载mod_jk Module
LoadModule jk_module modules/mod_jk-apache-2.0.55.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /*.jsp controller

worker.properties内容:
worker.list = controller,tomcat1,tomcat2 #server 列表
#========tomcat1========
worker.tomcat1.port=7080        #注意这是 ajp1.3 端口号,在tomcat下server.xml配置,默认8009。不是tomcat的web端口,注意区别!
worker.tomcat1.host=localhost   #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1     #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=8089   
worker.tomcat2.host=localhost 
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1 
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2 #指定分担请求的tomcat
worker.controller.sticky_session=1


(五)Session配置:
(六)注意事项:
(七)出错解答:
1.严重: FarmWarDeployer can only work as host cluster subelement
在server.xml去掉以下代码:

  • <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"  
  •           tempDir="/tmp/war-temp/"  
  •           deployDir="/tmp/war-deploy/"  
  •           watchDir="/tmp/war-listen/"  
  •           watchEnabled="false"/>  



 
(一)tomcat集群方式
        对于tomcat的集群有两种方式,这个主要是针对session而言的。
       一种就是sticky模式,即黏性会话模式。所谓sticky模式就是说同一个用户的访问请求都被派送到同一个tomcat实例上,这样我们就无须在多台服务器之间实现session共享了,这是其好处,不好的地方就是不能实现failureover了,一但用户访问的机器挂掉,那么其session就会丢失。
       另外一种就是session复制模式了。session复制模式就可以很好的解决failureover的问题,即使某一台web服务器挂掉了,用户的请求还会被负载到其他的web服务器上,而且session也被复制了,这样对用户而言就像是在同一台机器上操作一样,不好的地方就是session复制需要系统资源和网络的开销,尤其是当web服务器多的时候或session里存储的数据量大的时候,这点将会比较的明显(不过自己还没有做这方面的测试)。
       针对这两种方式的弊端和好处,我们可以采用将两种方式结合的方式来达到更好的效果,那就是sticky+session复制模式了。用户的请求按照sticky方式被分发到同一个web服务器上,同时tomcat在后台做异步复制(非同步)session到其他web服务器,这样我们使用sticky的简便性,同时又有了一定的容错能力。
(二)以下我们配置下tomcat集群的注意事项

1. 配置多个tomcat,如果运作在同一台机子要保证这些tomcat正常运行,端口不会冲突。

2. 找到所有server.xml,找到配置Engine的位置,取消注释,并修改jvmRoute="tomcat实例名"。tomcat实例名可以自己定义的,不过要跟配置mod_jk的woker.properties中指定的一致。每一个tomcat对应一个实例名。
3. 找到Cluster标签,并取消它的注释即可。将cluster中的Receiver标签下的tcpListenAddress或address改为tomcat所在服务器的真实ip 。
4. 如果tomcat放在同一台电脑上,修改下Receiver标签内容的port端口(如4001,4002等等),避免冲突。
 
5. 确保每个server.xml里的cluster部分下的Membership标签中的内容一致。并将其中的mcastAdDr="228.0.0.4"改为mcastAddr="228.0.0.4" 或address="228.0.0.4"
6. 如果tomcat在同一机器上请确保每个tomcat下的4个端口不冲突:
   Server port
   http的Connector port
   ajp的Connector port
   Receiver标签下的tcpListenPort(
port端口

7. 确保要在应用集群的web应用下的web.xml的末尾添处</web-app>标签里添加
<distributable/>

  原文:http://zhumeng8337797.blog.163.com/blog/static/100768914201182395246728/
 

运维网声明 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-323973-1-1.html 上篇帖子: windows下整合Apache+IIS+Resin 下篇帖子: Simple User Access to Apache HBase
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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