目录文档目的…………………………………………………………………………………………1软件工具介绍…………………………………………………………………………………....1为什么要配置tomcat负载平衡和集群………………………………………………………...1简单原理介绍……………………………………………………………………………………2Windows下的具体配置…………………………………………………………………………3Linux下的具体配置……………………………………………………………………………..8结论……………………………………………………………………………………………….11配置问题与解答…………………………………………………………………………………11详细配置附录…………………………………………………………………………………….111.不同类型的workers…………………………………………………………………………122.workers.properties列出一个workers的详细配置……………………………………………….133.列举不同类型worker的配置实例……………………………………………………………..144.tomcat的server.Xml中的各个节点……………………………………………………………155.cluster中的各个属性节点……………………………………………………………………..16Tomcat负载平衡和集群文档目的:1.用apache+jk+tomcat实现windowsxp和linux下的webserver负载平衡和集群。2.介绍更多关于apache,jk,tomcat的详细配置软件工具介绍:Apache:是前端web服务器,用来接收客户端的请求Jk:是tomcatConnector,用于把apache接收到的请求分发给tomcat来处理Tomcat:也是web服务器,但在这里主要充当servlet容器,用来处理jk转发过来的请求。为什么要配置Tomcat负载平衡和集群:负载平衡:负载平衡能处理高并发量的请求Tomcat集群:Tomcat集群配合负载平衡可以是系统达到高可用性,即任何一台服务器不可用,自动重新连接后,能保持session数据一致,不需要重新输入密码。简单原理介绍:1.apatche与tomcat的之间的联系由jk完成,用的是ajp协议。每个tomcat都在监听ajp端口。默认的AJPConnector的端口是8009。2.配置了集群的tomcat之间通过tcp协议通信复制session,当然要在tomcat应用中的web.xml文件中加入distributable/或Contextdistributable=true/,标志着要复制session。复制session是为了在某个服务器正在被请求时宕机,请求由apache通过jk转发到其他tomcat服务器时,session中的信息丢失采取的一中保持session的方式,还有其他的解决方案,如把session存到数据库中。3.jk把请求分配给某个tomcat服务器遵循着不同的原则,这里我们使用的是负载平衡。在workers.properties中定义了很多worker,如果worker的type把定义成lb,就表示这个worker是负载平衡worker,他知道怎样提供轮询来分配request。而负载平衡也分很多平衡的方式,采用哪种方式决定于属性worker.balancer.method;下面具体描述不同的负载平衡方式(默认的是R方式)。worker.balancer.method=Request(简写R):负载平衡worker将根据每个tomcat服务器上处理的request数来寻找最佳的tomcat服务器。这种方式适合绝大数application。worker.balancer.method=Session(简写S):负载平衡worker根据各个tomcat上session的数量来寻找最佳tomcat,但是负载平衡worker并没有状态,所以不知道session个数,所以把没有sessioncookie的请求或url中没有encodesessionid的请求当作newsession。worker.balancer.method=Traffic(简写T):负载平衡worker根据jk和tomcat直接的网络状况来找最佳的tomcat服务器。worker.balancer.method=Busyness(简写B):负载平衡worker根据tomcat的流量选择流量最少的tomcat。windows下的具体配置:软件系统环境:操作系统:windowsxp前端服务器:apache_2[1].0.55-win32-x86-no_ssl.zip负载平衡器:mod_jk-1.2.27-httpd-2.0.63.so集群节点:apache-tomcat-5.5.27.zip配置步骤:1.下载以上软件2.安装apache,并把mod_jk.2.0.55解压后拷贝到apache安装目录(这里为E:\ide\apache\Apache2)/modules下面,其实modules下面是apache的各个功能模块,可插拔;3.安装各个tomcat到不同的主机上4.在apache安装目录下conf目录中找到httpd.conf文件,并在末尾添加:includeE:\ide\apache\Apache2\conf\mod_jk.conf5.在httpd.conf同目录下新建mod_jk.conf文件,内容如下:#加载mod_jkModuleLoadModulejk_modulemodules/mod_jk-apache-2.0.55.so#指定workers.properties文件路径JkWorkersFileconf/workers.properties#指定那些请求交给tomcat处理,controller为在workers.propertise里指定的负载分配控制器(在这里可以分配更多的request给controller如果要在运行时管理负载平衡中的各个worker则应该配置status类型的sworker,并把/jkmanager/*类型的请求分配给sworker,访问jkmanager即可访问,配置方法见详细配置附录)JkMount/*.jspcontroller6.在httpd.conf同目录下新建workers.properties文件,内容如下worker.list=controller,tomcat1,tomcat2#server列表#========tomcat1========worker.tomcat1.port=8009#ajp13端口号,在tomcat下server.xml配置,默认8009worker.tomcat1.host=localhost#tomcat的主机地址,如不为本机,请填写ip地址worker.tomcat1.type=ajp13worker.tomcat1.lbfactor=1#server的加权比重,值越高,分得的请求越多#========tomcat2========worker.tomcat2.port=9009#ajp13端口号,在tomcat下server.xml配置,默认8009worker.tomcat2.host=localhost#tomcat的主机地址,如不为本机,请填写ip地址worker.tomcat2.type=ajp13worker.tomcat2.lbfactor=1#server的加权比重,值越高,分得的请求越多#========controller,负载均衡控制器========worker.controller.type=lbworker.controller.balanced_workers=tomcat1,tomcat2#指定分担请求的tomcatworker.controller.sticky_session=14.修改tomcat配置文件server.xml打开tomcat2/conf/server.xml文件ajp1.3(是用于jk与tomcat之间的通信)Connector的port一定要和workers.properties文件中的一致http/1.1Connector(用于浏览器与tomcat之间的通信)的port指定单个访问此tomcat是用的端口号,如果tomcat在不同的主机上可以不修改这个端口号。Serverport也一样5.配置集群只配置负载均衡还不行,还要session复制,也就是说其中任何一个tomcat的添加的session,是要同步复制到其它tomcat,集群内的tomcat都有相同的session修改tomcat1,tomcat2的server.xml,将集群部分配置的在注释符删掉,并将tomcat2的4001端口改为4002,以避免与tomcat冲突,当然,如果是tomcat安装在不同的主机上,是不用改端口的,去掉注释符即可在每个tomcat节点上的应用(test)中的web.Xml中加入distributable/Contextdistributable=”true”/表明要复制session6.运行每个tomcat节点7.运行apache服务器9.测试:成功的例子:在不同的客户端发起请求,请求会被平均分配给tomcat关闭其中一个tomcat1,tomcat1原来处理的请求会被其他tomcat2接收,如果此前被关闭的tomca1t的session中存在信息,tomcat2中tomcat1的session信息依然存在,表现为登录tomcat宕机请求被转到另外一个tomcat,并仍然处于登录状态Linux下的具体配置:软件系统环境:操作系统:redhat4i386前端服务器:httpd-2.0.63.tar.gz安装在linux下负载平衡器:mod_jk-1.2.27-httpd-2.0.61.so二进制版本集群节点:apache-tomcat-5.5.27.zip安装在windows下配置步骤:一、下载以上软件二、安装apache.下面详细讲解apache的安装步骤:(注意:凡是标记为紫色的,皆为在终端中应该执行的命令,黄色字体为执行结果说明!以下是在linux4下用root用户登陆的状态下测试通过的)A:打开终端,执行以下命令确认编译环境:#system-config-packages#rpm–qgcc执行结果显示gcc-3.4.3-9.EL4,说明gcc已经安装B:进行apache服务器编译安装1.释放源码包文件:将你已经下载的httpd-2.0.63.tar.gz复制到目录“/usr/local/src/”2.进入此目录对httpd-2.0.63.tar.gz进行解压,执行以下命令:#cd/usr/local/src/#tarzxvfhttpd-2.0.63.tar.gzTar命令执行成功后会在当前目录下出现名为“httpd-2.0.63”的目录,执行:#ls显示结果:httpd-2.0.63.tar.gzhttpd-2.0.63说明解压成功进入httpd-2.0.63目录:#cdhttpd-2.0.633.编译前配置,执行以下命令:#./configure–prefix=/usr/local/apache2–enable-so–enable-rewrite说明:--prefix指定要安装到的系统目录--enable-so设置apache服务器可以使用动态加载模块功能--enable-rewrite设置apache服务器具有rewrite功能此命令执行过程需要比较长的时间,屏幕上将显示配置的过程信息4.编译服务器程序,执行命令:#make此命令执行过程需要比较长的时间,屏幕上将显示编译的过程信息5.安装已经编译完成的程序:#makeinstall此命令执行过程需要比较长的时间,屏幕上将