Tomcat和Apache集群for windows 2.docx
《Tomcat和Apache集群for windows 2.docx》由会员分享,可在线阅读,更多相关《Tomcat和Apache集群for windows 2.docx(15页珍藏版)》请在冰豆网上搜索。
Tomcat和Apache集群forwindows2
Apache+Tomcat集群配置
(Windows)
目录
一、准备环境:
3
Apache2.2.22、Tomcat6.0、mod_jk-1.2.31-httpd-2.2.33
1.Apache:
3
2.Jk:
3
3.tomcat:
4
4.现场集群要求:
4
二、配置过程4
1.修改apache配置:
4
2.配置tomcat9
三、测试项目11
四、Session测试13
Tomcat和Apache集群和负载均衡配置
一、准备环境:
操作系统
IP
备注
主机1
Windowsserver2003x64
192.168.132.99
同网段
主机2
Windowsserver2003x64
192.168.132.100
所需软件
Apache2.2.22、Tomcat6.0、mod_jk-1.2.31-httpd-2.2.3
由于现场环境所限,以下截图均为模拟现实环境的虚机部署截图。
1.Apache:
Apache是http服务器,我们利用其对Tomcat进行负载均衡。
下载地址为:
http:
//httpd.apache.org/download.cgi#apache22。
下载后直接安装msi即可,如果没有其他的http服务器(如iis)则应该可以成功安装,端口即为80,能够访问http:
//localhost/说明安装成功。
注:
如果80端口被占用可改apache默认端口,在apache安装目录中:
\ApacheSoftwareFoundation\Apache2.2\conf\httpd.conf文件中修改端口等,如下图
2.Jk:
JK是通过AJP协议与Tomcat服务器进行通讯的,Tomcat默认的AJPConnector的端口是8009。
JK本身有两个版本分别是1和2,其中版本2早已经废弃了,以后不再有新版本的推出了,所以建议采用版本1。
下载地址:
http:
//archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/;
这里选择的是mod_jk-1.2.31-httpd-2.2.3.so,如果http服务器是Apache2.0.x版本,则必须选择mod_jk-1.2.31-httpd-2.0.52.so;
其实Apache2.2已经集成Tomcat插件模块了,可以不用JK插件就可以实现Tomcat负载均衡,但就稳定性而言,建义采用JK方式。
3.tomcat:
既然在本地需要多个节点,那么需要下载ZIP版本的Tomcat。
下载地址:
http:
//archive.apache.org/dist/tomcat/tomcat-6/v6.0.35/bin/。
注:
集群时,建议使用统一的tomcat版本;
4.现场集群要求:
根据客户要求,集群环境主机为192.168.132.99和192.168.132.100;操作系统均为windowsserver200364bit。
要求每台主机分别部署一个Apache和三个Tomcat(Tomcat分别为号百应用、工作流和权限系统),每台主机Apache分别对两台主机上的相同Tomcat进行集群管理,并最终通过F5对两个Apache进行负载。
二、配置过程
1.修改apache配置:
1).将下载的JK插件mod_jk-1.2.31-httpd-2.2.3.so复制到Apache安装目录的modules目录下,如下图:
2).新建并编辑workers.properties文件(放到Apache安装目录的conf目录下),内容如下:
#Definelistofworkersthatwillbeused
#formappingrequests
worker.list=app,authSys,workflowSys,status
#DEFAULTCONFIGFORWORKERS
worker.default.type=ajp13
worker.default.lbfactor=1
worker.default.socket_keepalive=true
worker.default.recovery_options=3
#worker.default.connection_pool_minsize=16
#worker.default.connection_pool_size=1024
#worker.default.connection_pool_timeout=3000
#worker.default.reply_timeout=300000
#disableretries,wheneverapartoftherequestwassuccessfullysendtothebackend
worker.template.recovery_options=3
worker.app1.reference=worker.default
worker.app2.reference=worker.default
worker.auth1.reference=worker.default
worker.auth2.reference=worker.default
worker.wf1.reference=worker.default
worker.wf2.reference=worker.default
#Defineapp1
#modifythehostasyourhostIPorDNSname.
worker.app1.port=32473#对应tomcat配置文件server.xml中Connectorport="8009",默认8009
worker.app1.host=192.168.132.100#指定tomcat的主机地址
#Defineapp2
#modifythehostasyourhostIPorDNSname.
worker.app2.port=28009#对应tomcat配置文件server.xml中Connectorport="8009",默认8009
worker.app2.host=192.168.132.99#指定tomcat的主机地址
#Defineauth1
#modifythehostasyourhostIPorDNSname.
worker.auth1.port=38009#对应tomcat配置文件server.xml中Connectorport="8009",默认8009
worker.auth1.host=192.168.132.100#指定tomcat的主机地址
#Defineauth2
#modifythehostasyourhostIPorDNSname.
worker.auth2.port=48009#对应tomcat配置文件server.xml中Connectorport="8009",默认8009
worker.auth2.host=192.168.132.99#指定tomcat的主机地址
#Definewf1
#modifythehostasyourhostIPorDNSname.
worker.wf1.port=58009#对应tomcat配置文件server.xml中Connectorport="8009",默认8009
worker.wf1.host=192.168.132.100#指定tomcat的主机地址
#Definewf2
#modifythehostasyourhostIPorDNSname.
worker.wf2.port=2473#对应tomcat配置文件server.xml中Connectorport="8009",默认8009
worker.wf2.host=192.168.132.99#指定tomcat的主机地址
#Load-balancingbehaviour
worker.app.type=lb
worker.app.balance_workers=app1,app2#指定负载的tomcat列表,用逗号分隔
#Loadbalancingmethodcanbe[R]equest,[S]ession,[T]raffic,or[B]usyness
#worker.app.method=S
#配置session会话是否为粘性
#这样负载均衡器lb就会尽量保持一个session,也就是使用户在一次会话中跟同一个Tomcat进行交互
#如果sticky_session设为true时,此处sticky_session_force一般设为false
worker.app.sticky_session=true
worker.app.sticky_session_force=false
worker.app.max_reply_timeouts=10
#Load-balancingbehaviour
worker.authSys.type=lb
worker.authSys.balance_workers=auth1,auth2#指定负载的tomcat列表,用逗号分隔
#Loadbalancingmethodcanbe[R]equest,[S]ession,[T]raffic,or[B]usyness
#worker.authSys.method=S
worker.authSys.sticky_session=true
worker.authSys.sticky_session_force=false
worker.authSys.max_reply_timeouts=10
#Load-balancingbehaviour
worker.workflowSys.type=lb
worker.workflowSys.balance_workers=wf1,wf2#指定负载的tomcat列表,用逗号分隔
#Loadbalancingmethodcanbe[R]equest,[S]ession,[T]raffic,or[B]usyness
#worker.workflowSys.method=S
worker.workflowSys.sticky_session=true
worker.workflowSys.sticky_session_force=false
worker.workflowSys.max_reply_timeouts=10
#Statusworkerformanagingloadbalancer
worker.status.type=status
#这里可以配置任意多个Tomcat,此处配置了6个Tomat服务器,所以为了它们都能够顺利启动起来,服务器端口都是不同的(一般不再同一机器上,没必要改端口的。
)
3).新建并编辑mod_jk.conf文件(放到Apache安装目录的\conf\extra\目录下),内容如下:
#加载mod_jkModule
LoadModulejk_modulemodules/mod_jk-1.2.31-httpd-2.2.3.so(此处为实际mod_jk模块版本)
#指定workers.properties文件路径
JkWorkersFileconf/workers.properties
#指定哪些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
#指定*.do也进行分流就再加一行
#JkMount/*.docontroller
#对所有的请求进行分流
JkMount/*controller
4).修改httpd.conf文件(在apache安装目录的conf目录下),找到conf目录下的httpd.conf,在文件的最后一行添加(注:
D:
\ProgramFiles\ApacheSoftwareFoundation\Apache2.2为apahe安装目录,部署时根据实际安装目录修改):
include"D:
\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\conf\mod_jk.conf"
2.配置tomcat
配置两台Tomcat服务器,将每台Tomcat解压后复制3份,将每个文件夹分别命名为app1/2、auth1/2、wf1/2,修改每一份的server.xml配置,将Tomcat1(\tomcat1\conf\server.xml)中修改部分如下图:
注:
若两个tomcat都在同一台机子上,则将两个tomcat端口区分开来(以下各图仅供参考)
将Tomcat2(\tomcat2\conf\server.xml)中修改部分如下图:
与
注意:
由于现场服务器已经是在服务器集群之中,所以要在Clusterclassname下加入如图,用以区分已有集群。
三、测试项目
建立test项目,需要在项目的web.xml中添加,如下图:
建立test2.jsp,内容如下:
<%@pagecontentType="text/html;charset=GBK"%>
<%@pageimport="java.util.*"%>
ClusterAppTestServerInfo:
<%
out.println(request.getLocalAddr()+":
"+request.getLocalPort()+"
");%>
<%
out.println("
ID"+session.getId()+"
");
//如果有新的Session属性设置
StringdataName=request.getParameter("dataName");
if(dataName!
=null&&dataName.length()>0){
StringdataValue=request.getParameter("dataValue");
session.setAttribute(dataName,dataValue);
}
out.println("Session列表
");
System.out.println("============================");
Enumeratione=session.getAttributeNames();
while(e.hasMoreElements()){
Stringname=(String)e.nextElement();
Stringvalue=session.getAttribute(name).toString();
out.println(name+"="+value+"
");
System.out.println(name+"="+value);
}
%>
名称:
值:
四、Session测试
将项目部署到2个服务器,然后分别启动Apache和2个Tocmat服务器,这些Tomcat启动顺序随意,然后打开http:
//localhost:
81/test/test2.jsp
F5刷新页面,看session值
其中:
81端口对应于apache配置的端口。
将项目部署到2个服务器,然后分别启动Apache和2个Tocmat服务器,这些Tomcat启动顺序随意,然后打开http:
//localhost/test/test2.jsp,结果如下图:
F5刷新页面,分别出现:
多次刷新页面的sessionID看是同一个ID,说明session是复制成功了。
那么session中的存储的东西呢,在输入框中分别输入1、1,2、2,3、3后,显示结果如下图:
以上的测试说明,集群中的session已经共享,每个集群对于同一访问均有相同的session,而且session中存储的变量也复制了。