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]