Web服务器基于Apache集群与负载均衡之Tomcat篇_第1页
Web服务器基于Apache集群与负载均衡之Tomcat篇_第2页
Web服务器基于Apache集群与负载均衡之Tomcat篇_第3页
Web服务器基于Apache集群与负载均衡之Tomcat篇_第4页
Web服务器基于Apache集群与负载均衡之Tomcat篇_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、Web服务器基于 Apache集群与负载均衡之Tomcat篇编制: 桂双林 日期: 2012年1月审核: 日期:批准: 日期:汇签:Web服务器基于 Apache集群与负载均衡之Tomcat篇修订记录Tomcat 第1页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇目 录3.33.44.45.4 背景 . 3 集群背景与发展 . 3 集群与云计算 . 4 TOMCAT集群原理 . 5 Tomcat集群组件 . 5 Tomcat集群结构 . 5 安装运行环境 . 6 准备安装软件 . 6 安装

2、Apache . 6 安装Tomcat . 6 安装JK组件 . 6 TOMCAT负载均衡 . 7 Tomcat端口配置 . 7 Apache配置 . 8 平均请求测试 . 10 邦定请求测试 . 12 TOMCAT集群 . 15 Apache配置 . 15 Tomcat配置 . 15 测试工程配置 . 16 集群之后测试 . 17 Tomcat 第2页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇1 背景群集技术与研究方向目前已非常成熟,本文不对集群技术再做详细介绍,也不对集群中的服务器硬件、网络适配器、第五层交换、第七层交换技术做讲述,直接以WEB集群的例子来展现集

3、群技术的简单应用。1.1 集群背景与发展本文的集群指WEB服务器集群,只是集群技术中很小的分支。随着业务与需求的增长WEB服务器访问量不断的增加,客户对产品的负载能力与稳定性随之提高,在单一WEB服务器的架构中已经难以达到用户的需求,在进一步提高产品的质量外,需要寻求更可靠的技术支持。市场需要我们回答以下问题在产品稳定的情况下,如何面对不断增长的访问量?在现有硬件的基础下,如何更进一步发挥硬件的性能?WEB应用突发停止后,如何保证继续为客户提供服务?在更换新版本系统时,如果保证不间断的提供服务?上面的问题是在所有WEB系统开发、运行、维护过程中都会碰到的问题。如果要解决这个问题则首先要采用:W

4、EB服务器系统集群技术。系统集群在技术上还有很多问题尚未解决,不过,对于基本的WEB集成解决方案业界已经有了成熟的技术。采用集群技术之后解决WEB服务器容量带来的巨大挑战,服务器资源终究是有限的,大容量服务器对用户来说是一笔巨大的开支,也无法保障原来的投入,同时也解决不了根本问题。WEB系统集群技术为系统容量、扩展问题提供了良好的途径,同时又能保护用户的投资,它能把一组服务器通过一定形式组织起来,对外提供强大的服务能力,也能在同一服务器上部署多个相同系统集群充分挖掘服务器的潜力。这种结构具有很高的性价比和良好的可靠性,并且可以通过增加虚拟服务器与物理服务器的方式不断的扩充系统容量,因此,WEB

5、服务器集群已经成为构建大型网站系统的关键技术之一。 Tomcat 第3页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇1.2 集群与云计算集群是一个非常专业的学科,专业化的集群需要非常特殊的硬件与软件支持,在复杂的集群中有些几乎需要设置相同的硬件,并且运行特殊的操作系统版本才能保证他们同步。如果在网络底层进行集群还需要使用特殊的网络适配器来保证集群计算机的高速数据同步,要把不同地区的服务器集群还需要高速专用网络的支持。数据同步方面,在集群WEB服务器时其中最典型的一点就是服务器间的Session同步问题。集群对各种条件要求比较高,它能实现高可用性,高稳定性,虚拟存储管理

6、,服务器故障平滑转移及灾难恢复等复杂的应用,但是复杂的集群实现成本非常高,又难以对外提供商业化服务是阻碍其发展的重要原因。云计算是从集群技术、网络计算、分布式计算等技术发展起来的一种新应用服务形式,是建立在原来的基础之上隔离了集群技术的复杂性,直接以服务的形式交付给客户使用。从应用上来说云是位于集群、分布式技术等等的上层,它把硬件、软件、操作系统与用户隔离,用户看到的只是公开的网络服务、是可选择的网络商品,不需要了解背后采用什么技术、使用什么操作系统等等。隔离了复杂技术的云计算,重点关注的是对外提供高质量的商业服务。Tomcat 第4页,共18页Web服务器基于 Apache集群与负载均衡之T

7、omcat篇2 TOMCAT集群原理2.1 Tomcat集群组件操作系统:WindowsHttp服务器:ApacheApache模块:Mod_JKWeb服务器:Tomcat2.2 Tomcat集群结构Tomcat 第5页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇3 安装运行环境3.1 准备安装软件操作系统:windows(本文只测试了windows环境)Http服务器:Apache 版本为httpd-2.2.21-win32-x86-openssl-0.9.8r.msi,下载地址Apache模块:Mod_JK 版本为mod_jk-1.2.31-httpd-2.2.3

8、.so,下载地址 注意下载版本JK后所注明的http服务器版本一定要与 Apache版本相同或相近。Web服务器:Tomcat版本这里采用 Tomcat5.0.28是比较老的版本,也可以采用 5.5.X或6.X等新版本,下载地址 / 下载压缩版,这样便于复制安装。3.2 安装Apache下载完成之后,运行程序安装Apache,只要按默认设置进行安装即可,安装位置可以自己选择,本文安装目录为:D:Program FilesApache Software FoundationApache2.2。默认安配置装的Apache是 80端口为HTTP端口。3.

9、3 安装Tomcat本文要集群三个独立的Tomcat,所以把下载后的压缩包解压后复制三份到不同目录,本文目录为:D:Tomcat5.0_8080; D:Tomcat5.0_8081 ; D:Tomcat5.0_8082 。3.4 安装JK组件以本文为例把JK组件包mod_jk-1.2.31-httpd-2.2.3.so复制到Apache目录D:Program FilesApache Software FoundationApache2.2modules 下。Tomcat 第6页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇4 TOMCAT负载均衡4.1 Tomcat端口

10、配置安装环境之后,本文中Apache服务器要与3个Tomcat进行集成,为方便测试3个Tomcat都运行在同一台机器上,为了解决Tomcat端口冲突问题必须重新进行设置,端口分配如下表:如果三台服务器运行在不同的电脑中则不需要修改。找到Tomcat配置文件修改端口,Tomcat配置文件目录为Tomcat5.0confserver.xml依次修改D:Tomcat5.0_8080 , D:Tomcat5.0_8081 , D:Tomcat5.0_8082中的配置文件,用记事本打开文件直接采用查找替换方式,按上表把原来的四个端口修改成新值。注意事项:server.xml 配置文件中proxy 的80

11、20端口内容是被注释掉的,需要去掉注释。 完成修改后,测试运行3个Tomcat如下图:Tomcat第7页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇正常启动后,请注意各服务器的端口是不是正确的配置,如果没问题,则这部分配置顺利完成。4.2 Apache配置1 找到Apache服务器配置文件D:Program FilesApache Software FoundationApache2.2confhttpd.conf2 用记事本打开httpd.conf文件,在最后增加一行代码:Include conf/mod-jk.conf3 在httpd.conf文件同目录下创建mo

12、d-jk.conf 文件,全部代码如下:#加载mod_jk模块,注意名称与modules目录下的文件名保持一致.LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so#指定perties文件目录.JkWorkersFile conf/perties#指定那些请求交给tomcat处理,controller为pertise文件里指定的负载控制器. JkMount /* controller#JkMount /*.html controller#JkMount /*.jsp

13、controller#JkMount /*.do controllerJkMount /servlet/* controller#JkUnMount /index.html controller#关掉主机Lookup, 如果为on很影响性能.HostnameLookups Off4 在httpd.conf文件同目录下创建pertise 文件,全部代码如下:Tomcat 第8页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇worker.list=controller,tomcat1,tomcat2,tomcat3 #server群集列表,tomcat

14、名称与Tomcat配置Service.xml的jvmRoute名称一致#=tomcat1=worker.tomcat1.port=8020 #指定 tomcat1 服务器 AJP 的端口,默认为8009worker.tomcat1.host=localhost #指定 tomcat1 服务器IP 或域名worker.tomcat1.type=ajp13 #指定 tomcat1与apache AJP通讯协议worker.tomcat1.lbfactor=1 #指定负载平衡因数,只有启用了负载平衡才有用.#=tomcat2=worker.tomcat2.port=8021 #指定 tomcat2

15、服务器 AJP 的端口,默认为8009worker.tomcat2.host=localhost #指定 tomcat2 服务器IP 或域名worker.tomcat2.type=ajp13 #指定 tomcat2与apache AJP通讯协议worker.tomcat2.lbfactor=1 #指定负载平衡因数,只有启用了负载平衡才有用.#=tomcat3=worker.tomcat3.port=8022 #指定 tomcat3 服务器 AJP 的端口,默认为8009worker.tomcat3.host=localhost #指定 tomcat3 服务器IP 或域名worker.tomca

16、t3.type=ajp13 #指定 tomcat3与apache AJP通讯协议worker.tomcat3.lbfactor=1 #指定负载平衡因数,只有启用了负载平衡才有用.#=controller 负载平衡控制器=worker.controller.type=lb #指定 controller 类型worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3 #指定负载平衡的tomcat worker.controller.sticky_session=true #指定是否粘性 sessionworker.controller.st

17、icky_session_force=false# session 配置说明:#当sticky_session,sticky_session_force都为true时不复制session,#sticky_session_force=false 指集群中某台服务器多次请求没有响应, 则转发到其它服务器处理,Tomcat 第9页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇#sticky_session=false 不使用粘性session,同时配置不复制session时, 注意转发请求后可能会找不到原来的session.完成后启动Apache 在状态栏中可看到已集成 JK

18、模块,如图所示:虽然已经看到集成了JK模块,但是还不知道是不是顺利完成了负载均衡配置,下面我们进行测试。4.3 平均请求测试确保上述步骤操作正确后,接下来部署一下工程进行测试。1 部署一个test测试工程假设大家都知道部署。2 编写一个jsp测试页在test工程的根目录新建一个test.jsp测试文件,全部代码如下:<% page language="java" contentType="text/html;charset=UTF-8"%><% /应用程序地址.String sId =request.getSession().getId

19、();String path = request.getContextPath();Tomcat 第10页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇String basePath =request.getScheme()+":/"+request.getServerName()+":"+request.getServerPort()+path; /应用程序物理目录.String appPath = request.getSession().getServletContext().getRealPath("/"

20、;);System.out.println(appPath+" -Test JSP-");%><html><head><title>测试JSP页面</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><form method="POST" action="" name=&quo

21、t;form1"><table width="100%" border="1" cellspacing="2" cellpadding="3"><tr><th>测试JSP页面:</th></tr></table><table width="100%" border="1" cellspacing="2" cellpadding="3">&

22、lt;tr><th>名称:</th> <th>内容:</th></tr><tr><td>首页地址:</td> <td><%=basePath%></a></td></tr><tr><td>WEB程序目录:</td> <td><%=appPath%></td></tr><tr><td>Session Id</td> &

23、lt;td><%=sId%></td></tr><tr><td></td> <td></td></tr></table></body></html>3 依次启动Apache,Tomcat1,Tomcat3,Tomcat3访问测试页 http:/localhost/test/test.jsp 显示如下图。Tomcat 第11页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇对测试页进行多次访问,本例测试访问6次,每次检查3个T

24、omcat服务器的控制台窗口,发现一个现象:如果第一次访问是Tomcat1,第二次变为Tomcat2,第三次则是Tomcat3,第四次又回到Tomcat1,3个服务器是进行轮流处理请求,现在已经实现了负载均衡的目的。现在已经完成3个WEB服务器负载均衡配置,并且3个服务器是平均分配用户请求。4.4 邦定请求测试邦定请求方式,就是定义首次请求的服务器为最高优先分配,只要客户没有关闭IE,以后每一Tomcat 第12页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇次请求都交给同一服务器处理。这样做的好处是用户只需登录一次,以后都是同一服务器处理,登录Session没有改变,

25、不需要进行再次登录。打开server.xml 找到如图中配置:<Engine name="Catalina" defaultHost="localhost" debug="0"> 修改成:<Engine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="tomcat1"> 结果如图。测试的三个服务器的jvmRoute配置名称不能相同,请按下表修改。配置完成后,依次

26、启动Apache,Tomcat1,Tomcat3,Tomcat3访问测试页 http:/localhost/test/test.jsp 注意:Tomcat1,Tomcat3,Tomcat3 的名称在必须与 pertise文件里的名称配对。第一次访问如下图,SessionId与前面的不一样,在后面增加了Tomcat1的名称:第二次访问如下图,明显可以看出是访问同一服务器,并且SessionId都相同:Tomcat 第13页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇经过测试,在没有关闭IE的情况下多次访问都是提交给同一服务器处理,并且Session

27、Id保持不变,其它的服务器没有接到请求,请看Tomcat1后台窗口:为了验证多用户情况,又重新打开一个新的IE,发现新IE请求交给了Tomcat2处理,并且新IE多次刷新请求后,仍然是交给Tomcat2处理。到现在Tomcat负载均衡配置已顺利完成,下面讲述怎么样把这三个独立的WEB服务器进行集群。Tomcat 第14页,共18页Web服务器基于 Apache集群与负载均衡之Tomcat篇5 TOMCAT集群虽然上面已经完成了负载均衡,但是三个服务器还是独立工作,没有形成一个整体,他们之间没有同步数据,基本的Session也没有复制,如果其中一个服务器关闭,请求会转发到另一个活动的服务器,新的

28、服务器是没有原来的Session数据,客户必须再次登录,这种情况不能在实际应用发生,要解决这个问题,需要用到Web服务器集群来实现Session在所有服务器上同步复制。5.1 Apache配置在上一节中Apache基本已经配置完成,这里不需要再修改,最主要的是配置 pertise 文件,这里只对重要的部分进行说明。配置是否使用粘性 Session的选项:worker.controller.sticky_session。类似帮定,指某web服务器产生的Session,在下次客户用相同Session再访问服务器时仍然转发到相同的web服务器(必须指定好web服务器路由配置才行,就是配置jvmRou

温馨提示

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

评论

0/150

提交评论