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 是不变的。