Tomcat与Apache集成负载均衡交流_第1页
Tomcat与Apache集成负载均衡交流_第2页
Tomcat与Apache集成负载均衡交流_第3页
Tomcat与Apache集成负载均衡交流_第4页
Tomcat与Apache集成负载均衡交流_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、三文档编号Tomcat与Apache集成-001文档版本1.0密级1级拟制人温传波日期2008-9-25Tomcat与Apache集成变更说明日期版本变更位置变更说明作者2008-11-181.0创建温传波1 ApacheApache是Apache软件基金会维护的一个处于世界领先地位的静态Web服务器,再加上它是开源软件,所以受到很多互联网公司的青睐。使用Apache服务器,能给我们的Web应用带来以下的好处:静态页面的处理效率更高;1. 能使用Apache给集群的Web应用服务器进行负载均衡;2. 良好的扩展性;做为一个静态Web的服务器,它的工作机制也显得相对简单。当服务器启动时,会在计算

2、机上的某个端口建立一个http或一个https协议的监听器来监听浏览器的请求,当收到请求后,读取静态文件的内容,返回给客户端的输出流。软件下载: Apache2.0.63下载 官方下载 部门下载软件安装:此处注意,如果你本机已经装了iis并且占用80端口,务必先在服务中将iis停止或禁用。软件默认安装即可。安装过程中设置Network Domain和Server Name为localhost(选择默认就可以,不需要做更改),设置你的email地址,下方会让你选择only for the current user或for all users。默认选择for all users。这样Apache就

3、会占用80端口,并且做为一个系统服务开机自动运行。 安装完成之后,你在浏览器中输入http:/localhost,将会看到Apache的成功页面(显示It works!)。Apache默认的主目录是d:ApacheApache2,此时Apache,已经运行,你可以在窗口的托盘看到他的图标,双击图标,在弹开的窗口选择Open Apache Monitor,点Stop,停止Apaceh服务。2 TomcatTomcat也是Apache基金会维护的一个Web应用服务器。它是一款很优秀的Web应用服务器,它的优秀主要保存在如下几个方面:它体积小,安装使用方便;1. 有很强大的处理动态Web信息的能力;

4、2. 集群配置容易,很好的实现负载平衡;3. 能很好的与Apache其它产品(例如Apache)结合;4. 完全免费;做为专业的动态Web处理器,在处理态页面的能力就没有Apache那么优秀了。但如果将所有的静态页面都交给动态Web应用服务器处理,对资源显得有些浪费。软件下载: Tomcat5.5 下载: 官方下载 部门下载软件安装:1、 安装JDK此处选择默认安装即可,(旧版本的JDK安装完之后需要设置系统的环境变量,JRE和JDK1.5.0以后版本不设置也没关系。),不过建议JDK安装的路径不要太深,不利于查找。2、 安装Tomcat启动安装程序,为了方便查找选择安装目录为d:Tomcat

5、,其余为默认。安装成功后在浏览器中输入http:/localhost:8080,出现Tomcat页面表示安装成功了。关于tomcat的设置已经有很多非常详细的文章,在此就不再详述了。3 Apatche&Tomcat整合Apache和Tomcat后,我们的Web应用可以得到如下明显的好处:1、 由于将Tomcat进行了集群,带来了更高的可用性;2、处理Web应用的速度更快(多个Tomcat处理动态信息请求,Apache处理静态请求);3、本文将详细介绍关于tomcat和apache的整合过程、tomcat的集群配置、以及tomcat集群后文件的同步问题处理。整合Apache和Tomcat有3种方

6、法,分别是:JK连接器、AJP代理Http代理。下面将一一介绍。3.1 使用JK连接器整合整合tomcat和apache主要使用jk连接器的方式,这是最常见的方式,你可以在网上找到很多关于配置JK的网页,当然最全的还是其官方所提供的文档。JK本身有两个版本分别是1和2,目前1最新的版本是1.2.19,而版本2早已经废弃了,以后不再有新版本的推出了,所以建议你采用版本1。JK是通过AJP协议与Tomcat服务器进行通讯的,Tomcat默认的AJP Connector的端口是8009。JK本身提供了一个监控以及管理的页面jkstatus,通过jkstatus可以监控JK目前的工作状态以及对到tom

7、cat的连接进行设置。JK的配置方法如下:1. 放入jk模块共享文件将下载下来的mod_jk-1.2.27-httpd-2.0.63.so 文件改名为:mod_jk.so 并放入到%APACH_HOME%modules 目录下。2. 更改Apache服务器的配置文件httpd.conf 打开%APACH_HOME%conf httpd.conf ,找到如下位置# DocumentRoot: The directory out of which you will serve your# documents. By default, all requests are taken from this

8、 directory, but# symbolic links and aliases may be used to point to other locations.#DocumentRoot D:/Apache2.0/Apache2/htdocs将DocumentRoot 参数改为我们站点的根目录,例如:DocumentRoot D:/Projects/ccp/00src/ccpweb/web然后在httd.conf的结尾加上如下代码:#加载jk的共享对象文件LoadModule jk_module modules/mod_jk.so#设指定tomcat监听配置文件地址JkWorkersF

9、ile D:/Tomcat5.5/conf/perties#指定tomcat监听配置文件地址(注意,该文件一定要存在,否则Apache不能启动)JkLogFile D:/Tomcat5.5/logs/mod_jk2.log#指定JK日志输出级别JkLogLevel info#配置虚拟主机 ServerAdmin localhost#配置Web站点的根目录DocumentRoot D:/Projects/ccp/00src/ccpweb/web#设置虚拟主机的名称ServerName localhost#设置静态Web的首页DirectoryIndex index.html

10、 index.htm index.jsp#出错日志的位置ErrorLog logs/shsc-error_log.txt#关于apache与tomcat的连接日志位置CustomLog logs/shsc-access_log.txt common#指定jk的请求转发url地址映射JkMount /servlet/* ajp13 JkMount /*.jsp ajp13 JkMount /*.do ajp13 JkMount /*.check ajp133. 编写JK到Tomcat服务器的连接定义文件perties。在%TOMCAT_HOME%conf 目录打开或新建wo

11、perties文件,按如下配置进行修改:#设置tomcat的根目录workers.tomcat_home=D:Tomcat 5.5#设置jdk的根目录workers.java_home=D:Javajdk1.5.0_05#如下所有参数采用默认ps=worker.list=ajp13 #模块版本worker.ajp13.port=8009 #工作端口,若没占用则不用修改worker.ajp13.host=localhost #本机,若上面的Apache主机不为localhost,作相应修改worker.ajp13.type=ajp13 #类型worker.ajp13.lbfac

12、tor=1 #代理数,不用修改JK配置好后,需要配置Tomcat下我们的站点了。4. 配置站点的Web Context 和数据源打开%TOMCAT_HOME%confservlet.xml中在最后的标签前加入如下代码 在如下的代码中,通过Context标签定义了站点,然后在其中的Resource标配置了在该站点中可以使用的jdbc数据源。(如果你不需要使用数据源,就不需要配置了)现在来测试一下看我们的配置是否成功:1, 打开Tomcat应用服务器2, 打开Apache服务器3, 在url中输入http:/localhost/ 就应该能看到我们站点的主页了。3.2 http代理方式整合这是利用A

13、pache自带的mod_proxy模块使用代理技术来连接Tomcat。在配置之前请确保是否使用的是2.2.x版本的Apache服务器。因为2.2.x版本对这个模块进行了重写,大大的增强了其功能和稳定性。http_proxy模式是基于HTTP协议的代理,因此它要求Tomcat必须提供HTTP服务,也就是说必须启用Tomcat的HTTP Connector。一个最简单的配置如下:1. 先取消注释 %APACHE_HOME%confhttpd.conf 里面的如下两行,让http代理模块工作。#连接tomcatLoadModule proxy_module modules/mod_proxy.soL

14、oadModule proxy_ajp_module modules/mod_proxy_http.so2. 在%APACHE_HOME%confhttpd.conf 文档末尾加上如下代码:ProxyPass /images/ ! ProxyPass / :8009/ ProxyPassReverse / :8009/如上的代码主要用来映射请求的转发路径。3.3 ajp代理方式整合ajp_proxy和 http_proxy连接很相似,不过使用的是ajp的连接器,来进行tomcat和apache之间的连接。1. 先取消注释 %APACH

15、E_HOME%confhttpd.conf 里面的如下两行,让http代理模块工作。#连接tomcatLoadModule proxy_module modules/mod_proxy.soLoadModule proxy_ajp_module modules/mod_proxy_ajp.so2. 在%APACHE_HOME%confhttpd.conf 文档末尾加上如下代码:ProxyPass /images/ ! ProxyPass / ajp:/:8009/ ProxyPassReverse / ajp:/:8009/如上的代码主要用来映射请求的转发路

16、径。虽然可以使用三种方式来整合tomcat和apache,但是强烈第一种方式,因为它受过大量Web应用的检验。4 A&T集群为了在动态Web应用中,很好的利用Apache的处理静态信息的能力,整合tomcat和apache将是一个不二的选择,如果能合理利用它们的优点,将会给web应用带来更好的性能和更高的可靠性如果使用单Web应用服务器来布置的话,那么当Web应用的访问量增大的时候,一个应用服务器不能够承受过多的请求,当一个服务器阻塞或瘫痪的话,就会影响到用户正常的访问。如果使用应用服务器集群和负载均衡,就能够很好的解决这些问题。典型的Apache和Tomcat的集群配置的拓朴图如下:Tomc

17、atATomcatETomcat集群负载均衡器(Balancer),静态Html (Apache2.0)客户端通过上面的拓朴图,我们可以发现,Apache2.0在整个结构中,不仅充当负载均衡器的作用,还处理静态html请求。当负载均衡器收到来自客户端的动态请求时,根据当前的集群服务器情况,使用一定机制来选择某一动态服务器来处理当前的请求。它们的处理流程如下:1. Apache服务器接接收所有的请求。2. 当收到请求以后,根据当前配置的映射文件,判断当前的请求是自己处理还是交给其它的服务器。3. 如果确定由Apache自己处理,则获取请求的静态文件,返回给客户端浏览器。4. 如果需要由其它的We

18、b应用服务器处理,则根据负载均衡的策略,将请求转发到其它的服务器,此时Apahce相当于一个代理的服务器。4.1 集群环境配置(Windows)在磁盘上新建一个名称叫做Tomcats的目录用来存放所有需要集群运行的Tomcat目录,将已安装好的Tomcat5.5从根目录开始,拷贝4份到tomcats目录下,分别命名为Tomcat5.5A,Tomcat5.5B,Tomcat5.5C,Tomcat5.5D;上面所讲的只是实验环境,在Web应用在实际布置的时候,每个Tomcat和Apache可能会安装在不同的服务器上。如下是具体的配置过程:1、 安装Apache服务器,参见 “第一章 Apache”

19、;2、 安装Tomcat服务器,参见 “第二章 Tomcat”;3、 Tomcat集群配置;分别修改Tomcats目录下的每个Tomcat的 confserver.xml文件,参照如下:#每个参于集群的Tomcat该Server Prot 号应该不同 #每个参于集群的Tomcat的Http Connector Prot 号应该不同 #每个参于集群的Tomcat的Ajp/1.3 Connector Prot 号应该不同 #每个参于集群的Tomcat的jvmRoute名称应该不同#如下是关于Tomcat集群的配置 去掉默认的关于集群的配置注释符号 !- #加上如下的注释文字 !- #加上如下的注释

20、文字 - - #去掉默认的关于集群的配置注释符号 #配置Web应用及数据源 如下给出每个Tomcat的配置端口号的建议,请参考上述文件进行配置Tomcat目录Server ProthttpConnector portAJP/1.3 Port jvmRouteTomcat5.5A800580808009TomcatATomcat5.5B800680818010TomcatBTomcat5.5C800780828011TomcatCTomcat5.5D800880838012TomcatD配置好每个Tomcat后,进入第个的Tomcat的bin目录,启动tomcat.exe,在启动的过程中,如果可

21、以看到如下的的启动信息,则说明tomcat的集群配置成功了。4.2 Apache负载均衡1. 将下载下来的mod_jk-1.2.27-httpd-2.0.63.so 文件改名为:mod_jk.so 并放入到%APACH_HOME%modules 目录下。如果有,就不用重复进行此次操作了。2.在Apache的conf目录下新建perties的内容如下:worker.list =Balancer#注意如下的商品号需要与上面的每个tomcat配置的商品号一致#=TomcatA=worker.TomcatA.port=8009 #ajp13 端口号,在tomcat下server.xm

22、l配置,默认8009worker.TomcatA.host= #tomcat的主机地址,如不为本机,请填写ip地址worker.TomcatA.type=ajp13 #连接Tomcat所使用的协议worker.TomcatA.lbfactor = 1 #server的加权比重,值越高,分得的请求的机会越多#=TomcatB=worker.TomcatB.port=8010 worker.TomcatB.host= worker.TomcatB.type=ajp13worker.TomcatB.lbfactor = 1 #=TomcatC=worker.Tom

23、catC.port=8011 worker.TomcatC.host= worker.TomcatC.type=ajp13worker.TomcatC.lbfactor = 1 #=TomcatD=worker.TomcatD.port=8012 worker.TomcatD.host= worker.TomcatD.type=ajp13worker.TomcatD.lbfactor = 1 #=controller,负载均衡控制器=worker.Balancer.type=lbworker.Balancer.balanced_workers=TomcatA

24、,TomcatB,TomcatC,TomcatD #指定分担请求的tomcatworker.Balancer.sticky_session=1 #指定是否需要在Tomcat间复制session(可选配置)3. 最后在Apache的conf/httpd.conf的文件末尾加入如下代码:LoadModule jk_module modules/mod_jk.soJkWorkersFile conf/pertiesJkLogFile logs/mod_jk2.logJkLogLevel errorServerAdmin localhostDocumentRoot D:/Proj

25、ects/ccp/00src/ccpweb/webServerName localhostDirectoryIndex index.html index.htm index.jspErrorLog logs/shsc-error_log.txtCustomLog logs/shsc-access_log.txt commonJkMount /* BalancerJkUnMount /*.html BalancerJkUnMount /*.jpg BalancerJkUnMount /*.gif BalancerJkUnMount /*.png BalancerJkUnMount /*.css

26、BalancerJkUnMount /*.js Balancer4. 最后需要在自己需要进行集群的应用的Web.xml中加入如下配置web#如下是新添加的元素,表示session可以在集群中共享5.注意:在集群中的应用需要放入到Session中的对象发源实现Serializable接口。6.测试启动所有的tomcat和Apache服务器,访问: http:/localhost/ 即可访问我们的应用。5 专题讨论5.1 Tomcat集群中,是否需要Session共享?当多个tomcat进行集群后,为了保证当一个应用瘫痪的时候,其它的应用还能无间断的为用户服务,那么就需要在每个集群的服务器上共享用

27、户的Session,但当共享了用户的sessioin以后,又会带来一个问题,用户的session需要在各个服务器上同步,如果session的变化很频繁,那么为了同步session而带来的网络开销和服务器的开销也是不可忽视的。下面来结合两种不同的情况进行分析。1. 共享Session发送消息给参与集群的所有服务器TomcatATomcatBTomcatCTomcatDSessionASessionBSessionASessionBSessionASessionBSessionASessionBSessionA.setAttribute(“a”,c)SessionA.setAttribute(“a”,c)SessionA.setAttribute(“a”,c)SessionA.setAttribute(“a”,c)用户的请求导致Session属性变化当某个用户的请求导致Session的内容发生变化的时候,需要向每个吃大锅饭集群的服务器发送消息,告知Session的变化。结合上图,来总结下使用共享Session的特点:优点: 保存用户Session,交互性好

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论