Apache2.2+tomcat负载均衡session共享配置说明手册1.1版

本文详细介绍了如何使用Apache2.2与Tomcat6搭建负载均衡环境,并通过mod_jk模块实现两个Tomcat服务器之间的负载均衡及session共享。

本文使用的是Apache2.2+apache-tomcat-6.0.35+mod_jk-1.2.31-httpd-2.2.3.so在windows xp 环境下进行。

准备工作下载相关软件以及安装:

(1)下载Apache2.2.x服务,并且将其安装,其默认端口号为80,在浏览器中输入“http://localhost/”或者输入“http://127.0.0.1/”,如果能够浏览到如图1.34所示的窗口,说明Apache服务器安装成功。(有些旧版本不是显示这个)


(要想修改显示的页面,在apache文件夹里面,修改htdocs文件夹里面的index.html就可以)

(2)下载tomcat6或6以上版本,分别在D盘创建2个文件夹(tomcat1,tomcat1),然后将下载的tomcat解答到刚刚创建的2个目录下(D:\tomcat1\apache-tomcat-6.0.35,D:\tomcat2\apache-tomcat-6.0.35)。

(3)修改相关tomcat的server.xml文件。

修改tomcat1的server.xml文件如下:

  将<Engine name="Catalina" defaultHost="localhost">

  修改成<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

  将<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>注释

  解开

注意:在Engine节点里面添加jvmRoute="jvm1"属性,将Cluster节点的注释解开。

修改tomcat2的server.xml文件如下:

   将<Server port="8005" shutdown="SHUTDOWN">

   修改成<Server port="8006" shutdown="SHUTDOWN">

      将<Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

      修改成<Connector URIEncoding="UTF-8" port="9090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

      将<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

      修改成<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />

注意:因为本实例是在同一台机器上进行的,所以以上tomcat2的修改是避免tomcat的端口发生冲突而修改的,

        如果不是在同一台机器上进行,以上操作可以避免。     

   将<Engine name="Catalina" defaultHost="localhost">

   修改成<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">

   将<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>注释

   解开

注意:在Engine节点里面添加jvmRoute="jvm2"属性,将Cluster节点的注释解开。

(3)下载mod_jk-1.2.31-httpd-2.2.3.so,将其放在Apache安装目录下的modules目录下。

(4)配置Apache相关文件。

a、我的Apache安装在E:\developspace\Server\Apache2.2,找到conf目录下的httpd.conf,在文件的最后一行添加

include "E:\developspace\Server\Apache2.2\conf\mod_jk.conf"

b、 新建mod_jk.conf 文件,内容如下:
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so

JkWorkersFile conf/workers.properties

#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名

JkMount /*.jsp controller
c、 新建并编辑 workers.properties 文件,内容如下:

#server

worker.list = controller

#========tomcat1========

worker.jvm1.port=8009

worker.jvm1.host=localhost

worker.jvm1.type=ajp13

worker.jvm1.lbfactor = 1

#========tomcat2========

worker.jvm2.port=9009

worker.jvm2.host=localhost

worker.jvm2.type=ajp13

worker.jvm2.lbfactor = 1

#========controller,负载均衡控制器========

worker.controller.type=lb

worker.controller.balanced_workers=jvm1,jvm2

worker.controller.sticky_session=false

worker.controller.sticky_session_force=1

#worker.controller.sticky_session=1

准备工作下载相关软件以及安装完毕。

准备即将测试的工程。

a、用eclipse创建一个web工程,我这边的工程名为test

b、在test工程里创建一个jsp文件,我这边的是test.jsp,其内容如下:

<%@ page contentType="text/html; charset=GBK" %>  
 <%@ page import="java.util.*" %>  
 <html>
     <head>
         <title>test</title>
     </head>  
 <body>
   Server Info:   
     <%  out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>  
     <%  out.println("<br> session 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/><br/>      
         值:<input type=text size=20 name="dataValue"><br/><br/>      
         <input  type=submit value="提交"/>    
     </form>  
 </body>  
 </html>

c、在工程的web.xml文件里面添加<distributable/>节点。

d、将工程分别打成war包,拷贝到D:\tomcat1\apache-tomcat-6.0.35\webapps和

    D:\tomcat2\apache-tomcat-6.0.35\webapps下,并分别启动tomcat1、tomcat2

开始测试我们的成果:

在浏览器地址上输入:http://11.11.4.55/test/test.jsp

如果访问的test.jsp页面出现,说明离我们的成功差不多了,接下来继续

在test.jsp页面上的文本框分别随便输入,然后“提交”按钮

页面效果如下:

在当前浏览器下在开一个窗口,并在地址上输入:http://11.11.4.55/test/test.jsp,效果如下:

注意:session ID一样,并且都成功调转到jvm1、jvm2所对应的tomcat1、tomcat2上,并且在tomcat1、tomcat2都可以看到打印的日志。

到此我们配置的负载均衡已实现,并且session也得到共享。

转载于:https://my.oschina.net/wpq/blog/156854

【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)内容概要:本文介绍了基于蒙特卡洛和拉格朗日方法的电动汽车充电站有序充电调度优化方案,重点在于采用分散式优化策略应对分时电价机制下的充电需求管理。通过构建数学模型,结合不确定性因素如用户充电行为和电网负荷波动,利用蒙特卡洛模拟生成大量场景,并运用拉格朗日松弛法对复杂问题进行分解求解,从而实现全局最优或近似最优的充电调度计划。该方法有效降低了电网峰值负荷压力,提升了充电站运营效率与经济效益,同时兼顾用户充电便利性。 适合人群:具备一定电力系统、优化算法和Matlab编程基础的高校研究生、科研人员及从事智能电网、电动汽车相关领域的工程技术人员。 使用场景及目标:①应用于电动汽车充电站的日常运营管理,优化充电负荷分布;②服务于城市智能交通系统规划,提升电网与交通系统的协同水平;③作为学术研究案例,用于验证分散式优化算法在复杂能源系统中的有效性。 阅读建议:建议读者结合Matlab代码实现部分,深入理解蒙特卡洛模拟与拉格朗日松弛法的具体实施步骤,重点关注场景生成、约束处理与迭代收敛过程,以便在实际项目中灵活应用与改进。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值