zoukankan      html  css  js  c++  java
  • memcached的安装(server、client)、magent整合

    声明:本编文章基于网络上的文章(90%),基本就是把我的安装步骤写一下,遇到问题记录一下

    1、背景:项目需要多台服务器负载均衡,我们的应用有付费会员,不能让一个账号随便登陆,一个时间段只能一个账号,这就牵扯到几个独立的web引用共享session,

    2、方案:1)tomat自身的配置,实现session共享,缺点:每个tomcat都是一个全部的session,性能是瓶颈

         2)找分布式的缓存工具(ehcahe、memcached等),最后确定用memcache,理由是:总监定的,这几个工具都没用过

    3、环境:目前测试环境:

          server端:lenovo的T100 G11,centos 6.4 64位,memcached-1.4.22

          client端:暂无(还没安装到那里)

    4、server端安装(网络参考,这里复制一下,原文地址:http://www.cnblogs.com/zgx/archive/2011/08/10/2134097.html):

    下载并安装Memcache服务器端
    服务器端主要是安装memcache服务器端.
    下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
    另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.3。(如果你的系统已经安装了libevent,可以不用安装)
    官网:http://www.monkey.org/~provos/libevent/
    下载:http://www.monkey.org/~provos/libevent-1.3.tar.gz

    用wget指令直接下载这两个东西.下载回源文件后。
    1.先安装libevent。这个东西在配置时需要指定一个安装路径,即./configure –prefix=/usr;然后make;然后make install;
    2.再安装memcached,只是需要在配置时需要指定libevent的安装路径即./configure –with-libevent=/usr;然后make;然后make install;
    这样就完成了Linux下Memcache服务器端的安装。详细的方法如下:

    1.分别把memcached和libevent下载回来,放到 /tmp 目录下:
    # cd /tmp
    # 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
    
    安装这个的时候可能会出错(./configure -prefix=/usr这一步),提示gcc等error错误,这个是gcc的库没有安装
    yum install gcc 即可
    如果你yum的时候提示所有的镜像出错,看看你的dns是否设置成功,
    ping www.baidu.com检验一下,出现unknown说明你的dns出错了参考我的另一篇http://www.cnblogs.com/aishangyizhihu/p/4233251.html
    
    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/local/bin/mem*
    -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
    
    启动Memcached服务:
    1.启动Memcache的服务器端:
    # /usr/local/bin/memcached -d -m 512 -u root -l 192.168.1.22 -p 12000 -c 1024 -P /tmp/memcached.pid
    d选项是启动一个守护进程,
    -m是分配给Memcache使用的内存数量,单位是MB,我这里是512MB,
    -u是运行Memcache的用户,我这里是root,
    -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.1.22,
    -p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
    -c选项是最大运行的并发连接数,默认是1024,我这里设置了1024,按照你服务器的负载量来设定,
    -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
    
    2.如果要结束Memcache进程,执行:
    # kill 'cat /tmp/memcached.pid'
    也可以启动多个守护进程,不过端口不能重复。
    
    测试Memcached:
    [root@localhost /]# telnet 192.168.1.22 12000
    
    至此Memcached安装成功!
    
    常见问题:
    
    1.如果启动Memcached服务的时候遇到了
    
    /usr/local/bin/memcached: error while loading shared libraries: libevent-1.2.so.1: cannot open shared object file: No such file or directory;
    
    解决方案:
    
    [root@localhost bin]# LD_DEBUG=libs memcached -v 
    [root@localhost bin]# ln -s /usr/lib/libevent-1.2.so.1 /usr/lib64/libevent-1.2.so.1
    [root@localhost bin]# /usr/local/bin/memcached -d -m 100 -u root -p 12000 -c 1000 -P /tmp/memcached.pid
    [root@localhost bin]# ps -aux
    
    2.把Memcached服务加载到Linux的启动项中.万一机器断电系统重启.那么Memcached就会自动启动了.
    
    假如启动Memcache的服务器端的命令为:
    # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.141.64 -p 12000 -c 256 -P /tmp/memcached.pid
    
    想开机自动启动的话,只需在/etc/rc.d/rc.local中加入一行,下面命令
    /usr/local/memcached/bin/memcached -d -m 10 -p 12000 -u apache -c 256 
    上面有些东西可以参考一下:即,ip不指定时,默认是本机,用户:最好选择是:apache 或 deamon
    这样,也就是属于哪个用户的服务,由哪个用户启动。

    查看memcached进程
    ps  -ef|grep memcache

    接着往下续

    magent安装

    1.mkdir magent   
    2.cd magent/   
    3.wget http://memagent.googlecode.com/files/magent-0.5.tar.gz  
    4.tar zxvf magent-0.5.tar.gz   
    5./sbin/ldconfig   
    6.sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile   
    7.make   
    8.cp magent /usr/bin/magent   
    9.cd ../ 

     常见错误集http://www.tuicool.com/articles/fE3ABf/

    magent  命令参数说明:
    1.-h this message   
    2.-u uid   
    3.-g gid   
    4.-p port, default is 11211. (0 to disable tcp support)   
    5.-s ip:port, set memcached server ip and port   
    6.-b ip:port, set backup memcached server ip and port   
    7.-l ip, local bind ip address, default is 0.0.0.0  
    8.-n number, set max connections, default is 4096  
    9.-D do not go to background   
    10.-k use ketama key allocation algorithm   
    11.-f file, unix socket path to listen on. default is off   
    12.-i number, max keep alive connections for one memcached server, default is 20 
    13.-v verbose 

    和memcached整合之后的启动

    memcached -d -m 128 -p 11211 -u root

    memcached -d -m 128 -p 11212 -u root

    memcached -d -m 128 -p 11213 -u root

    magent -u root -n 51200 -l 192.168.1.22 -p 12000 -s 192.168.1.22:11211 -s 192.168.1.22:11212 -b 192.168.1.22:11213

    如果magent表示命令不存在则cp magent /usr/bin/magent

    -d选项是启动一个守护进程,

    -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,

    -u是运行Memcache的用户,我这里是root,

    -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,

    -p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,

    -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,

    -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,

    
    

    架构可以如下:(网上参考)

    需要注意的是,两组magent的配置最好完全一致,比如:

    北方的magent配置为:magent s-memcached1 s-memcached2 b-memcached3

    那么南方的magent配置也为:magent s-memcached1 s-memcached2 b-memcached3 

    其顺序都是一致的,因为magent在分配key到memcached上时只是简单的使用散列余数算法。

    当然如果你够懒,那么你可以直接连接备份magent,因为所有的数据上面都有。

    有个特别要注意的地方是:

    1:其中一台Memcached死掉,从magent取数据,数据会从备份的Memcached取出,保证用户不受影响.

    2:Memcached重启复活,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管备份Memcached还有数据。可采用定时维护服务器,恢复memcached

    3。如果Memcached死掉,备份机同时死掉,那么只能说明你够倒霉,此时此刻你或许能见到上帝。

  • 相关阅读:
    size_type、size_t、differentce_type以及ptrdiff_t
    题目1003:A+B ---c_str(),atoi()函数的使用;remove , erase函数的使用
    字符串中符号的替换---replace的用法
    A+B for Matrices 及 C++ transform的用法
    97.5%准确率的深度学习中文分词(字嵌入+Bi-LSTM+CRF)
    详细解读简单的lstm的实例
    如何使用 Pylint 来规范 Python 代码风格
    Python下Json和Msgpack序列化比较
    除了cPickle,cjson外还有没有更高效点的序列化库了
    python对象序列化或持久化的方法
  • 原文地址:https://www.cnblogs.com/aishangyizhihu/p/4326014.html
Copyright © 2011-2022 走看看