Nginx+redis部署tomcat集群
一、部署环境:
两个tomcat实例部署在Ubuntu 14上,IP地址分别为192.168.1.110和192.168.1.111,Nginx和redis部署在windows7上,IP地址为192.168.1.100;
二、部署redis:
1、下载并解压redis;
2、Cmd下进入redis目录,执行:redis-server.exe redis.conf来启动redis;
三、部署Nginx:
假设两台tomcat服务所在ip地址分别为192.168.1.110和192.168.1.111,修改在Nginx目录下的Nginx.conf文件如下:
执行Nginx.exe程序,查看任务管理器,如果进程里面有nginx.exe的进程,则说明Nginx启动成功;
四、部署tomcat:
由于部署的两个tomcat实例是运行在不同的机器上,因此不需要修改端口号,如果是在一台机器上,则需要修改端口号,否则会启动不起来;
1、修改context.xml文件:
增加如下内容:
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="192.168.1.100"
port="6379"
database="0"
maxInactiveInterval="60" />
2、把下面的jar文件放到tomcat的lib目录下,然后启动tomcat:
tomcat-redis-session-manager1.2.jar
jedis-2.6.2.jar
tomcat-juli.jar
tomcat-juli-adapters.jar
commons-pool2-2.0.jar
五、测试:
1、新建test.jsp测试文件:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
<h1><font color="red">tomcat1</font></h1>
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>
2、在浏览器中输入:http://192.168.1.100:81/test/test.jsp,多点击几次提交按钮,可以看到页面在两个tomcat之间切换,说明负载是成功的,并且sessionID总是相同的,也说明session是在redis上共享的;
3、使用redis客户端连接上服务器,输入keys * 可以看到建立的session,输入get sessionID可以看到具体session的数据值;