Tomcat负载均衡配置(二)
4.4 修改server.xml文件修改位于%Tomcat1_Home%\conf目录下的server.xml配置文件,将“”修改为“”,此处“jvmRoute”赋得值为workers.properties文件中的server名,并在其后添加如下内容(这段内容可在可在%Tomcat1_Home%\webapps\docs目录中的cluster-howto.html文件中找到):
将修改好server.xml文件复制一份到%Tomcat2_Home%\conf目录下,这里是在一台电脑上安装两个tomcat,应该修改tomcat2的一些监听端口号,以避免冲突,修改时注意不要与服务器上其它应用的端口冲突(这里是在文本编辑器中将server.xml文件中所有数字“8”修改为“9”)。注意:在将ajp13协议的端口号默认值8009修改为9009时,要与workers.properties文件内worker.tomcat2.port=9009一致,并将
处的tomcat2修改为tomcat1,将
处的4000改为4001,其余不变。
4.5 编写jsp页面测试
在%Tomcat1_Home%\webapps\目录下创建web项目,命名为“test”,在test文件夹下创建index.jsp文件,输入如下内容:
Insert title here
将创建好的web项目拷贝一份到%Tomcat2_Home%\webapps目录下。依次启动Apache、tomcat1、tomcat2,通过浏览器访问http://localhost/index.jsp,可看到tomcat1窗口打印出“Hello!”,刷新一次,可看到tomcat2窗口也会打印出“Hello!”,再刷新一次,又会看到tomcat1窗口打印出“Hello!”,再刷新一次,又会看到tomcat2窗口打印出“Hello!”,这样重复下去,可发现请求会被tomcat1、tomcat2轮流处理,实现了负载均衡。
5Session复制
上述只配置了负载均衡,还要实现session复制,即任何一个tomcat的session可复制到另一个tomcat,集群内的tomcat具有共同的session。
5.1 修改workers.properties文件
修改上述workers.properties文件,在其末尾添加一段内容:
# 设置用于负载均衡的server的session可否共享
worker.controler.sticky_session=1
5.2 添加测试页面test.jsp
在上述web项目中添加test.jsp(与index.jsp同目录)页面,内容如下:
Cluster Test
Server Info:
0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("Session 列表");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String) e.nextElement();
String value = session.getAttribute(name).toString();
out.println(name + " = " + value + "");
System.out.println(name + " = " + value);
}
%>
名称:
值:
在test文件夹下创建WEB-INF文件夹,在其下创建web.xml文件,输入以下内容:
上述步骤完成之后,依次启动Apache、tomcat1、tomcat2,通过浏览器访问http://localhost/test/test.jsp,显示如下界面:
http://blog.运维网.com/attachment/201212/221036850.png
图3 session复制测试页面(一)
图中SessionID的后缀“.tomcat1”表明该session来自tomcat1,在表格中填入数据并提交后,显示如下页面:
http://blog.运维网.com/attachment/201212/221158766.png
图4 session复制测试页面(二)
通过上图表明,来自tomcat1的session已复制到tomcat2(因为第一次将请求发送给tomcat2本来是没有数据的,但这里读出了tomcat1的session列表),重开一个浏览器访问上述地址,页面显示的是同一SessionID(不同的浏览器属于不同的Session会话,应该有不同的SessionID),说明session已存在于集群中的所有tomcat中,紧接着关闭tomcat1,模拟tomcat1宕机,刷新页面,tomcat2仍会打印出session列表。
页:
[1]