设为首页 收藏本站
查看: 437|回复: 0

[经验分享] tomcat+apach load balance

[复制链接]

尚未签到

发表于 2017-1-22 06:28:15 | 显示全部楼层 |阅读模式
本文主要参考自http://www.iteye.com/topic/985404?dhcc,经由实际操作配置操并记录而成。
一、环境和版本
        环境:主机----Windows7(本地localhost);
        版本:JDK----1.5.0_22(安装版); Tomcat39----6.0.39(安装版);Tomcat32----6.0.32(安装版)Apache----2.2.25(httpd-2.2.25-win32-x86-no_ssl.msi,安装版)
二、apache tomcat配置操作
       1、Apache----2.2.25版本已经集成了mod_jk功能,故不必配置繁琐的worker.properties文件什么的,配置过程很方便了。
        2、利用编辑器打开APACHE_HOME\conf\httpd.conf文件,找到如下代理块(proxy):
             #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
        3、去掉这些代理块的注释“#”符号,Apache在启动的过程中将加载上述代理(proxy)。
        4、文件结束处添加如下代码:
             ProxyRequests Off
             <proxy balancer://cluster>
                    BalancerMember ajp://localhost:8009 loadfactor=1 route=jvm1
                    BalancerMember ajp://localhost:9009 loadfactor=1 route=jvm2
             </proxy>
        5、找到#Include conf/extra/httpd-vhosts.conf位置,并去掉“#”符号。
        6、利用编辑器打开APACHE_HOME\conf\extra\httpd-vhosts.conf文件,配置虚拟站点,在文件结束添加
        <VirtualHost *:80>
   ServerAdmin test@gmail.com
   ServerName localhost
   ServerAlias localhost
   ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
   ProxyPassReverse / balancer://cluster/
   ErrorLog "logs/error.log"
   CustomLog "logs/access.log" common
         </VirtualHost>
        7、配置Tomcat----server.xml文件
        7.1、如果是2个Tomcat处于不同的机器上,就不需要修改任何端口;只是需要把<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">注释符放开,同时将<Engine name="Catalina" defaultHost="localhost">注释掉;
        7.2、对于tomcat在同一部机器的情况,将其中tomcat39的<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">改为<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
        7.3 将tomcat39的<Server port="8005" shutdown="SHUTDOWN">
            <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
            <Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"
               redirectPort="8443" />
            8005改为9005,8009改为9009,8080改为9080
            9009端口对应 Apache httpd.conf中BalancerMember中配置的ajp连接端口。
        7.4、将<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>的注释放开,目的是可以在集群中的所有tomcat节点间共享会话(Session)。
三、新建测试web project
        1、在此引用一个网络上的测试session的例子:
       <%@ page contentType="text/html; charset=GBK" %>
<%@ 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>");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}  
out.print("<b>Session 列表</b>");  
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="test.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>
        2、myeclipse new 一个web project 在WebRoot下面新建一个test.jsp,内容为上面的代码,在WebRoot\WEB-INF\web.xml 的<web-app>节点下加入<distributable />通知Tomcat在当前应用集群中的所有节点间实现Session共享。
        3、在两个TOMCAT_HOME\conf\server.xml的<Host></Host>之间添加<Context   path="/test"   docBase="D:\workspace\testLoadBlance\WebRoot"   reloadable="true"   debug="0"></Context>
四、测试load balance
        1、启动tomcat39,tomcat32,apache,在浏览器中输入http://localhost/test/test.jsp,每刷新一次apache都会将请求发送到不同的tomcat中。
        2、通过在jvm1中提交名称和值后刷新到jvm2可以看到jvm1提交的值,反之亦然,说明load balance并且共享session目的达到。
五、存在的问题
        1、用tomcat7时session无法共享。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-331639-1-1.html 上篇帖子: Tomcat调优——Connector优化 下篇帖子: tomcat加载项目理解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表