Chinaunix首页 | 论坛 | 博客
  • 博客访问: 190949
  • 博文数量: 77
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 45
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-25 10:50
文章分类

全部博文(77)

文章存档

2018年(1)

2017年(3)

2016年(4)

2015年(4)

2014年(16)

2013年(7)

2012年(20)

2011年(22)

分类: 系统运维

2016-04-05 15:49:52

TOMCAT7.0+ NGINX + MEMCACHED + memcached-session-manager 实现SESSION共享

http://blog.csdn.net/nerissa/article/details/18961361  ; //参考博客

    //相关包下载,含lib所需的jar包

环境:centOS 6.5(64位) 、jdk8_8u5 、tomcat7.054、nginx1.47、libevent-2.0 、memcached-1.4.20

10.1.1.127 // tomcat,nginx,memcached

10.1.1.128 // tomcat

一、tomcat 机配置

1、卸载自带jdk ,采用rpm 包安装

rpm –qa |grep java | xargs rpm -e --nodeps //批量卸载自带的jdk相关包

2、rpm 安装

rpm -ivh jdk-8u5-linux-x64.rpm //默认安装在 /usr/java

mv 改名改为 /usr/java/jdk

java -version //验证安装成功

3、写入环境

vim /etc/profile

JAVA_HOME=/usr/java/jdk

JRE_HOME=/usr/java/jdk/jre

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

export JAVA_HOME JRE_HOME PATH CLASSPATH

source /etc/profile // 环境生效

4.解压tomcat 测试运行

tar –zxf apache-tomcat-7.0.54.tar.gz  -C /usr/local

mv apache-tomcat-7.054 tomcat

vim /etc/sysconfig/iptables //防火墙开放8080端口

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

service iptables restart

//开启tomcat,测试tomcat安装成功

二、Memcached 安装配置

1.导入 msm-1.7包到 tom/lib/ ( tomcat 节点都要放

clip_image001

http://chenzhou123520.iteye.com/blog/1650212 //参考博客

2.更改tomcat session保存方式(Non-Sticky,kryo

 以下内容加到配置文件里

vim conf/context.xml

memcachedNodes="n1:10.1.1.217:11211"

sticky="false"

lockingMode="auto"

sessionBackupAsync="false"

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>

3、编译安装libevent

# wget
# tar -zxvf libevent-2.0.21-stable.tar.gz
# cd libevent-2.0.21-stable
# ./configure --prefix=/usr
# make && make install
# cd ../

测试是否安装成功:
# ls -al /usr/lib | grep libevent

4、编译安装Memcached

# wget
# tar -zxvf memcached-1.4.15.tar.gz
# cd memcached-1.4.15/
# ./configure --with-libevent=/usr
# make && make install
# cd ../

测试是否安装成功:
# ls -al /usr/local/bin/mem*

或启动一个memcached进程
# /usr/local/memcached/bin/memcached  -d -m 2048 -u root -p 11211 -c 10240 -P /var/run/memcached.pid

5、编译安装magent

编译安装magent-0.6到/usr/local/下(推荐安装magent-0.5稳定版本,因为测试发现magent-0.6虽是最新版本,但是还存在问题,不稳定,第二次访问magent始终会堵塞在那里,只能set一个值。测试了magent-0.5是稳定版本,没有出现只能set一个值的现象,遂推荐安装magent-0.5版本,不过此问题也可以通过修改源码的方式来解决,解决方案参考(重点参考第8楼): )

cd /usr/local
mkdir magent
cd magent/
wget 
解压的文件中ketama.* 是一致性hash的实现
tar -zxvf magent-0.6.tar.gz

vi ketama.h
在开头加入
#ifndef SSIZE_MAX
# define SSIZE_MAX      32767
#endif

############magent-0.6版本修改内容start############
vi Makefile (magent-0.6版本)

LIBS = /usr/lib64/libevent.a /usr/lib64/libm.a
改为
LIBS = -lrt /usr/lib64/libevent.a /usr/lib64/libm.a

CFLAGS = -Wall -g -O2 -I/usr/local/include $(M64)
改为
CFLAGS = -lrt -Wall -g -O2 -I/usr/local/include $(M64)
############magent-0.6版本修改内容end##############

############magent-0.5版本修改内容start############
vi Makefile (magent-0.5版本)

CFLAGS = -Wall -O2 -g
改为
CFLAGS = -lrt -Wall -O2 -g

sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
############magent-0.5版本修改内容end##############

cp /usr/lib/libevent.a /usr/lib64
ln -s /usr/lib64/libm.so /usr/lib64/libm.a
/sbin/ldconfig

make
cp magent /usr/bin/magent
cd ../

测试magent是否安装成功:

1.启动一个magent进程

magent -u root -n 51200 -l 10.1.1.127 -p 12000 -s 10.1.1.127:11211

2.查看是否启动成功了

ps aux|grep magent
参考:
三、nginx 安装配置
nginx 安装配置 1.源码包安装 
#yum install pcre* //nginx 依赖pcre类库 
#useradd nginx 
#tar xf /share/soft/lamp/nginx/nginx-1.4.7.tar.gz -C /usr/src/ 
#cd /usr/src/nginx-1.4.7 
#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_gzip_static_module --with-http_stub_status_module 
# make && make install 
2.nginx 反向代理,实现负载均衡代理后面两台tomcat 服务器 
user nginx nginx; 
worker_processes 5; 
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; 
use epoll; 
} 
http { 
upstream session { 
server 10.1.1.217:8080 weight=1 max_fails=2 fail_timeout=30s; 
server 10.1.1.218:8080 weight=1 max_fails=2 fail_timeout=30s; 
} 
server { 
listen 80; 
server_name 10.1.1.217; 
root /nginxroot/; 
location ~ \.(txt|jsp)$ { 
proxy_pass ; 
} 
proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
proxy_set_header Host $http_host; 
} 
} 
mkdir /nginxroot/ 
//以上是简单的实现的是对jsp访问的均衡调度,实验随便改的 
http://hxq0506.iteye.com/blog/1388971 //参考链接 
测试: 
启动顺序 tomcat – nginx – memcached 
测试页面test.jsp,放入webapps/ROOT: 
Server Info: 
SessionID:<%=session.getId()%> 
SessionIP:<%=request.getServerName()%> 
SessionPort:<%=request.getServerPort()%> 
<% 
out.println("127"); //标记后端节点 
%> 
结果:session 保持不变 

阅读(1218) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~