ty9919 发表于 2018-11-13 13:21:41

nginx+tomcat+memcache+session绑定

  节点信息
  节点1 ip:172.16.30.1 nginx
  节点101 ip:172.16.30.101 tomcat
  节点102 ip:172.16.30.102 tomcat
http://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_104637390.png
  通过nginx代理访问后端tomcat,并实现memcache的会话绑定,即同一个浏览器访问得到的session结果是一样的
  1、节点1安装nginx
# yum install -y nginx  1.1、启动nginx测试
# service nginx starthttp://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_35f9dbe1-c046-45c8-85f6-0bd15004e46b.png
  2、节点101和102分别安装jdk和tomcat
  2.1、安装jdk,版本1.7.67
# rpm -ivh jdk-7u67-linux-x64.rpm  
Preparing...                ###########################################
  
1:jdk                  ###########################################
  
Unpacking JAR files...
  
rt.jar...
  
jsse.jar...
  
charsets.jar...
  
tools.jar...
  
localedata.jar...
  
jfxrt.jar...
  导出环境变量
# vim /etc/profile.d/jdk.sh  
export JAVA_HOME=/usr/java/latest
  
export PATH=$JAVE_HOME/bin:$PATH
  
# . /etc/profile.d/jdk.sh
  测试是否正确安装以及变量是否导出
# java -version  
java version "1.7.0_67"
  
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
  
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
  
2.2、安装tomcat
  
# tar xf apache-tomcat-7.0.55.tar.gz-C /usr/local/
  
# cd /usr/local/
  
# ln -sv apache-tomcat-7.0.55/ tomcat
  
`tomcat' -> `apache-tomcat-7.0.55/'
  导出环境变量
# vim /etc/profile.d/tomcat.sh  
export CATALINA_HOME=/usr/local/tomcat
  
export PATH=$CATALINA_HOME/bin:$PATH
  
# . /etc/profile.d/tomcat.sh
  启动tomcat测试是否安装成功以及环境变量是否导出
# catalina.sh start  
# catalina.sh start
  
Using CATALINA_BASE:   /usr/local/tomcat
  
Using CATALINA_HOME:   /usr/local/tomcat
  
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  
Using JRE_HOME:      /usr/java/latest
  
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  
Tomcat started.
  访问测试,注意这里默认端口是8080,访问是要注意
http://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_103166671.pnghttp://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_103184828.png
  关闭tomcat
# catalina.sh stop  
Using CATALINA_BASE:   /usr/local/tomcat
  
Using CATALINA_HOME:   /usr/local/tomcat
  
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  
Using JRE_HOME:      /usr/java/latest
  
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  3、安装memcache,此处使用的是编译安装,版本1.4.15
# yum install -ygcc libevent-devel  
# ./configure --with-libevent --prefix=/usr/local/memcached
  
# make && make install
  安装完成去安装目录测试是否安装成功
# cd /usr/local/memcached/bin  
# ./memcached -i
  
memcached 1.4.15
  
Copyright (c) 2003, Danga Interactive, Inc.
  
All rights reserved.
  
以下省略N多.......
  创建运行memcache的用户,并连接
# useradd -r memcache  
# ./memcached -d -v -p 12000 -m 512 -u memcache
  解释:-d表示以守护进程方式运行memcached;-v表示输出警告和错误信息;-p指定监听的端口号;-m指定能使用的最大内存,单位MB;-u指定运行memcached的账户,非root用户。
  使用# ps -ef | grep memcached查看进程。
  命令基本选项说明:
  -p   监听的TCP端口 (默认: 11211)
  -d    以守护进程方式运行memcached
  -u   运行memcached的账户,非root用户
  -m   最大的内存使用,单位是MB,默认是 64 MB
  -c   软连接数量,默认是1024(最大并发连接数)
  -v    输出警告和错误信息
  -vv    打印客户端的请求和返回信息
  -h    打印帮助信息
  -i    打印memcached和libevent的版权信息
  使用telnet连接验证服务是否可用
# yum install -y telnet  
# telnet 172.16.30.101 12000
  
Trying 172.16.30.101...
  
Connected to 172.16.30.101.
  
Escape character is '^]'.
  使用stats命令查看状态,会显示很多当前的状态
stats  
STAT pid 4838
  
STAT uptime 6747
  
STAT time 1422407090
  
STAT version 1.4.15
  
STAT libevent 1.4.13-stable
  
STAT pointer_size 64
  
STAT rusage_user 1.142826
  
STAT rusage_system 0.705892
  
STAT curr_connections 12
  
STAT total_connections 15
  
STAT connection_structures 13
  
STAT reserved_fds 20
  
STAT cmd_get 16
  
STAT cmd_set 8
  
STAT cmd_flush 0
  
STAT cmd_touch 0
  
STAT get_hits 1
  停止memcache服务
# killall memcached  4、为tomcat配置memcache
  Tomcat要支持memcached管理Session,需要调用一些jar库文件:
  memcached-session-manager项目地址,http://code.google.com/p/memcached-session-manager/
  下载如下jar文件至各tomcat节点的tomcat安装目录下的lib目录中,其中的${version}要换成你所需要的版本号,tc${6,7,8}要换成与tomcat版本相同的版本号。
  memcached-session-manager-${version}.jar
  memcached-session-manager-tc${6,7,8}-${version}.jar
  spymemcached-${version}.jar
  msm-javolution-serializer-${version}.jar
  javolution-${version}.jar
  不同的版本对应的库文件不一样,需要对应使用
  本实验使用的库文件如下所示
-rw-r--r-- 1 root root452748 Jan 28 07:43 javolution-5.4.3.1.jar  
-rw-r--r-- 1 root root146932 Jan 28 07:42 memcached-session-manager-1.8.1.jar
  
-rw-r--r-- 1 root root   11283 Jan 28 07:42 memcached-session-manager-tc7-1.8.1.jar ##因为使用的tomcat版本是7.0.55所以此处使用的是tc7
  
-rw-r--r-- 1 root root   71050 Jan 28 07:43 msm-javolution-serializer-1.8.1.jar
  
-rw-r--r-- 1 root root439107 Jan 28 07:42 spymemcached-2.10.2.jar ##此文件无版本区别
  注意:以上节点101上的配置同样须在节点102进行
  5、配置tomcat使之可以使用memcache服务
  分别在两个tomcat上的某host上定义一个用于测试的context容器,并在其中创建一个会话管理器,如下所示:
  ##可以使用默认host,代码插入位置如图
  有一处需要注意:Engine处保持默认即可,不需要添加jvmRoute
http://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_44415462-ff7d-4a42-91bc-ba215f6102af.pnghttp://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_ff306fdf-6ac3-4c8f-b7a2-8d5f56deb021.png
  
            
  
            
  分别为两个context提供测试页面:
  节点101:
# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}# vim /usr/local/tomcat/webapps/test/index.jsp  添加如下内容:
  

  
TomcatA
  

  
    TomcatA.magedu.com
  
   
  
      
  
      Session ID
  
   
  
      
  
      
  
      
  
      Created on
  
      
  
   
  
   
  

  

  节点102:
# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}  
# vim /usr/local/tomcat/webapps/test/index.jsp
  添加如下内容:
  

  
TomcatB
  

  
    TomcatB.magedu.com
  
   
  
      
  
      Session ID
  
   
  
      
  
      
  
      
  
      Created on
  
      
  
   
  
   
  

  

  分别访问测试
http://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_103340046.pnghttp://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_2776217b-5f89-436a-94b9-d8b7e0192746.png
  如果此时将n1即节点101的memcache关闭的话,再次访问session信息便会在n2上
  因为访问的是两个节点所以session信息并不一样,如果通过前端代理访问则会是同一个session
  下面将通过设置nginx实现前端代理实现memcache的session绑定
  配置nginx
# vim /etc/nginx/nginx.conf  
在http段中添加upstream
  
upstream tomcat {
  
server 172.16.30.101:80;
  
server 172.16.30.102:80;
  
}
  
在location中添加代理
  
location / {
  
root   html;
  
indexindex.jsp index.html index.htm;
  
proxy_pass    http://tomcat;
  
}
  按下图修改即可
http://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_8c0b6102-2819-4b9f-aad9-1b0b0e8cdeaa.png
  重新载入nginx
# service nginx reloadReloading nginx:                                             6、访问测试
http://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_924b8add-dad5-43ab-a645-ff265375cb8f.pnghttp://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_af0bb00e-35b2-442b-a8be-83fb299ff4cb.png
  此时无论如何刷新都不会变了,我们可以换一个浏览器试一试,也是相同的,这样就实现了通过memcache做session服务器,nginx前端代理的session绑定
http://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_1c49688d-2f4f-492e-8065-1895a71d78ac.pnghttp://linuxu.qiniudn.com/wp-content/uploads/2015/02/wpid-fa15bef10782a1dbf0f85f29daa70511_9419574f-ac7a-4723-8514-b1142ee82aff.png


页: [1]
查看完整版本: nginx+tomcat+memcache+session绑定