nginx+tomcat+memcached实现会话共享及高可用

1、架构:

主机名软件版本IP
nginx+phpnginx-1.15192.168.10.3
javajdk-1.7
tomcat1tomcat-7.0.94192.168.10.4
tomcat2tomcat-7.0.94192.168.10.5
memcached192.168.10.8
2、在nginx配置文件中把两个tomcat加入负载;

3、修改192.168.10.4和192.168.10.5两台服务器tomcat的context.xml文件,在两个content中间加上以下内容:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
#单节点如下:
memcachedNodes="n1:192.168.10.8:11211"
#多节点如下,多个节点之间用逗号或空格隔开即可:
memcachedNodes="n1:192.168.10.8:11211,n2:192.168.10.9:11211"
sticky="false"
sessionBackupAsync="false"
lockingMode="auto"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/>

4、将192.168.10.4和192.168.10.5两台服务器tomcat下webapps/ROOT/index.jsp内容修改为以下内容:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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 Web Test</title>
</head>
<body>
    <h1>sessionID:<%=session.getId() %></h1>
    <h1>长度:<%=session.getId().length() %></h1>
    <p>this is Web 1</p>
</body>
</html>

5、进入192.168.10.4和192.168.10.5两台服务器tomcat下的lib文件夹,将以下文件上传到此目录,点此下载
在这里插入图片描述
6、部署安装memcached,并启动:

yum install -y memcached
memcached -d -m 256 -u root -p 11211 -c 1024 –P /tmp/memcached.pid

注:
-d 选项是启动一个守护进程。
-u root 表示启动memcached的用户为root。
-m 是分配给Memcache使用的内存数量,单位是MB,默认64MB。
-M return error on memory exhausted (rather than removing items)。
-u 是运行Memcache的用户,如果当前为root 的话,需要使用此参数指定用户。
-p 是设置Memcache的TCP监听的端口,最好是1024以上的端口。
-c 选项是最大运行的并发连接数,默认是1024。
-P 是设置保存Memcache的pid文件。
7、启动nginx、tomcat1和tomcat2,并在浏览器输入 http://192.168.10.3:80,观察页面:在这里插入图片描述在这里插入图片描述观察发现:两个页面的SessionID是一致的,但下面的标识符会在“Web1”和“Web2”之间来回替换,这就实现了memcached的session共享功能!下一步实验nginx+memcached集群的缓存功能

要实现memcached集群的话,在上面的基础上再安装一台memcached服务器并部署memcached,将其启动,并且在tomcat的context.xml文件中,将其添加进去,参照第4步。
添加完成后,刷新测试页面,可以看到session已经转移到第二个memcached节点:
可以看到,当前session是缓存在n1节点上的在这里插入图片描述
在这里插入图片描述现在杀掉n1节点的memcached进程,再刷新网页:在这里插入图片描述在这里插入图片描述现在看到session已经在n2节点了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dustin.Hoffman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值