当前位置: 首页 > 科技观察

Linux下搭建tomcat集群全记录

时间:2023-03-15 01:30:49 科技观察

1.预期目标本文将介绍如何在Linux下搭建tomcat集群,以及搭建过程中可能遇到的问题及解决方法。为了简单起见,本文搭建的集群只由两个tomact节点和一个apache组成。三者将安装在同一台机器上:apa??che:安装路径:/usr/local/apache2端口:90tomcat1:安装路径:/usr/local/apache-tomcat-6.0.33-1端口:6080tomcat2:安装路径:/usr/local/apache-tomcat-6.0.33-2端口:70802最新版apache所需软件列表:2.2.21本文采用源码方式安装,源码包下载地址:http://labs。renren.com/apache-mirror//httpd/httpd-2.2.21.tar.gz其他版本下载地址参考:http://httpd.apache.org/download.cgitomcat6最新版本:6.0.33本文使用自解压的tar.gz包进行安装,下载地址:http://labs.renren.com/apache-mirror/tomcat/tomcat-6/v6.0.33/bin/apache-tomcat-6.0.33.tar.gz其他版本下载地址见:http://tomcat.apache.org/download-60.cgiApacheTomcatConnector(即mod_jk)最新版本:JK-1.2.32本文采用源码安装,源码包下载地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.32-src.tar.gz其他版本下载地址参考:http://tomcat.apache.org/下载连接器.cgi3。软件安装3.1安装apache1。进入下载的httpd-2.2.21.tar.gz文件所在目录,执行解压操作:tar-zxvfhttpd-2.2.21.tar.gz2。进入解压文件夹根目录:cdhttpd-2.2.213。配置编译参数:./configure--prefix=/usr/local/apache2--enable-mods-shared=allaboutconfigureparameters更多信息请参考:http://httpd.apache.org/docs/2.2/en/programs/configure.html#installationdirectories4。编译安装:makemakeinstall5。启动和关闭apache完成以上步骤后,apache的安装就结束了现在,使用以下命令启动和关闭apache:启动:/usr/local/apache2/bin/apachectlstart关闭:/usr/local/apache2/bin/apachectlstop3.2关于报CannotuseanexternalAPRwithduringtheinstallationofapacheThebundledAPR-util报错的解决方法有时候安装apache执行./configure操作会报这个错。解决方法是安装apache2.2.x本身自带的apr。方法是:1.从源码安装目录httpd-2.2.21进入apache2.2.x自带apr安装目录cdsrclib/apr2。安装apr(这里安装在/usr/local/apr下,如果系统已经安装过apr,可以找到安装目录override)/configure--prefix=/usr/local/aprmakemakeinstall3.安装apr-util./configure--prefix=/usr/local/apr-util--with-apr=/usr/local/aprmakemakeinstall4。使用新安装的apr重新编译apache的配置,放回安装根目录httpd-2.2.21,执行:./configure--prefix=/usr/local/apache2\--enable-mods-shared=all\--with-apr=/usr/local/apr\--with-apr-util=/usr/local/apr-util/bin补充:如果你安装的是apache-2.4以上版本,有以下区别:1.需要分别下载apr和apr-utilapr下载地址:http://mirror.bjtu.edu.cn/apache//apr/apr-1.4.6.tar.bz2apr-util下载地址:http://mirror.bjtu.edu.cn/apache//apr/apr-util-1.4.1.tar.bz22。另外还需要安装pcre。到http://pcre.org/下载pcre,解压进入源码目录执行./configure--prefix=/usr/local/pcre3。最后,在安装apache的时候,configure需要这样配置/configure--prefix=/usr/local/apache2\--enable-mods-shared=all\--with-apr=/usr/local/apr\--with-apr-util=/usr/local/apr-util/bin--with-pcre=/usr/local/pcre#p#3.3安装ApacheTomcat连接器(mod_jk)1。进入下载的tomcat-connectors-1.2.32-src.tar.gz文件所在目录,执行解压操作:tar-zxvftomcat-connectors-1.2.32-src.tar.gz2。进入解压文件夹native子目录下:cdtomcat-connectors-1.2.32-src/native3。配置编译参数:./buildconf.sh./configure--with-apxs=/usr/local/apache2/bin/apxs\--with-java-home=$JAVA_HOME--with-java-platform=2\---启用-jni4。编译安装:makemakeinstall如果成功结束,可以在/usr/local/apache2/modules/下找到mod_jk.so文件3.4安装tomcat将下载的apache-tomcat-6.0.33.tar.gz文件两次解压到/usr/local/,分别重命名为apache-tomcat-6.0.33-1和apache-tomcat-6.0。33-24。集群配置4.1配置tomcat1.修改端口tomcat的配置主要集中在conf/server.xml文件。首先,由于两个tomcat实例运行在同一台机器上,所以需要修改server.config中配置的所有端口。端口号按照一个简单的规则统一改变,比如在原来的端口号上加1000或者减1000。基于此原则,apache-tomcat-6.0.33-1的连接端口改为6080,apache-tomcat-6.0.33-2的连接端口改为:7080,其他端口配置也遵循此原则.2.启用tomcat集群支持也在conf/server.xml文件中,做两处改动:改动一:setjvmRoutefor其实在server.xml中有一个现成的和jvmRoute的配置,我们可以参考这个配置在中添加一个jvmRoute,特别注意jvmRoute的值:它的值必须和后面提到的mod_jk的workers.properties文件中的节点名一致!由于该文件中的节点名称是tomcat1和tomcat2,因此我们必须将jvmRoute的值设置为这两个值之一。这一点在tomcat关于ApacheTomcatConnector的官方文档http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html中也有明确提到。jvmRoute值将出现在节点创建的会话ID中。例如,在非集群环境下,一个sessionid可能是“xxxxxxxxx”的格式,而在集群环境下,如果当前节点的jvmRtomat1oute配置为tomcat1,则该节点生成的sessionid将变为“xxxxxxxxx.tomat1”格式,而mod_jk就是依靠这个节点后缀来实现stickysession,即所有后缀为tomat1的请求都发送到tomat1节点进行处理。变化二:在添加集群配置在tomcat官方关于tomcat集群配置的文档:http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html中,有一个默认配置:<拦截器类名="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/><拦截器类名="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>这种默认配置可以满足大部分应用场景,因此,我们只需要将这个配置复制到中,tomcat的配置就全部完成了#p#4.2配置apache打开apache安装目录下的conf/httpd.conf文件,在文件末尾添加如下内容:#Loadmod_jkmoduleLoadModulejk_modulemodules/mod_jk.so#指定jk日志文件。JkLogFile/var/log/mod_jk.log#指定jk日志级别[debug/error/info]JkLogLevelinfo#指定workers.properties,这个文件告诉jk:#有多少节点以及它们在哪里。JkWorkersFileconf/workers.properties#指定哪些请求应该由哪个node.JkMount/*controllermod_jk配置项详见:http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html在上面的配置中:JkWorkersFileconf/workers.properties表示一个worker.properties文件描述了集群节点的情况。因此,我们需要创建workers.properties文件并将其放在conf文件夹中。这个文件的内容如下:#所有节点的列表,其中controller是负责负载均衡控制的逻辑节点,#如果JkMount中的URL赋值给了controller,则表示请求会自动hash到一个物理节点。#注意:真正负责处理请求的tomcat的名字(这里是tomcat1,tomcat2)必须和conf/server.xml#文件中配置的jvmRout的属性值保持一致!worker.list=controller,tomcat1,tomcat2#========tomcat1=========worker.tomcat1.port=6009#ajp13端口号,在tomcat下的server.xml中配置,默认8009worker.tomcat1.host=localhost#tomcat的主机地址,如果不是本机请填写ip地址worker.tomcat1.type=ajp13worker.tomcat1.lbfactor=1#server的加权比例,值越高,请求越多More#========tomcat2========worker.tomcat2.port=7009#ajp13端口号,在tomcat下的server.xml中配置,默认8009worker。tomcat2.host=localhost#tomcat的主机地址,如果不是本机请填写ip地址worker.tomcat2.type=ajp13worker.tomcat2.lbfactor=1#server的权重比例,越高#========controller,loadbalancingcontroller========worker.controller.type=lbworker.controller.balance_workers=tomcat1,tomcat2#指定tomcat为共享请求,balanced_workers在旧版本中,不再推荐使用!worker.controller.sticky_session=1#sticky_session为1,#当一个client的session被创建时,client发起的后续请求,即本次session的所有请求总是由第一个请求的结果点来处理#负责处理(除非打结点击挂断)至此,所有配置已经完成。启动两个tomcat和apache后,同时部署一个应用到两个tomcat,通过apache访问应用,观察tomcat后台打印的日志,会发现请求被随机分配到两个tomcat交替执行实现序列化。参考资源:tomcat官方关于tomcat集群配置的文档:http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.htmltomcat官方关于ApacheTomcatConnector的文档http://tomcat.apache.org/connectors-doc/webserver_howto/apache.htmlApache官方apache安装文档http://httpd.apache.org/docs/2.2/en/install.htmlApache官方关于配置参数的文档http://httpd.apache.org/docs/2.2/en/programs/configure.html#installationdirectories原文链接:http://blog.csdn.net/bluishglc/article/details/6867358