我搭了2个虚拟机,均是32位的centos 6.5,IP分别是192.168.26.134、192.168.26.135,在192.168.26.134上安装nginx、memcached、tomcat,在192.168.26.135上安装tomcat
一.安装nginx
下载pcre、openssl、zlib、nginx安装包,下载完毕后如下操作
1.安装pcre
tar -zxvf pcre-8.36.tar
cd pcre-8.36
./configure
make & make install
2.安装openssl
tar -zxvf openssl-1.0.0o.tar.gz
cd openssl-1.0.0o
./config
make & make install
3.安装zlib
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make & make install
4.安装nginx
tar -zxvf nginx-1.6.2.tar
cd nginx-1.6.2
./configure
make & make install
nginx默认安装目录是/usr/local/nginx
二.安装memcached
下载libevent、memcached安装包,下载完毕后执行如下操作
1.安装libevent
tar zxvf libevent-1.4.14.tar.gz
cd libevent-1.4.14
./configure –prefix=/usr/local/libevent
make & make install
2.安装memcached
tar -zxvf memcached-1.4.21.tar.gz
cd memcached-1.4.21
./configure –with-libevent=/usr/local/libevent
make & make install
安装好后,可通过/usr/local/bin/memcached -d -u root命令启动(memcached默认端口为11211)
三.配置nginx
注:jdk、tomcat的安装不介绍了。
使用vi /usr/local/nginx/conf/nginx.conf命令编辑nginx的配置文件,修改如下:
http {
......
proxy_cache_path /test/data/cache/ levels=1:2 keys_zone=imgcache:100m inactive=1d max_size=10g;
upstream tomcat_server {
server 192.168.26.134:8080 weight=1;
server 192.168.26.135:8080 weight=1;
}
server {
listen 192.168.26.134:80;
server_name 192.168.26.134; //因为是内网配置,所以这里没写域名
index index.html index.jsp;
#charset koi8-r;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ {
log_not_found off;
access_log off;
expires 7d;
proxy_pass http://tomcat_server;
proxy_cache imgcache;
proxy_cache_valid 200 302 1d;
proxy_cache_valid 404 10m;
proxy_cache_valid any 1h;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
}
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://tomcat_server;
}
......
}
四.配置tomcat
修改2个tomcat的context.xml如下:
<Context>
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.26.134:11211" //n1为memcached节点,自己可随意定义,但2个tomcat的节点必须保持一致
sticky="false"
lockingMode="auto"
sessionBackupAsync="false"
sessionBackupTimeout="1000"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
</Context>
添加mem和msm的依赖jar包到2个tomcat的lib目录下:
couchbase-client-1.2.2.jar
kryo-1.04.jar
kryo-serializers-0.11.jar
memcached-session-manager-1.6.5.jar
memcached-session-manager-tc7-1.6.5.jar
minlog-1.2.jar
msm-kryo-serializer-1.6.5.jar
reflectasm-1.01.jar
spymemcached-2.10.2.jar
五.运行
1.启动memcached:/usr/local/bin/memcached -d -u root
2.启动192.168.26.134、192.168.26.135上的tomcat,查看日志无报错则正常
3.启动nginx:/usr/local/nginx/sbin/nginx (可先通过/usr/local/nginx/sbin/nginx -t命令查看nginx配置文件是否正确)
六.测试
登录页面:
<body>
This is tomcat_one. <br> //注:部署到192.168.26.134上,写This is tomcat_one;部署到192.168.26.135上,写This is tomcat_two。
<form action="login" method="post">
<input name="name" value="" type="text"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
处理登录的servlet:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
session.setAttribute("name", request.getParameter("name"));
response.sendRedirect("show.jsp");
}
查询页面:
<body>
This is tomcat_one <br> //注:部署到192.168.26.134上,写This is tomcat_one;部署到192.168.26.135上,写This is tomcat_two。
<%
String id = session.getId();
Object o = session.getAttribute("name");
String name = "";
if (o != null) {
name = o.toString();
}
out.write(id+"<br>");
out.write(name);
%>
1.每次刷新页面,This is tomcat_one和This is tomcat_two来回切换,表示负载均衡成功。
2.登录后刷新页面,This is tomcat_one和This is tomcat_two来回切换,sessionID和name值不变,表示session共享成功。