搭建nginx+tomcat+memcached服务,验证session共享

4 篇文章 0 订阅
1 篇文章 0 订阅

使用memcached 实现session共享:
session 会话:从打开网站开始到退出该网站的过程。
http协议是无状态连接协议 ,服务器不会记录终端访问过本服务器。第一次连接服务器时需要握手连接,同样的终端第二次连接服务器时不记得上一次的连接,还要握手连接。
web服务器往往多台使用集群技术,并使用第三方软件进行代理访问。由代理服务器决定每次访问哪一台web主机,也就会导致同一次session过程中,几次http请求会被分散到不同的web服务器。但是该session往往内部有很强的关联,这样被分散到不同的web服务器上后,容易数据丢失,产生错误。
例: 淘宝购物,选择完衣服,鞋子,书,最后去结账时,可能购物车只有衣服和书,鞋子在其他服务器上没找到。
http://www.taobao.com
cookies session_id 97
http://www.taobao.com
client 衣服 鞋子 书 去结账
|
nginx

       taobao_1      taobao_2   
       memcached     mem

使用session_id,第一次连接成功后回服务器生成记录session_id,并发给客户端,客户端将session_id存储在cookies文件中。客户端再次连接时,协议会携带cookies信息,memcached就识别出该连接 。web服务器虽然分发sessionID,但是web服务器并不记录sessionID

构建nginx+tomcat+memcached服务:
双tomcat网站服务,单memcached缓存服务,单nginx反向代理服务(默认不缓存数据)

               client    
                  |
               1.1.1.254
                nginx
              192.168.0.254
                  |
tomcat_web_100        tomcat_web_101           
     主_mem_20       备_mem_30
        200m           200m

网页文件时用java编写的时候,要搭建tomcat服务器:

service httpd stop#关闭其他版本的web服务
chkconfig --level 35 httpd off
yum -y   install   glibc.i686    glibc-devel.i686#库文件安装,系统预装x86版本glibc,安装i686版本glibc
chmod  +x  jdk-6u27-linux-i586.bin#tomcat服务运行环境包,加执行权限即可使用
./jdk-6u27-linux-i586.bin#执行安装,生成jdk1.6.0_27
mv   jdk1.6.0_27    /usr/local/jdk#将目录移动到系统目录
cd  /usr/local/jdk/
[root@pc205 jdk]# bin/java   -version#查看版本信息
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) Client VM (build 20.2-b06, mixed mode, sharing)

编辑系统配置文件指定jdk程序的安装位置,配置环境变量:

[root@www ~]# vim   /etc/bashrc
export    JRE_HOME=/usr/local/jdk
export    JAVA_BIN=/usr/local/jdk/bin
export    PATH=$JRE_HOME/bin:$PATH
export    CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar
export    JRE_HOME    JAVA_BIN    PATH    CLASSPATH
[root@www ~]# source   /etc/bashrc#重新加载该文件
[root@pc205 jdk]# echo   $JRE_HOME#查看环境变量
/usr/local/jdk

安装tomcat:

tar   -zxvf   apache-tomcat-6.0.32.tar.gz  -C     /usr/local/#提供tomcat服务的软件包,解压即可用,免安装
cd /usr/local/
mv  apache-tomcat-6.0.32     tomcat#更改名字

cd tomcat
bin/startup.sh 启动服务命令
bin/shutdown.sh 停止服务命令
webapps/ROOT/ 网页目录
conf 配置文件存放目录,使用xml语言编写

[root@pc205 conf]# netstat  -untnalp | grep :8080#tomcat默认监听8080端口,检查该端口
[root@pc205 conf]# /usr/local/tomcat/bin/startup.sh #启动服务脚本
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar
[root@pc205 conf]# netstat  -untnalp | grep :8080#服务启动成功
tcp        0      0 :::8080                     :::*                        LISTEN      26140/java          

http://localhost:8080报错401认证错误,默认有安全认证机制,需要添加登录管理页面认证用户才能登陆。

vim  /usr/local/tomcat/conf/tomcat-users.xml
<tomcat-users>
     <role rolename="manager-gui"  />#角色类型,有四种角色
     <user  username="admin"    password="123456"    roles="manager-gui" />
</tomcat-users> 

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh#重新启动tomcat服务
登陆http://localhost:8080,输入用户名密码

建立测试页面:

vim  /usr/local/tomcat/webapps/ROOT/test.jsp
  1 <html>
  2         <body bgcolor="green">
  3             <center>
  4                 <%=  request.getSession().getId()  %>#获取sessionID值
  5                 <h1>tomcat 192.168.0.100</h1>
  6             </center>
  7         </body>
  8 </html>

配置nginx 做反向代理,把自己接收到的请求以轮询的方式分发给tomcat服务器。

sed -i '/^$/d' nginx.conf
sed -i '/^#/d' nginx.conf#清除空行和注释
vim /usr/local/nginx/nginx.conf 
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream "tomcatweb" {
        server  192.168.0.100:8080;
        server  192.168.0.101:8080;
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass    http://tomcatweb;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

访问http://1.1.1.254/test.jsp

在20 和 30 服务器上运行memcached 服务器 使用200M物理内存做数据缓存 :

/usr/local/bin/memcached  -u  root  -m  200M  -d

给tomcat服务器安装连接memcahced服务器的连接工具 (msm)

cd   session
cp    *.jar     /usr/local/tomcat/lib/#将连接程序复制到tomcat的库中

tomcat编辑自己的配置文件,指定memcached服务器的ip地址:

vim    /usr/local/tomcat/conf/context.xml
<Context>
        <Manager   className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  memcachedNodes="mem20:192.168.0.20:11211 mem30:192.168.0.30:11211"  failoverNodes="mem30" #备用缓存服务器  requestUrilgnorePattern=".*\(ico|png|gif|jpg|css|js)$"  #不缓存的文件类型transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"  #连接memcached时调用的类                                   />
</Context>

重新启动tomcat服务:

[root@pc205 conf]# /usr/local/tomcat/bin/shutdown.sh 
[root@pc205 conf]# /usr/local/tomcat/bin/startup.sh

实际结果,web服务还是一直轮询的,但是sessionID不会改变,除非memcached坏掉了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值