memcached对nginx负载tomcat集群共享session

来源:互联网 发布:文明网络小报 编辑:程序博客网 时间:2024/04/28 06:50

一.环境准备

系统:centos6.5

服务与端口:

192.168.0.144:8081 tomcat1 (版本7.0.47)

192.168.0.144:8082 tomcat2

192.168.0.144:80 nginx

192.168.0.144:11211memcached


二.搭建过程

1.安装memcached

准备memcached-1.2.0.tar.gz、libevent-1.2.tar.gz。

安装libevent

/usr/local/  下创建libevent,用于安装libevent。 

# tar -zxvf libevent-1.2.tar.gz# cd libevent-1.2# ./configure –prefix=/usr/local/libevent# make# make install

安装memcached,需指定libevent安装目录

# cd /usr/local/# tar -zxvf memcached-1.2.0.tar.gz# cd memcached-1.2.0# ./configure –with-libevent=/usr/local/libevent# make# make install

安装完成后memcached安装到 /usr/local/bin/memcached 

以上,启动memcached会报错:

# ./memcached -u root -p 11211 -l 192.168.0.144 -c 5000 -P /tmp/memcached.pid -m 64 -d/usr/local/bin/memcached: error while loading shared libraries: libevent-1.2.so.1: cannot open shared object file: No such file or directory

执行以下命令,解决上述问题:

ln -s /usr/local/libevent/lib/libevent-1.2.so.1 /usr/lib/libevent-1.2.so.1


重新启动,并查看是否启动成功:

# ps -ef | grep memcached


停止命令:# kill `cat /tmp/memcached.pid`


memcached参数说明:

-p 使用的tcp端口,默认11211

-m 最大内存大小,默认64m

-d 作为daemon在后台启动

-l 连接的ip地址,默认为本机

-u 以什么用户启动,仅在root用户下使用该命令

-M 内存耗尽时返回错误,而不是删除

-c 最大同时连接数,默认102

-h 显示帮助

2. 准备tomcat

准备两个tomcat,分别修改server.xml,端口为8081和8082,分别修改webapps/ROOT/index.jsp,

删除里面的“<%@ page session="false" %>”,然后body中加入如下部分代码,用于区别两个tomcat和后期session共享判断,注意其中一个为session.setAttribute("name","xxx"),另一个为session.getAttribute("name"),这样即可判断session是否共享。

IP:192.168.0.144:8081<br/><%@ page contentType="text/html;charset=UTF-8" isELIgnored="false"%>SessionID:<%=session.getId()%><%=session.getAttribute("name") %><br/>SessionIP:<%=request.getServerName()%><br/>SessionPort:<%=request.getServerPort()%><% out.println("This is Tomcat Server 8081"); %>

分别启动两个tomcat并访问,确定两个tomcat服务能同时成功启动。


3.准备nginx

安装过程略(版本1.6.2),附nginx配置文件代码:

#user  nobody;worker_processes  1;#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;    upstream session-share {# session-share这个名称随便取,与下面location中一致即可        server 192.168.0.144:8081 weight=1;  # 第一个tomcat IP与端口        server 192.168.0.144:8082 weight=2;  # 第二个tomcat IP与端口    }    server {        listen       80;# nginx端口        server_name  localhost;location / {proxy_pass http://session-share;proxy_redirect default;}            error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }}

启动nginx,并查看是否启动成功:

# /usr/local/nginx/sbin/./nginx# ps -ef | grep nginx

访问192.168.0.144并刷新,页面中显示的tomcat端口在变化,说明负载成功。


4.加入session共享需要包

需要包为asm-3.2.jar、kryo-1.04.jar、kryo-serializers-0.11.jar、memcached-session-manager-1.8.3.jar、memcached-session-manager-tc7-1.8.3.jar、minlog-1.2.jar、msm-kryo-serializer-1.8.3.jar、reflectasm-1.01.jar、spymemcached-2.11.1.jar.

分别加入两个tomcat中的lib下,分别重启tomcat,并查看是否报错。


访问192.168.0.144,刷新几次后,发现能取到session中的name值,说明session共享成功。

安装

1 0
原创粉丝点击