1.在server1上安装nginx
tar zxf nginx-1.14.0.tar.gz
yum install -y gcc pcre-devel unzip openssl-devel
2.编译
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-file-aio
3.make&&make install
4.配置绝对路径,启动nginx
vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/nginx/sbin
5.安装jdk测试,配置环境变量java环境
6.测试java环境
7.安装tomcat
tar zxf apache-tomcat-7.0.8.tar.gz -C /usr/local
mv /usr/local/apache-tomcat-7.0.8 /usr/local/tomcat
在tomcat下的lib下加入jar包,memcache有四种session管理,在此我们使用官方推荐的效率最高的一种:kroy。
注意,因为我用的是apache-tomcat-7.0.37的7.0版本,所以包用这个包memcached-session-manager-tc7-1.6.3.jar ,如果你是不同版本的你必须下载版本匹配的,百度tomcat+memcache jar包下载,或者这个是我看到其他人的网盘可以参考下载http://pan.baidu.com/s/1c2rNZEg,下载之后放到tomcat的lib目录下
asm-3.2.jar
kryo-1.04.jar
kryo-serializers-0.10.jar
memcached-session-manager-1.6.3.jar
memcached-session-manager-tc7-1.6.3.jar
minlog-1.2.jar
msm-kryo-serializer-1.6.3.jar
reflectasm-1.01.jar
spymemcached-2.7.3.jar
8.server1和server2安装memcache,并开启服务
9.修改集群各个tomcat的context.xml 文件,加入如下配置
vi /usr/local/tomcat/conf/context.xml #对server1的配置
memcachedNodes:已经被监听的负载均衡服务器,多个服务器写成上面格式memcachedNodes="n1:172.25.254.1:11211,n2:172.25.254.2:11211" :ip和端口号必须和启动memcache时监听的ip和端口号一致
10.vim /usr/local/lnmp/nginx/conf/nginx.conf #配置server1中nginx配置文件http
upstream tomcat {
sticky; #同一个用户的访问请求都被发送到同一个 tomcat 实例上处理
server 172.25.254.1:8080;
server 172.25.254.2:8080;
}
11.到这里配置完成,开始测试,编辑测试页面为
vim /usr/local/tomcat/webapps/ROOT/test.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
Cluster App Test
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"
");%>
<%
out.println("
ID " + session.getId()+"
");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("Session list");
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);
}
%>
配置完页面要重新启动tomcat服务
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
测试在浏览器中输入http://172.25.254.1/test.jsp,server1默认访问n2结点,在server2上安装telnet进行测试
telnet localhost 11211,
get AC581F1C65BF0AC9AD5BE48FC26DF5E6-n2 #就可以看到写入的session
当让server2上的memcache宕机,session会转移到server1结点,如下图,但是server1的session会保存,这里我们也可以查看tomcat日志里面也有这个session信息,日志位置
cd /usr/local/tomcat/logs
cat catalina.out
总结:在做完这个实验之后,访问一个页面实现了seesion保持,如果一个主机故障,tomcat会把session再次发送一份给另一个memcache,session不会丢失,实现了tomcat和memcache的会话保持。