设为首页 收藏本站
查看: 1332|回复: 0

[经验分享] Nginx+Memcached+Tomcat session会话共享

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-8 10:05:30 | 显示全部楼层 |阅读模式
session 的序列化方案官方推荐的有 4 种:
             1. java serialization

             2. msm-kryo-serializer

             3. msm-javolution-serializer

             4. msm-xstream-serializer

             其中性能最好的数Kryo,我们使用kryo来做session


        环境:centos6.5_x64
         
        node1:192.168.0.233  (233 上面做两方面工作,tomcat和memcache)
        node2:192.168.0.234  (234,上面做两方面工作,tomcat 和nginx反向代理器)
        (主机名和ip对应写入两台主机的/etc/hosts文件中)
        这里用两台服务器做的实验:
        node1 既做tomcat节点,又做memcache
        node2既做tomcat节点也做代理(可以用四台台,一台代理,一台memcache,和两个节点)
          
        一.配置代理服务器
        1.安装依赖包:

        Groupadd  www
        Useradd  -s /sbin/nologin www
        1.yum  -y install  gcc  gcc-c++   libgcc
        2.安装Ngingx nginx-1.4.4.tar.gz
        tar -zxvf  /source/Packages/pcre-8.33.tar.gz
        cd pcre-8.33
        ./configure
        make  &&  makeinstall
        tar -zxvf nginx-1.4.4.tar.gz
        cd nginx-1.4.4.
        ./configure --prefix=/usr/local/nginx --user=www --group=www--conf-path=/etc/nginx/nginx.conf--with-http_stub_status_module --with-http_ssl_module--with-http_gzip_static_module --with-http_flv_module--with-pcre=/usr/local/src/pcre-8.35
        make  &&  make install   
          
        /usr/local/nginx/sbin/nginx         启动nginx       
          
        2.代理服务器配置:
        user www www;
        worker_processes  1;
        #error_log logs/error.log;
        #error_log logs/error.log  notice;
        #error_log logs/error.log  info;
        #pid       logs/nginx.pid;
        events {
           worker_connections  1024;
        }
        http {
           include       mime.types;
           default_type application/octet-stream;
           sendfile        on;
           keepalive_timeout  65;
           server {
               listen       80;
               server_name  localhost;
            location  / {                           #代理配置
                      proxy_pass  http://company;
                       proxy_set_header   Host            $host;
                       proxy_set_header   X-Real-IP        $remote_addr;
                       proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
               }
               error_page   500 502 503 504  /50x.html;
               location = /50x.html {
                    root  html;
               }
            }
          upstream company {
        server  192.168.0.233:8081;       #反向代理丢给两台主机
        server  192.168.0.234:8081;
              }
        }
          
          
          
          
          
        二.配置node1 node2  tomcat环境(两台机器同样配置)
        1.安装jdk
        root@node1 src]# sh   jdk-6u45-linux-x64.bin
        mv    jdk1.6.0_4   /usr/jdk1.6.0_45
        2.添加环境变量:
        vi  /etc/profile
        export JAVA_HOME=/usr/jdk1.6.0_45
        export PATH=$PATH:$JAVA_HOME/bin  
        exportCLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
          
        source  /etc/profile  生效
        3.测试
        [iyunv@node2 ~]# java -version
        java version "1.6.0_45"
        Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
        Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
        4.安装tomcat
          
        tar -zxvf apache-tomcat-7.0.54.tar.gz   
        mv    apache-tomcat-7.0.54   /usr/local/tomcat
        /usr/local/tomcat/bin/startup.sh         #tomcat 启动脚本
        注意:复制依赖jar 包到/usr/local/tomcat/lib 里面(这些包必须拷贝到tomcat的lib库里面)
        26719405_1418104742n9U9.jpg
        5.修改端口为8081
           #默认8080  改为 8081
                      connectionTimeout="20000"
                       redirectPort="8443" />
        6.tomcat  连接 memcache  session 会话共享配置(node1node2 配置一样)session 存储到192.168.0.233:11211 memcache里面。

        vi  /usr/local/tomcat/conf/context.xml#将下面配置复制到 和 之间
        两台主机做同样的配置
                memcachedNodes="node1:192.168.0.233:11211"
                requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"
                        sticky="false"
                                storageKeyPrefix="context"
                                        lockingMode="uriPattern:/path1|/path2"
                                                sessionBackupAsync="false"
                                                        sessionBackupTimeout="100"
                                                                copyCollectionsForSerialization="false"
                                                                        transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>

         
          
          
        三.配置memcached(这里我把memcached放在233上面了)
        1.分别把memcachedlibevent下载回来,放到 /usr/local/src 目录下:
# cd /usr/local/src
# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz
        2.先安装libevent
# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure –prefix=/usr
# make
# make install
        3.测试libevent是否安装成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 ->libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
还不错,都安装上了。
        4.安装memcached,同时需要安装中指定libevent的安装位置:
# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure –with-libevent=/usr
# make
# make install
如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
安装完成后会把memcached放到 /usr/local/bin/memcached ,
        5.测试是否成功安装memcached
# ls -al /usr/loc
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug
        6.启动memcache
        useradd   memcache   #添加memcache用户
             memcached -m64 -d -u memcache -p 11211 -l 192.168.0.233 -c 5000 -P /tmp/memcached.pid
        7.启动两个tomcat
        root@node1 ~]# tail -f  /usr/local/tomcat/logs/catalina.2014-12-08.log  #监控日志看看是否偶报错
        启动: node1
         
        日志查看:
          26719405_1418104417gs36.jpg

          
        启动: node2  
        [iyunv@node2 bin]# /usr/local/tomcat/bin/startup.sh
         
        日志查看:
26719405_1418104435akNd.jpg
        [iyunv@node1 ~]# tail -f  /usr/local/tomcat/logs/catalina.2014-12-08.log
         
        已经配置完毕
        我们可以停掉某个Tomcat服务,然后观察Session会话数据的复制过程,能够保证当前集群中的会话数据不丢失,另一个结点仍然能提供基于该存在Session的服务。
        测试
        测试页面,在tomcat根目录,写一个test.jsp 复制下面的内容进去!
        <%@ pagecontentType="text/html;charset=UTF-8" isELIgnored="false"%>
        SessionID:<%=session.getId()%>

        SessionIP:<%=request.getServerName()%>

        SessionPort:<%=request.getServerPort()%>
        <%
        out.println("This is Tomcat Server1111111");
        %>
       


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-148336-1-1.html 上篇帖子: Nginx+Memcached+Tomcat集群配置实践(Sticky Session) 下篇帖子: session会话保持之session服务器-tomcat + msm + memcached
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表