zhaoke0727 发表于 2018-12-25 13:38:40

LAMT+memcached实现session绑定

  现今,互联网上,好多的公司为了网站的健壮性,都用了java做了框架,网页也都是JSP的,他们的服务器都采用了tomcat的架构,为了了解这种架构,下面我做了一个实验。   

  利用httpd在前端做代理,后端两个tomcat提供服务,我们还采用了NFS网络共享存储,MySQL服务器,为网站的数据一致性提供保障。
http://www.365lsy.com/wp-content/uploads/ckfinder/images/tomcat_tp_2.gif
系统:CentOS 6.5
  地址说明:172.16.30.1是我们的惟一公网地址,192.168.160.0网段为内网地址
  

  搭建我们的tomcat服务器
  当我们的tomcat运行在Linux平台上时,它需要java的虚拟机JVM,这里,jdk就提供了java虚拟机
  在我们的前面两个节点上都安装JVM环境
# rpm -ivh jdk-7u9-linux-x64.rpm
# vim /etc/profile.d/jdk.sh   #将java程序加入到环境变量中
JAVA_HOME=/usr/java/latest
PATH=$JAVA_HOME/bin:$PATH
exportJAVA_HOME PATH
# source /etc/profile.d/jdk.sh  在两个节点上安装tomcat服务
# tar -zxf apache-tomcat-7.0.55.tar.gz -C /usr/local/
# ln -sv apache-tomcat-7.0.55tomcat
# vim /etc/profile.d/tomcat.sh   #将tomcat的脚本文件加入到环境变量中去
exportCATALINA_HOME=/usr/local/tomcat
exportPATH=$CATALINA_HOME/bin:$PATH
# source /etc/profile.d/tomcat.sh  为tomcat提供启动脚本
# vim /etc/rc.d/init.d/tomcat
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
# JAVA_OPTS='-Xms64m -Xmx128m'
JAVA_HOME=/usr/java/latest
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
case $1 in
start)
exec $CATALINA_HOME/bin/catalina.sh start ;;
stop)
exec $CATALINA_HOME/bin/catalina.sh stop;;
restart)
$CATALINA_HOME/bin/catalina.sh stop
sleep 2
exec $CATALINA_HOME/bin/catalina.sh start ;;
*)
echo "Usage: `basename $0` {start|stop|restart}"
exit 1
;;
esac
# chmod +x /etc/rc.d/init.d/tomcat   #添加执行权限
# chkconfig –add tomcat  在tomcat的工作目录下创建test目录,并且提供主页和相关目录
  创建目录(两个节点都创建)
# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}  分别为两个节点提供主页
  node1:
# vim /usr/local/tomcat/webapps/test/index.jsp


node1

    node1.365lsy.com
   
      
      Session ID
   
      
      
      
      Created on
      
   
   

  node2:
# vim /usr/local/tomcat/webapps/test/index.jsp


node2

    node2.365lsy.com
   
      
      Session ID
   
      
      
      
      Created on
      
   
   

  此时,启动tomcat服务,分别在浏览器中访问这两台主机
# service tomcat starthttp://www.365lsy.com/wp-content/uploads/ckfinder/images/tomcat_web_1.png
http://www.365lsy.com/wp-content/uploads/ckfinder/images/tomcat_web_2.png
  此时,我们在前端使用httpd服务器分别调度到这两台tomcat服务器
  确保我们的httpd已经有proxy这个模块了
# httpd -t -M | grep proxy   #确保有以下几个模块
proxy_module (shared)
proxy_balancer_module (shared)
proxy_http_module (shared)
proxy_ajp_module (shared)  添加配置文件,内容如下
# vim /etc/httpd/conf.d/mod_proxy.conf

    BalancerMember ajp://192.168.160.129:8009 route=node1   #这里的route指定的名称在tomcat中指定
    BalancerMember ajp://192.168.160.130:8009 route=node2   #这里使用ajp的协议
    ProxySet lbmethod=byrequests

ProxyPass /balancer://lb1/
ProxyPa***everse /balancer://lb1/  重启我们的httpd服务,在浏览器中访问
# service httpd restarthttp://www.365lsy.com/wp-content/uploads/ckfinder/images/tomcat_web_3.png
http://www.365lsy.com/wp-content/uploads/ckfinder/images/tomcat_web_4.png
  为了使我们的后端tomcat服务器,不能被用户直接访问,我们应该将8080端口关闭,在两个tomcat节点上进行
# vim /usr/local/tomcat/conf/server.xml
         #将此段注释掉,调试时,可以打开  并且添加此选项:

  httpd会将请求调度到后端的不同的tomcat服务器上,但是,如果,我们的是购物网站,如何实现session绑定呢?
  最好的方法就是session的服务器,我们在我们的两个tomcat服务器上安装memcached服务
# yum install -y memcached  并将memcached启动
# service memcached start  为tomcat提供下列的类文件(下列操作在两个tomcat节点上进行)
  javolution-5.5.1.jar
memcached-session-manager-1.8.2.jar
memcached-session-manager-tc7-1.8.2.jar
msm-javolution-serializer-1.8.2.jar
spymemcached-2.10.2.jar
  将上面的这些文件拷贝到tomcat的lib目录中
# cp *.jar /usr/local/tomcat/lib/  然后,分别更改两个节点的配置文件
  添加如下选项:


  重启我们的tomcat服务,然后,再次访问查看session信息
# service tomcat restarthttp://www.365lsy.com/wp-content/uploads/ckfinder/images/tomcat_web_6.png
  此时,session信息是完全一致的
  搭建NFS服务器,并启动服务
# mkdir -pv /web/jcenter
# vim /etc/exports
/web/jcenter    192.168.160.0/16(rw,no_root_squash)
# service nfs start  提供jcenter程序包
# tar xf JavaCenter_Home_2.0_GBK.tar.bz2 -C /web/jcenter/
# cd JavaCenter_Home_2.0_GBK/
# mv * ./..
# cd ..
# rm -rf JavaCenter_Home_2.0_GBK/
# chmod -R 755 attachment/  然后,指定数据库的用户名和密码等信息
# vim config.properties
dbHost = 192.168.160.131
dbPort = 3306
dbUser = jcenter
dbPw = jcenter
dbName = jcenter  搭建MySQL数据库,新建用户,并赋予权限
# yum install -y mysql-server
# service mysqld start  创建jcenter数据库
mysql> create database jcenter;
mysql> grant all on jcenter.* to jcenter@'192.168.160.%' identified by 'jcenter';
mysql>flush privileges;  回到我们的tomcat服务器,新建实例jcenter,在两个节点上都操作
# mkdir -pv /usr/local/tomcat/webapps/jcenter
# mount -t nfs 192.168.160.132:/web/jcenter /usr/local/tomcat/webapps/jcenter/  然后,再次更改tomcat的配置文件,两个节点都做修改
  #可以将原来的test改为jcenter
  

  重启tomcat服务
# service tomcat restart  到浏览器中访问jcenter/install
http://www.365lsy.com/wp-content/uploads/ckfinder/images/tomcat_web_7.png
http://www.365lsy.com/wp-content/uploads/ckfinder/images/tomcat_web_8.png
http://www.365lsy.com/wp-content/uploads/ckfinder/images/tomcat_web_10.png
    此时,我们的tomcat上的jcenter是能够正常工作的,无论怎么刷新,session信息都被绑定了,访问都不会被重新定向的,搭建session服务器,是保持用户session信息的一种非常好的方式
  




页: [1]
查看完整版本: LAMT+memcached实现session绑定