Linux环境下,web工程基于httpd和tomcat的集群部署
2015-09-10 13:43
761 查看
一、系统与软件版本
二、部署步骤
【条件有限,本次是在同一台机器上进行部署,因此为了避免端口冲突,需要对一下的端口进行修改】
1、首先把已安装好的tomcat复制一份,并更改名字。以本次为例,原tomcat文件夹名为tomcat-7.0.55,复制一份后,更名为tomcat-7.0.55-2
2、更改tomcat-7.0.55-2中的conf目录下的server.xml文件,修改如下
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做配置,添加负载均衡和虚拟主机
【<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复制已经生效
软件 | 版本号 |
CentOS | 6.5 |
JDK | 1.6.0_45 |
tomcat | 7.0.55 |
httpd | 2.2.31 |
【条件有限,本次是在同一台机器上进行部署,因此为了避免端口冲突,需要对一下的端口进行修改】
1、首先把已安装好的tomcat复制一份,并更改名字。以本次为例,原tomcat文件夹名为tomcat-7.0.55,复制一份后,更名为tomcat-7.0.55-2
2、更改tomcat-7.0.55-2中的conf目录下的server.xml文件,修改如下
tomcat1 | tomcat2 | |
shutdown | 8005 | 8006 |
http | 8080 | 8081 |
https | 8443 | 8444 |
ajp | 8009 | 8010 |
① 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复制已经生效
相关文章推荐
- Caffe学习:使用pycaffe绘制网络结构
- IOS网络第一天 - 02SDWebImage
- C++用法的学习心得(要求包含示例,并反映出利用网络获取帮助的过程)
- IOS网络第一天-01基本的HTTP请求
- C#网络编程
- 同步与异步访问网络
- Java HTTPS客户端如何处理证书
- http://www.cnblogs.com/huangcong/archive/2010/06/14/1757957.html
- 神经网络图灵机(Neural Turing Machines, NTM)
- 用好虚拟网络编辑器
- 移动无线网络长连接 推送技术 已经服务器连接数多时解决策略
- 【转】TCP三次握手和四次握手协议
- HttpClient使用详解
- ios同步、异步请求网络
- OKHttp 使用
- 利用缓存的网络凭据入侵服务器
- HTTP常用状态代码
- netty 简单httpserver实现
- VM虚拟网络编辑器
- curl http_build_query踩过的坑