1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
1.准备jar包,是最麻烦的一步,我选择kryo的序列化方案,javolution序列化死活弄不通,总是报错.google上又说是bug,不支持,启动就是报错
-rw-r--r-- 1 tomcat tomcat    3085 3月  25 2014 minlog-1.2.jar
-rw-r--r-- 1 tomcat tomcat  147019 3月   9 2015 memcached-session-manager-1.8.2.jar
-rw-r--r-- 1 tomcat tomcat   29329 3月   9 2015 msm-kryo-serializer-1.8.2.jar
-rw-r--r-- 1 tomcat tomcat   62112 3月   9 2015 kryo-serializers-0.11.jar
-rw-r--r-- 1 tomcat tomcat   43398 3月   9 2015 asm-3.2.jar
-rw-r--r-- 1 tomcat tomcat   94830 3月   9 2015 kryo-1.04.jar
-rw-r--r-- 1 tomcat tomcat   11615 3月   9 2015 reflectasm-1.01.jar
-rw-r--r-- 1 tomcat tomcat  459447 3月   9 2015 spymemcached-2.11.1.jar
-rw-r--r-- 1 tomcat tomcat   10407 6月   6 19:41 memcached-session-manager-tc8-1.8.2.jar
2.弄两个tomcat实例,server.xml配置
<Host name="localhost"  appBase="webapps" unpackWARs="false" autoDeploy="false">
        <Context path="" docBase="/opt/apps/8181/" reloadable="false" />
cat /opt/apps/8181/index.jsp
<%@ page language="java" %>
<html>
  <head><title>TomcatA</title></head>
  <body>
    <h1><font color="red">TomcatA.magedu.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("magedu.com","magedu.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>
另外一个8282就行
3.编译memcached
libevent-2.0.22-stable  memcached-1.4.24
vim /etc/init.d/memcached  从别人博客找到的
#!/bin/bash
#
# Init file for memcached
#
# chkconfig: - 86 14
# description: Distributed memory caching daemon
#
# processname: memcached
# config: /etc/sysconfig/memcached
   
/etc/rc.d/init.d/functions
   
## Default variables
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="256"
RETVAL=0
prog="/usr/local/memcached/bin/memcached"
desc="Distributed memory caching"
lockfile="/var/lock/subsys/memcached"
   
start() {
        echo -n $"Starting $desc (memcached): "
        daemon $prog --p $PORT -u $USER -c $MAXCONN -m $CACHESIZE 
        RETVAL=$?
        [ $RETVAL -eq 0 ] && success && touch $lockfile || failure
        echo
        return $RETVAL
}
   
stop() {
        echo -n $"Shutting down $desc (memcached): "
        killproc $prog
        RETVAL=$?
        [ $RETVAL -eq 0 ] && success && rm -f $lockfile || failure
        echo
        return $RETVAL
}
restart() {
        stop
        start
}
   
reload() {
        echo -n $"Reloading $desc ($prog): "
        killproc $prog -HUP
        RETVAL=$?
        [ $RETVAL -eq 0 ] && success || failure
        echo
        return $RETVAL
}
   
case "$1" in
  start)
        start
        ;;
  
stop)
        stop
        ;;
  restart)
        restart
        ;;
  condrestart)
        -e $lockfile ] && restart
        RETVAL=$?
        ;;       
  reload)
        reload
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
   *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        RETVAL=1
esac
   
exit $RETVAL
########################
chkconfig --add memcached
chkconfig memcached on
service memcached start
cp -/etc/init.d/memcached /etc/init.d/memcached2
改端口,再起一个
4.context配置
tomcat a的配置
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   memcachedNodes="n1:172.1.1.212:11211,n2:172.1.1.212:11212"
     failoverNodes="n2"
      requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
      transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
 />
tomcat b的配置
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   memcachedNodes="n1:172.1.1.212:11211,n2:172.1.1.212:11212"
     failoverNodes="n1"
      requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
      transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
 />
5.启动报这个信息就是正确的
信息: --------
-  finished initialization:
- sticky: true
- operation timeout: 1000
- node ids: [n1]
- failover node ids: [n2]
- storage key prefix: null
--------
6.前段用nginx还是apache,自己喜欢那个用那个
7.测试,http://ip,你会看到 session id是不变的。