版本
nginx/1.21.6;
tomcat-8.5.32;
memcached 1.6.14;
所需jar包:
链接: link
tomcat 修改为不同端口
tomcat/conf/server.xml
下面展示一些 内联代码片
。
// An highlighted block
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
conf/context.xml
// An highlighted block
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.1.162:11211"
lockingMode="auto"
sticky="false"
failoverNodes=""
sessionBackupAsync="false"
sessionBackupTimeout= "1000"
copyCollectionsForSerialization="true"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"/>
nginx配置nginx.conf
// An highlighted block
upstream tcsv {
server 127.0.0.1:8060;
server 127.0.0.1:8084;
}
server {
listen 8888;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#location / {
# root html;
# index index.html index.htm;
#}
location / {
proxy_pass http://tcsv;//这里和upstream处一样;加项目名之后会导致sessionID一直变
# root html;
# index index.html index.htm;
}
nginx启动,终止,重启
nginx
nginx -s stop
nginx -s reload
jsp内容
// An highlighted block
<%@ 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 tomcat 1</p>
</body>
</html>
memcached启动
终端
memcached -d -p 11211 -u nobody -c 1024 -m 64
memcached停止
ps -ef | grep memcache
kill 97052
多memcached 节点
memcached
memcached -d -p 11211 -u nobody -c 1024 -m 64
memcached -d -p 11212 -u nobody -c 1024 -m 64
context.xml 配置
// An highlighted block
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.1.162:11211,n2:192.168.1.162:11212"
lockingMode="auto"
sticky="false"
failoverNodes="n2"
sessionBackupAsync="false"
sessionBackupTimeout= "1000"
copyCollectionsForSerialization="true"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"/>
另一个tomcat/conf/context.xml配置
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.1.162:11211,n2:192.168.1.162:11212"
lockingMode="auto"
sticky="false"
failoverNodes="n1"
sessionBackupAsync="false"
sessionBackupTimeout= "1000"
copyCollectionsForSerialization="true"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"/>
应该是配置没有设置正确,刷新页面的时候tomcat会报错:
24-Mar-2022 10:46:55.560 信息 [msm-2ndary-backup-thread-3] de.javakaffee.web.msm.LockingStrategy$OnAfterBackupSessionTask.call Could not store secondary backup of session FB3E8CB8BB5C7A82BD507E51635858AA-n1
java.lang.IllegalArgumentException: No node found for key bak:FB3E8CB8BB5C7A82BD507E51635858AA-n1 (nodeId: null, known nodeIds: [n2, n1])
但是sessionid不会变(研究中)