tomcat+apache+mod_proxy代理模式配置集群
来源:互联网 发布:java spring 日志记录 编辑:程序博客网 时间:2024/05/17 05:55
偶尔接触了一下集群,感觉挺有用的。试着配置了一下,过程中遇到了有些问题,总结一下,以备以后参考。
1.配置环境
JDK1.6,Tomcat6.0,Apache2.2这些基本安装就一笔带过了
2.测试安装情况
Jdk验证 cmd中查看jdk版本java -version jdk1.6.45
tomcat 登录http://localhost:8080 看到小猫
apache 登录http://localhost/ 看到It Works!
Ok ,All right.
3.配置文件的修改
1).Apache配置文件
a.${apache_home}/conf/httpd.conf
Listen 80 ------> Listen 127.0.0.1:80 #这个不一定需要
添加index.jsp到以下代码:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
改为:
<IfModule dir_module>
DirectoryIndex index.html index.jsp
</IfModule>
将一下代码从注释状态释放出来
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
Include conf/extra/httpd-vhosts.conf #虚拟主机配置
文件末尾添加一下代码:
ProxyRequests Off #关闭正向代理
<proxy balancer://cluster>
BalancerMember ajp://192.168.0.111:8009 loadfactor=1 route=jvm1 #ajp是apache和Tomcat的通信协议,端口号要和toamcat配置一直,开始的时候将ajp写成了http造成一直调试不通,页面报503错误
BalancerMember ajp://192.168.0.111:9009 loadfactor=1 route=jvm2
</proxy>
注意:修改了以上文件保存,保存文件后一定需要重启服务,就是在控制面板--》管理工具-->组件服务--》服务 或直接从apache控制面板中的service中启动,重启服务很重要,因为修改后没有重启服务,白白浪费了2个小时在调试上面。
b.${apache_home}/conf/extra/httpd_vhosts.conf
添加以下代码:
<VirtualHost *:80>
ServerAdmin zfy1355@gmail.com
ServerName 192.168.0.111 #本机Ip,刚开始使用127.0.0.1不知道什么原因没有成功,就没有再调试,或许是没有重启服务吧,呵呵
ServerAlias localhost
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On #有说
ProxyPassReverse / balancer://cluster/ #代理反转
ErrorLog "logs/error.log" #错误日志
CustomLog "logs/access.log" common #登录日志
</VirtualHost>
2)Tomcat配置
需要打开server.xml
两台Pc情况:
<Engine name="Catalina" defaultHost="localhost"> --》<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
上面的jvmRoute要和httpd.conf配置的一致。
添加以下集群广播代码,以便session同步:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
上述代码可以在Tomcat的doc中找到。
同一台Pc两只小猫
除了上述修改的位置,还要修改端口。因为是同一台机器,所以不能使用同样的port,在第二只猫的
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
三个位置修改port,笔者分别改为9005,9080,9009。
有朋友说需要修改下面代码中的port,且port值范围为4001-4009,笔者没有修改,Tomcat启动时自动获取了port值
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
3)Tomcat的web.xml
在每只小猫的web.xml中加入以下代码,方便session共享:
<distributable/> <!--位置在</web-app>里面就可以-->
到此就算配置好了。
4.验证
经过以上的配置,集群就算是搭建起来了,启动tomcat,apache服务器,地址栏输入http://localhost/ 是否看到小猫了,看到了证明就是Ok了。
为了证明集群的负载均衡,在Tomcat webapps/examples/目录下生成pressTest.jsp
pressTest.jsp 内容:<%System.out.println("You are Visiting Tomcat X“);%>
X为Tomcat的区别数字
使用apache 的压力测试命令:ab -n1000 -c10http://localhost/examples/pressTest.jsp //-n1000访问1000次 -c10并发10
看两个小猫的控制台,分别打印了各自的输出。
收工,继续学习。
- tomcat+apache+mod_proxy代理模式配置集群
- Apache+Tomcat 集群负载均衡 mod_proxy模式
- Apache+Tomcat+mod_proxy集群
- Apache配置反向代理、负载均衡和集群(mod_proxy方式)
- Apache配置反向代理、负载均衡和集群(mod_proxy方式)
- Apache配置反向代理、负载均衡和集群(mod_proxy方式)
- Apache配置反向代理、负载均衡和集群(mod_proxy方式)
- tomcat集群--整合Apache服务器,采用mod_proxy连接模式
- Apache配置反向代理、负载均衡和集群(mod_proxy方式) 经典
- 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
- (转)基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
- 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
- [服务器]基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置(一)
- [服务器]基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置(二)
- 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置 Peter Wei
- 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
- 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
- apache tomcat 实现集群负载均衡 mod_proxy 方式
- web工程使用ant打war包
- 【项目工具】接触Maven
- C++ primer (第五版)课后题答案(八)
- hdu 5120 题解 Intersection
- 防止表单重复提交
- tomcat+apache+mod_proxy代理模式配置集群
- Unity新UI系统概述——Rich Text
- 使用android手机做鼠标
- eclipse Memory Analyzer进行内存泄漏分析三部曲
- Codeforces Round #275 (Div. 2)
- [iOS_Dev] UITableView 水平放置 自动循环滚动
- 屌炸天-css3水平导航下拉菜单
- 算法导论-第32章-字符串匹配:有限自动机方法(改进版本:预处理阶段复杂度为O(m*| ∑ |) )C++实现
- 第十四周项目一 二维数组折腾