Tomcat负载均衡配置(5)

上述只配置了负载均衡,还要实现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同目录)页面,内容如下:

<%@ page language="Java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8" import="java.util.*"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Cluster 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.print("<br>Session 列表</br>");

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" /> <br />

值:<input type="text" /> <br />

<input type="submit" value="提交" />

</form>

</body>

</html>

在test文件夹下创建WEB-INF文件夹,在其下创建web.xml文件,输入以下内容:

<?xml version="1.0" encoding="UTF-8"?>

<web-appx mlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns="http://java.sun.com/xml/ns/javaee"  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  "

id="WebApp_ID" version="2.5">

<distributable />

</web-app>

上述步骤完成之后,依次启动Apache、tomcat1、tomcat2,通过浏览器访问,显示如下界面:

Tomcat负载均衡配置

 

图中SessionID的后缀“.tomcat1”表明该session来自tomcat1,在表格中填入数据并提交后,显示如下页面:

Tomcat负载均衡配置

 

通过上图表明,来自tomcat1的session已复制到tomcat2(因为第一次将请求发送给tomcat2本来是没有数据的,但这里读出了tomcat1的session列表),重开一个浏览器访问上述地址,页面显示的是同一SessionID(不同的浏览器属于不同的Session会话,应该有不同的SessionID),说明session已存在于集群中的所有tomcat中,紧接着关闭tomcat1,模拟tomcat1宕机,刷新页面,tomcat2仍会打印出session列表。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/dade2a00dfc1d4bf740c672b11b3cbb6.html