您的位置:首页 > 理论基础 > 计算机网络

Linux环境下,web工程基于httpd和tomcat的集群部署

2015-09-10 13:43 761 查看
一、系统与软件版本

软件版本号
CentOS6.5
JDK1.6.0_45
tomcat7.0.55
httpd2.2.31
二、部署步骤

【条件有限,本次是在同一台机器上进行部署,因此为了避免端口冲突,需要对一下的端口进行修改】

1、首先把已安装好的tomcat复制一份,并更改名字。以本次为例,原tomcat文件夹名为tomcat-7.0.55,复制一份后,更名为tomcat-7.0.55-2

2、更改tomcat-7.0.55-2中的conf目录下的server.xml文件,修改如下

tomcat1tomcat2
shutdown80058006
http80808081
https84438444
ajp80098010
3、分别更改两个tomcat中的conf目录下的server.xml,修改如下:

① tomcat-7.0.55 : <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1">

② tomcat-7.0.55-2 : <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">

这里的worker1/worker2为自定义字符串,为了区分接下来测试中是用到哪个tomcat服务器

【<Engine>标签是每个请求的入口点,用来处理Connector收到的http请求,它将匹配请求和自己的虚拟主机,并把请求转发给对应的Host来处理。】

③ 将<Engine>中的<Cluster>的注释给去掉(<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>)

【Cluster是tomcat的集群配置,默认的配置可以满足一般的开发需求】

4、分别修改两个tomcat的web.xml文件,修改如下:

① 加上<distributable/>标签

【distributable表示该服务器是否可用于分布式处理】

5、配置httpd服务器,配置如下:

① 在安装好的conf目录下,对httpd.conf做配置,添加负载均衡和虚拟主机

NameVirtualHost 10.0.2.15:80
<VirtualHost 10.0.2.15:80>
    ServerName 10.0.2.15:80
    DocumentRoot /usr/local/apache2/htdocs
    ProxyRequests off
    <Proxy balancer://mycluster>
        BalancerMember ajp://10.0.2.15:8009 route=worker1
        BalancerMember ajp://10.0.2.15:8010 route=worker2
        #Proxyset lbmethod=bytraffic scolonpathdelim=On nofailover=off timeout=2
        Proxyset lbmethod=bytraffic stickysession=JSESSIONID|jsessionid scolonpathdelim=On nofailover=off timeout=2
    </Proxy>
    ProxyPass /js !
    ProxyPass /test balancer://mycluster/test
</VirtualHost>


【<Proxy>定义了集群成员列表;route中的值要与tomcat中的server.xml中的jvmRoute相同;最后一行的配置说明:/test的请求交给tomcat集群来处理】

【Proxyset中的stickysession定义了是否session粘贴】

三、测试

1、将写好的项目分别放到两个tomcat的webapps目录下

2、启动两个tomcat以及httpd服务器:

【./startup.sh(启动tomcat)、./apachectl -k start(启动httd服务器)】

3、测试负载均衡【把httpd.conf中Proxyset的stickysession属性暂时注释掉】

① 访问http://lcoalhost/test/test.jsp



② 对页面进行刷新,发现session发生改变



③ 对页面进行不断的刷新,session ID不断的替换

④ 关掉任一tomcat后进行刷新,无论刷新几次sessionID都不会改变

4、测试session复制【把httpd.conf中Proxyset的stickysession属性打开(需要重启httpd服务器)】

① 将上面测试中关闭掉的tomcat打开,现在两个tomcat都应该在运行;

② 进入到测试页,当前的session为worker2,对页面上的表单进行填写并提交:



③ 刷新页面后sessionID不会改变,因此此时在httpd.conf中已经打开了stickysession熟悉,表明该session的全部请求已经交给worker2服务器来处理,这就是【session黏贴】

④ 关闭掉当前处理请求的tomcat服务器(模拟服务器因异常无法继续工作情况),然后刷新页面:



此时的sessionID已经变为worker1,由于worker2无法正常工作,请求转为由worker1服务器来处理。之前session中的值并未丢失,表明session复制已经生效
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: