memcache+tomcat7.0.37+nginx实现session共享
一、session工作原理
由于http是无状态的协议,当我们访问了页面A,然后访问页面B,http无法确定这2个页面的访问是来自同一个人。因此,我们要用cookie或session来跟踪用户,根据授权和用户身份来显示不同的页面。例如:用户a和b同时进行了把商品加入购物车,这时我们不能区分a和b,所以需要一个session ID来维持这个过程。Cookie是服务器发送给客户端的,并且把信息保存在客户端的一个文件中,里面包含用户访问信息,便于下一此访问直接对到对应的后端服务器。Cookie可以被禁用,而session id相当于自己的一个属性,代表自己的身份。 我们使用session共享,是为了防止tomcat服务器重启或掉了之后的数据丢失情况;维持多个节点之间数据的一致性。
以下为基于memcache缓存的session共享: tomcat1和tomcat2将session分别存储在memcached2和memcached1中(实现交叉存储),当memcached2不可用时,才将tomcat1的数据存储在memcache1中,这样好处是,当tomcat1和memcached1同时崩溃时也不会丢失session会话,避免单点故障。
nginx ---> tomcat ---> memcached
二、实验步骤
Server6: 172.25.2.6 nginx tomcat memcached
Server1: 172.25.2.1 tomcat memcached
真机中进行测试。
1) 在server6和server1中安装jdk。
---> tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
---> cd /usr/local
---> ln -s jdk-7u79/ java # 做一个软链接,方便使用
---> vim /etc/profile # 配置java的环境变量
---> source /etc/profile # 重新加载配置文件
2)对安装好的jdk进行检测
---> Vim test.java # 在java中,类名要和文件名相同;且文件名后缀为.java
---> javac test.java # 生成.class文件
---> java test # 执行后的运行结果为hello xniu~
3)在server6和server1中安装tomcat
---> tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local
---> cd /usr/local
---> ln -s apache-tomcat-7.0.37/ tomcat # 软连接
4)在tomcat的默认发布目录编写.jsp文件测试,查看apache是否安装成功(在此以server6作为实例演示,server1步骤与6相同)
---> vim test.jsp
---> /usr/local/tomcat/bin/startup.sh # 启动tomcat服务
#在浏览器中,使用172.25.2.6:8080/test.html来进行查看
5)对server6的nginx服务进行配置。
---> vim /usr/local/nginx/conf/nginx.conf
6)在server6和server1中下载memcached服务,并启动服务。
---> yum install -y memcached # 在yum仓库中有,可直接下载
---> /etc/init.d/memcached start
---> netstat -antlp| grep 11211 # memcached服务默认端口为11211
7)在server6和server1中编辑tomcat的配置文件,添加如下信息
---> vim /usr/local/tomcat/conf/content.xml # 添加在最后
8) 修改server1和server6下的test.jsp页面。内容如下
---> vim /usr/local/tomcat/webapps/ROOT/test.jsp
10) 将jar包放在server6和server1的/usr/local/tomcat/lib下。
11) 打开server6的tomcat,nginx;server1的tomcat(由于之前启动了memcache,在这就不启动了)
---> /usr/local/tomcat/bin/startup.sh
---> nginx
# 此时,我们可以在日志中查看memcache的节点信息
---> cat /usr/local/tomcat/logs/cataline.out
12) 此时,我们的配置大致完成了,可以在浏览器中输入172.25.2.6/test.jsp
# 安装telnet,查看memcache的存储记录
---> yum install -y telnet
---> telnet localhost 11211 # localhost为主机ip;11211为端口号(使用get id号来查看)