Load Balancer (Nginx)
/ \
Cluster1 Cluster2
/ \ / \
Tomcat1 Tomcat2 Tomcat3 Tomcat4
memcached
下载:
Ubuntu:
sudo apt-get install memcached
Windows:
http://www.kuaipan.cn/file/id_18237169873244609.htm
启动服务器:
memcached -p 11211 -u memcached -m 64 -M -vv
客户端访问:
telnet localhost 11211
Command | Description | Example |
get | Reads a value | get mykey |
set | Set a key unconditionally | set mykey 0 60 5 |
add | Add a new key | add newkey 0 60 5 |
replace | Overwrite existing key | replace key 0 60 5 |
append | Append data to existing key | append key 0 60 15 |
prepend | Prepend data to existing key | prepend key 0 60 15 |
incr | Increments numerical key value by given number | incr mykey 2 |
decr | Decrements numerical key value by given number | decr mykey 5 |
delete | Deletes an existing key | delete mykey |
flush_all | Invalidate specific items immediately | flush_all |
Invalidate all items in n seconds | flush_all 900 | |
stats | Prints general statistics | stats |
Prints memory statistics | stats slabs | |
Prints memory statistics | stats malloc | |
Print higher level allocation statistics | stats items | |
stats detail | ||
stats sizes | ||
Resets statistics | stats reset | |
version | Prints server version. | version |
verbosity | Increases log level | verbosity |
quit | Terminate telnet session | quit |
http://code.google.com/p/memcached-session-manager/
https://github.com/magro/msm-sample-webapp
Nginx
http { server { location / { root html; index index.html index.htm; proxy_pass http://127.0.0.1; } upstream 127.0.0.1 { server 127.0.0.1:8080 weight=1; server 127.0.0.1:8081 weight=2; } }
tomcat
server.xml
D:\tomcat-7.0.34_1
port:8005
D:\tomcat-7.0.34_2
port:8006
<Server port="8005" shutdown="SHUTDOWN">
D:\tomcat-7.0.34_1
port:8080
D:\tomcat-7.0.34_2
port:8081
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
D:\tomcat-7.0.34_1
port:8009
D:\tomcat-7.0.34_2
port:9009
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
D:\tomcat-7.0.34_1
jvmRoute:tomcat7-1
D:\tomcat-7.0.34_2
jvmRoute:tomcat7-2
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat7-1">
D:\tomcat-7.0.34_1
port:4000
D:\tomcat-7.0.34_2
port:4001
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" /> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000" /> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6" /> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" /> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" /> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" /> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="" /> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve" /> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false" /> <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" /> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" /> </Cluster>
D:\tomcat-7.0.34_1
docBase:D:/tomcat-7.0.34_1/webapps/test
D:\tomcat-7.0.34_2
docBase:D:/tomcat-7.0.34_2/webapps/test
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="D:/tomcat-7.0.34_1/webapps/test" path="" reloadable="true"> <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:localhost:11211" requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$" sessionBackupAsync="false" sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" copyCollectionsForSerialization="false"/> </Context> </Host>
D:\tomcat-7.0.34_1\webapps\test\index.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>Cluster Test</title>
</head>
<body>
<%
System.out.println(session.getId());
out.println("<br> SESSION ID:" + session.getId()+"<br>");
%>
</body>
</html>
D:\tomcat-7.0.34_1\webapps\test\WEB-INF\web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>test</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <distributable/> </web-app>