当前位置:文档之家› 多台服务器tomcat集群

多台服务器tomcat集群

多台服务器tomcat集群集群背景介绍1.1 术语定义服务软体是b/s或c/s结构的s部分,是为b或c提供服务的服务性软件系统。

服务硬体指提供计算服务的硬件、比如pc机、pc服务器。

服务实体通指服务软体和服务硬体。

客户端指接受服务实体服务的软件或硬件。

1.2 两大关键特性集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。

在客户端看来,一个集群就象是一个服务实体,但事实上集群由一组服务实体组成。

与单一服务实体相比较,集群提供了以下两个关键特性:可扩展性--集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。

高可用性--集群通过服务实体冗余使客户端免于轻易遇到out of service的警告。

在集群中,同样的服务可以由多个服务实体提供。

如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。

集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性。

1.3 两大能力为了具有可扩展性和高可用性特点,集群的必须具备以下两大能力:负载均衡--负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源。

错误恢复--由于某种原因,执行某个任务的资源出现故障,另一服务实体中执行同一任务的资源接着完成任务。

这种由于一个实体中的资源不能工作,另一个实体中的资源透明的继续完成任务的过程叫错误恢复。

负载均衡和错误恢复都要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各个资源来说,执行任务所需的信息视图(信息上下文)必须是一样的。

1.4 两大技术实现集群务必要有以下两大技术:集群地址--集群由多个服务实体组成,集群客户端通过访问集群的集群地址获取集群内部各服务实体的功能。

具有单一集群地址(也叫单一影像)是集群的一个基本特征。

维护集群地址的设置被称为负载均衡器。

负载均衡器内部负责管理各个服务实体的加入和退出,外部负责集群地址向内部服务实体地址的转换。

有的负载均衡器实现真正的负载均衡算法,有的只支持任务的转换。

只实现任务转换的负载均衡器适用于支持ACTIVE-STANDBY的集群环境,在那里,集群中只有一个服务实体工作,当正在工作的服务实体发生故障时,负载均衡器把后来的任务转向另外一个服务实体。

内部通信--为了能协同工作、实现负载均衡和错误恢复,集群各实体间必须时常通信,比如负载均衡器对服务实体心跳测试信息、服务实体间任务执行上下文信息的通信。

具有同一个集群地址使得客户端能访问集群提供的计算服务,一个集群地址下隐藏了各个服务实体的内部地址,使得客户要求的计算服务能在各个服务实体之间分布。

内部通信是集群能正常运转的基础,它使得集群具有均衡负载和错误恢复的能力。

(一)环境说明(1)服务器有4台,一台安装apache,三台安装tomcat(2)apache2.0.55、tomcat5.5.15、jk2.0.4、jdk1.5.6或jdk1.4.2(3)ip配置,一台安装apache的ip为192.168.0.88,三台安装tomcat的服务器ip分别为192.168.0.1/2/4(二)安装过程(1)在三台要安装tomcat的服务器上先安装jdk(2)配置jdk的安装路径,在环境变量path中加入jdk的bin路径,新建环境变量JAVA_HOME指向jdk 的安装路径(3)在三台要安装tomcat的服务器上分别安装tomcat,调试三个tomcat到能够正常启动(4)tomcat的默认WEB服务端口是8080,默认的模式是单独服务,我的三个tomcat的WEB服务端口修改为7080/8888/9999修改位置为tomcat的安装目录下的conf/server.xml修改前的配置为修改后的配置为依次修改每个tomcat的监听端口(7080/8888/9999)(5)分别测试每个tomcat的启动是否正常http://192.168.0.1:7080http://192.168.0.2:8888http://192.168.0.4:9999/(三)负载均衡配置过程(1)在那台要安装apache的服务器上安装apache2.0.55,我的安装路径为默认C:\ProgramFiles\Apache Group\Apache2(2)安装后测试apache能否正常启动,调试到能够正常启动http://192.168.0.88(3)下载jk2.0.4后解压缩文件(4)将解压缩后的目录中的modules目录中的mod_jk2.so文件复制到apache的安装目录下的modules目录中,我的为C:\Program Files\Apache Group\Apache2\modules(5)修改apache的安装目录中的conf目录的配置文件httpd.conf,在文件中加LoadModule模块配置信息的最后加上一句LoadModule jk2_module modules/mod_jk2.so(6)分别修改三个tomcat的配置文件conf/server.xml,修改内容如下修改前修改后将其中的jvmRoute="jvm1"分别修改为jvmRoute="tomcat1"和jvmRoute="tomcat2"和jvmRoute="tomcat3"(7)然后重启三个tomcat,调试能够正常启动。

(8)在apache的安装目录中的conf目录下创建文件workers2.propertie,写入文件内容如下#配置第一个服务器tomcatId=tomcat1 #要和tomcat的配置文件server.xml中的jvmRoute="tomcat1"名称一致debug=0lb_factor=1 #负载平衡因子,数字越大请求被分配的几率越高(9)在三个tomcat的安装目录中的webapps建立相同的应用,我和应用目录名为TomcatDemo,在三个应用目录中建立相同WEB-INF目录和页面index.jsp,index.jsp的页面内容如下(10)重启apache服务器和三个tomcat服务器,到此负载均衡已配置完成。

测试负载均衡先测试apache,访问http://192.168.0.88/jkstatus.jsp能否正常访问,并查询其中的内容,有三个tomcat的相关配置信息和负载说明,访问http://192.168.0.88/TomcatDemo/index.jsp看能够运行,能运行,则已建立负载均衡。

(四)tomcat集群配置(1)负载均衡配置的条件下配置tomcat集群(2)分别修改三个tomcat的配置文件conf/server.xml,修改内容如下修改前修改后将集群配置选项的注释放开即可,如上。

(3)在Conf目录下建立jk2.properties文件,写入下面一行,其中端口为相应的Tomcat对应的AJP端口。

channelSocket.port=8009(4)重启三个tomcat。

到此tomcat的集群已配置完成。

(五)应用配置对于要进行负载和集群的的tomcat目录下的webapps中的应用中的WEB-INF中的web.xml文件要添加如下一句配置<distributable/>配置前配置后源地址/injava/blog/item/c8df882f136f21391e30896d.html对上面方法的改进:一、安装apachea、下载最新源文件httpd-2.2.3.tar.gz。

wget/httpd/httpd-2.2.3.tar.gzb、编译一、安装apachea、下载最新源文件httpd-2.2.3.tar.gz。

wget/httpd/httpd-2.2.3.tar.gz b、编译apachegunzip httpd-2.2.3.tar.gztar xvf httpd-2.2.3.tarcd httpd-2.2.3./configure --prefix=/home/apache --enable-so--with-mpm=workermakemake installc、简单配置:编辑httpd.conf,把#ServerName :80项中ServerName前的#号去掉,把xxxxx改成自己的机器全名,212中修改如下#ServerName :80改成ServerName 127.0.0.1d、启动Apache:#cd /home/apache/bin#./apachectl starte、测试Apache是否已经正确运行:http://202.202.202.15二、安装tomcat把主体资源的tomcat拷为/home/tomcat/tomcat11目录cd /home/tomcattar cvf ../tool/tomcat.tar tomcat5 --excludetomcat5/webapps --exclude tomcat5/workcd /home/tooltar xvf tomcat.tarmv tomcat5 ../tomcat/tomcat11修改tomcat的文件目录,将/home/tomcat/tomcat11/conf/server.xmlappBase="webapps"修改为appBase="/home/tomcat/tomcat5/webapps"修改tomcat的端口tomcat1/conf/server.xml<Server debug="0" port="8005" shutdown="SHUTDOWN">改为<Server debug="0" port="11001"shutdown="SHUTDOWN"><Connector URIEncoding="GBK" acceptCount="100" connectionTimeout="20000" debug="0" disableUploadTimeout="true" enableLookups="false" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="8082" redirectPort="8443"/>改为<Connector URIEncoding="GBK" acceptCount="100" connectionTimeout="20000" debug="0" disableUploadTimeout="true" enableLookups="false" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="11002" redirectPort="8443"/> <Connector debug="0" enableLookups="false" port="8009" protocol="AJP/1.3" redirectPort="8443"/>改为<Connector debug="0" enableLookups="false" port="11003" protocol="AJP/1.3" redirectPort="8443"/>cp -fR /home/tomcat/tomcat11 /home/tomcat/tomcat12 cp -fR /home/tomcat/tomcat11 /home/tomcat/tomcat13 cp -fR /home/tomcat/tomcat11 /home/tomcat/tomcat14 将相关端口修改为12001、12002和12003,13001、13002和13003,14001、14002和14003;将标识修改为tomcat12,tomcat13,tomcat14f、启动tomcat:#cd /home/tomcat/tomcat11/bin#./startup.sh#cd /home/tomcat/tomcat12/bin#./startup.sh#cd /home/tomcat/tomcat13/bin#./startup.sh#cd /home/tomcat/tomcat14/bin#./startup.shg、测试tomcat是否已经正确运行:http://202.202.202.15:11002http://202.202.202.15:12002http://202.202.202.15:13002http://202.202.202.15:14002三、apache + 2tomcat的负载均衡a、下载tomcat-connectors的源代码,编译,生成/home/apache/modules/mod_jk.so文件wget/Apache/dist/tomcat/tomcat-conn ectors/jk/source/jk-1.2.19/tomcat-connectors-1.2.19-src.tar .gzgzip -d tomcat-connectors-1.2.19-src.tar.gztar xvf tomcat-connectors-1.2.19-src.tarcd tomcat-connectors-1.2.19-srccd native./configure --with-apxs=/home/apache/bin/apxsmakemake installb、修改httpd.conf配置编辑Apache的配置文件Apache安装目录的conf/httpd.conf把DocumentRoot"/mnt/sdd1/yanfa/vcmresource/apache/htdocs"改成DocumentRoot "/home/tomcat/tomcat5/webapps/ROOT"把<Directory"/mnt/sdd1/yanfa/vcmresource/apache/htdocs">改成<Directory "/home/tomcat/tomcat5/webapps/ROOT">把<IfModule dir_module>DirectoryIndex index.html</IfModule>改为<IfModule dir_module>DirectoryIndex index.jsp index.html </IfModule>取消以下注释#EnableMMAP off#EnableSendfile off改为EnableMMAP offEnableSendfile off#Include conf/extra/httpd-mpm.conf 改为Include conf/extra/httpd-mpm.conf#Include conf/extra/httpd-default.conf 改为Include conf/extra/httpd-default.conf加入以下内容# Jk connectorsInclude conf/mod_jk.conf修改conf/extra/httpd-mpm.conf配置# worker MPM<IfModule mpm_worker_module> StartServers 2MaxClients 150MinSpareThreads 25MaxSpareThreads 75ThreadsPerChild 25MaxRequestsPerChild 0</IfModule>改为# worker MPM<IfModule mpm_worker_module> StartServers 5ServerLimit 60MaxClients 3000MinSpareThreads 25MaxSpareThreads 75ThreadsPerChild 50MaxRequestsPerChild 0</IfModule>d、在conf目录下创建mod_jk.conf文件,内容如下:--------------------------------------mod_jk.conf------------------------------------------# Load mod_jk moduleLoadModule jk_module modules/mod_jk.so# Where to find workers.propertiesJkWorkersFile conf/workers.properties# Where to put jk logsJkLogFile logs/mod_jk.log# Set the jk log level [debug/error/info]JkLogLevel warn# Select the log format# JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "# JkOptions indicate to send SSL KEY SIZE,# JkOptions +ForwardKeySize +ForwardURICompat-ForwardDirectories# JkRequestLogFormat set the request format# JkRequestLogFormat "%w %V %T"# Send JSPs for context / to worker named loadBalancer#JkMount /*.jsp loadBalancer#JkMount /*.do* loadBalancerJkMountFile conf/urimap.properties--------------------------------------------mod_jk.conf------------------------------------在conf目录下创建urimap.properties文件,内容如下:/*=loadBalancer!/*.gif=loadBalancer!/*.jpg=loadBalancer!/*.png=loadBalancer!/*.css=loadBalancer!/*.js=loadBalancer!/*.htm=loadBalancer!/*.html=loadBalancer!/*.mid=loadBalancer!/*.jpeg=loadBalancer!/*.txt=loadBalancer!/*.mp3=loadBalancer!/*.swf=loadBalancer!/*.wmv=loadBalancer!/*.zip=loadBalancer!/*.rar=loadBalancer!/*.pl=loadBalancere、在conf目录下创建workers.properties文件,该文件将告诉apache 每个负载均衡的tomcat服务的运行参数,如机器名和端口号等。

相关主题