zoukankan      html  css  js  c++  java
  • Session 独立服务器之Memcached 与 Redis

    Session 服务器之 Memcached(tomcat,memcached 为 7 版本,版本要配套)(多台tomcat)

    (一台Nginx,两台tomcat)

    1、配置各个机器的主机名
    2、配置主机名与IP的映射
    3、关闭防火墙和selinux

    两台 tomcat 上安装 Memcached

    [root@node1 ~]# yum -y install libevent memcached

    [root@node1 ~]# memcached -u root -m 512M -n 10 -f 2 -d -vvv -c 512

    选项:

           -h          #查看帮助信息

           -p           #指定 memcached 监听的端口号 默认11211

           -I           #memcached 服务器的IP地址

            -u          #memcached 程序运行时使用的用户身份必须是 root 用户

             -m        #指定使用本机的多少物理内存数据默认 64M

             -c         # memcached 服务的最大链接数

           -vvv       #显示详细信息

            -n         # chunk size 的最小空间是多少单位字节

             -f        # chunk size 大小增长的倍数默认为  1.25 倍

             -d        #在后台启动

    [root@node1 ~]#netstat -anpt | grep :11211 #(检测 memcached 是否存活,memcached 端口为 11211)

    测试 memcached 能否 存取数据

    [root@node1 ~]# yum -y install telnet

    [root@node1 ~]# telnet 192.168.200.113 11211

    set username 0 0 8

    zhangsan

    STORED   #值以存进

    get username

    VALUE username 0 8

    zhangsan 

    END

    quit

    Connection closed by foreign host

    最后执行让 Tomcat-1 Tomcat-2 通过(msm) 连接到 memcached

    将 session 包中的 “*.jar” 复制到 /usr/local/tomcat/lib/ 下面

    [root@node1 ~]# cp session/* /usr/local/tomcat/lib/

    编辑 tomcat 配置文件连接到指定的 memcached 服务器,两台 tomcat 配置一样

     [root@node1 ~]# vim /usr/local/tomcat/conf/context.xml

    <Context>

    <Manager   className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

    memcachedNode="memA:192.168.200.113:11211 memB:192.168.200.114:11211"

    requestUrilgnorePattem=".*(ico|png|gif|jpg|js|css)$"

    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />

    </Context>

    重启服务

    如果成功,tomcat 与 memcached 端口会连在一起,前后有变化

    [root@node1 ~]# netstat -anpt | grep java

    浏览器访问测试时,关闭 memB:192.168.200.114 的 memcached服务器,在进行测试发现 memcached 服务器发生了变化,但是 SessionID 并没有变化

    Session 服务器之 Redis    (任意一台机器)

    Redis 与 memcached 的区别

    内存利用率:使用简单的 Key-value(键值对)存储的话,Memcached 的内存利用率更高,而如果 Redis 采用 hash 结构来做 key-value 存储,由于其组合式的压缩,其内存利用率会高于 Memcached。

    性能对比:由于 Redis 只使用单核,而 Memcached 可以使用多核,所以平均每一个核上 Redis 在存储小数据时比 Memcached 性能更高,而在 100k 以上的数据中,Memcached 性能要高于 Redis,虽然 Redis 最近也在存储大数据的性能上进行优化,但是比起 Memcached,还是稍有逊色。

    Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用

    Redis 支持数据的备份,即 master-slave 模式的数据备份

    Redis 不仅仅支持简单的 key-Value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储

    (一台Nginx,两台tomcat)

    1、配置各个机器的主机名
    2、配置主机名与IP的映射
    3、关闭防火墙和selinux

    安装部署 Redis

    [root@node1 ~]# tar xf redis-3.2.5.tar.gz -C /usr/local/

    [root@node1 ~]# cd /usr/local/local/redis-3.2.5/

    [root@node1 redis-3.2.5]# make

    这里如果报错:tclsh8.5:not found  发现少了tcl报错,则安装 tcl

    wget http://downloads.sourceforge.net/tcl/tcl8.5.9-src.tar.gez

    cd /tcl8.5.9-src/unix

    ./configure

    make &&make  install

    接着 make 就没报错了

    [root@node1 redis-3.2.5]# mkdir -p /usr/local/redis/{bin,etc,var}

    [root@node1 redis-3.2.5]# cd src/

    src 目录下这些文件作用如下

    redis-server:Redis服务器的daemon启动程序

    redis-cli:Redis命令行操作工具,你也可以用 telnet 根据其纯文本协议来操作

    redis-benchmark:Redis 性能测试工具,测试 Redis 在你的系统及你的配置下的读写性能

    redis-stat:Redis 状态检测工具,可以检测 Redis 当前状态参数及延迟状态

    [root@node1 src]# cp redis-benchmark redis-check-aof redis-cli redis-server redis-check-rdb  /usr/local/redis/bin/

    [root@node1 redis-3.2.5]# cp ../redis.conf    /usr/local/redis/etc

    [root@node1 redis-3.2.5]# vim /usr/local/redis/etc/redis.conf    # 修改配置文件

    daemonize  no   改为   daemonize yes   #是否把 redis-server 启动在后台,默认是"否"。若改成 yes, 会生成一个pid 文件

    bind 127.0.0.1   改为 bind 0.0.0.0  # 任意主机都可访问

    其他的看需要修改

    关闭 Redis

    [root@node1 redis-3.2.5]# killall -9 redis-server

    启动 Redis

    [root@node1 redis-3.2.5]# /usr/local/redis/bin/redis-server  /usr/local/redis/etc/redis.conf

    查看是否启动

    netstat  -anpt | grep redis    (netstat -anpt | grep 6379)

    监控 Redis  共享 session(也可不用监控)

    [root@node1 redis-3.2.5]#/usr/local/redis/bin/redis-cli -p 6379  monltor

    将 tomcat 需要调用 Redis 的 jar 包放入 tomcat/lib

    [root@node1 redis-3.2.5]# cp tomcat-redis-session-manager-tomcat7.jar tomcat-juli.jar commons-logging-1.1.3.jar commons-pool2-2.2.jar jedis-2.5.2.jar   /usr/local/tomcat/lib

    修改 context.xml 文件以支持调用  Redis

    [root@node1 redis-3.2.5]# vim /usr/local/tomcat/conf/context.xml

    <Context>

    <Valve   className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />

    <Manager   className="com.orangefunction.tomcat.redissessions.RedisSessionManager"

    host="192.168.200.113"     //redis 的IP地址

    port="6379"

    database="0"

    maxinactiveinterval="60" />

    </Context>

    重启 tomcat 服务

  • 相关阅读:
    windows下编译Boost库
    linux下编译Boost库
    CEPH安装教程(下)
    CEPH安装教程(中)
    CEPH安装教程(上)
    nfs使用教程
    iscsi使用教程(下)
    POJ-2096 Collecting Bugs 概率dp
    HDU-3586 Information Disturbing 树形dp+二分
    HDU-1024 Max Sum Plus Plus 动态规划 滚动数组和转移优化
  • 原文地址:https://www.cnblogs.com/2567xl/p/11583298.html
Copyright © 2011-2022 走看看