memcached对nginx负载tomcat集群共享session

本文详细介绍了在 CentOS 环境下搭建 Memcached、两个 Tomcat 实例及 Nginx 的负载均衡集群的过程。包括 Memcached 的安装与启动、Tomcat 的配置以实现 session 共享、Nginx 的配置以实现负载均衡,最终通过实际操作验证了集群的搭建与运行情况。
摘要由CSDN通过智能技术生成

一.环境准备

系统: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共享成功。

安装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值