Apache2.2+tomcat6集群和负载均衡的配置
2017-03-06 13:51
591 查看
接近两天,终于把Apache2.2+Tomcat6组成了集群,使用的proxy-ajp方式
1、软件:Apache2.2、Tomcat6
3、Apache配置
在httpd.conf最后面增加一行,把个性的配置都写在单独的配置文件mod_proxy.conf里面
新建mod_proxy.conf文件,内容如下
#已下的部门在httpd.conf是被注释的
6、配置Tomcat目录下conf/server.xml
首先修改Engine,app中session的值就是sessionID后面会追加jvmRoute的值,
其次,修改Cluster部分
7、最后是自己开发应用中的web.xml文件
在web-app里面增加一项
8、额外的,单机同时跑多个tomcat的时候,需要修改三个端口,分别的默认的8005,8080,8009
9、测试,单纯的使用jsp页面打印sessionid,因为session已经共享,没法体验出负载均衡。
因此,需要结合sessionID和Java变量来检查测试
在Controller里面如下代码,每次访问到不同的tomcat,类的变化是变化的
jsp页面就使用网络中大家都用的代码就行
访问http://192.168.0.4/Cluster/cluster
多次刷新,值在这三个之间轮流出现
"com.xx.controller.MainController@12f5f0d"
"com.xx.controller.MainController@19a85f9"
"com.xx.controller.MainController@149bb86"
1、软件:Apache2.2、Tomcat6
3、Apache配置
在httpd.conf最后面增加一行,把个性的配置都写在单独的配置文件mod_proxy.conf里面
include conf/mod_proxy.conf
新建mod_proxy.conf文件,内容如下
#已下的部门在httpd.conf是被注释的
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 ProxyRequests Off <proxy balancer://cluster> BalancerMember ajp://127.0.0.1:18009 loadfactor=1 route=tomcat_4_18009 BalancerMember ajp://192.168.0.3:28009 loadfactor=1 route=tomcat_3_28009 BalancerMember ajp://127.0.0.1:28009 loadfactor=1 route=tomcat_4_28009 </proxy> # Virtual hosts NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin qie@qq.com ServerName 127.0.0.1 ServerAlias localhost #//proxypass 指定的是分发器。 ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On ProxyPassReverse / balancer://cluster/ ErrorLog "logs/proxy-error.log" CustomLog "logs/proxy-access.log" common </VirtualHost>
6、配置Tomcat目录下conf/server.xml
首先修改Engine,app中session的值就是sessionID后面会追加jvmRoute的值,
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_4_18009">
其次,修改Cluster部分
<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.10" 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" timeout="30000" /> </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=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.css;.*\.txt;" /> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" /> </Cluster>
7、最后是自己开发应用中的web.xml文件
在web-app里面增加一项
<distributable/>
8、额外的,单机同时跑多个tomcat的时候,需要修改三个端口,分别的默认的8005,8080,8009
<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" />
9、测试,单纯的使用jsp页面打印sessionid,因为session已经共享,没法体验出负载均衡。
因此,需要结合sessionID和Java变量来检查测试
在Controller里面如下代码,每次访问到不同的tomcat,类的变化是变化的
@ResponseBody @RequestMapping(value={"/cluster"}, method=RequestMethod.GET) public String ajaxTestCluster() { return this.toString(); }
jsp页面就使用网络中大家都用的代码就行
<%@ page contentType="text/html; charset=UTF-8" %> <%@ page import="java.util.*" %> <html><head><title>Cluster App Test</title></head> <body> Server Info: <%out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%> <% out.println("<br> ID " + session.getId()+"<br>"); // 如果有新的 Session 属性设置 String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } out.println("<b>Session 列表</b><br>"); System.out.println("============================"); Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value+"<br>"); System.out.println( name + " = " + value); } %> <form action="test2.jsp" method="POST"> 名称:<input type=text size=20 name="dataName"> <br> 值:<input type=text size=20 name="dataValue"> <br> <input type=submit> </form> </body> </html>
访问http://192.168.0.4/Cluster/cluster
多次刷新,值在这三个之间轮流出现
"com.xx.controller.MainController@12f5f0d"
"com.xx.controller.MainController@19a85f9"
"com.xx.controller.MainController@149bb86"
相关文章推荐
- apache+tomcat集群的负载均衡配置方式
- Apache +Tomcat的负载均衡与集群配置
- apache+tomcat集群的负载均衡配置方式
- 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
- apache+tomcat集群的负载均衡配置…
- (转)基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
- 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
- Apache 2.2.19+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
- Apache +Tomcat的负载均衡与集群配置
- 安装集群apache+tomcat实现负载均衡与集群的配置
- 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
- Apache +Tomcat的负载均衡与集群配置
- apache+tomcat实现负载均衡与集群的配置
- Apache +Tomcat的负载均衡与集群配置
- 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
- Apache+Tomcat实现负载均衡及集群(session同步)--一、前言
- Apache+Tomcat实现负载均衡及集群(session同步)--三、动静分离(2)使用mod_proxy