Memcache集群需要安装Magent

magent 配置问题详解







    一.软件下载magent+memcached

    wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz

     

    wget http://memagent.googlecode.com/files/magent-0.6.tar.gz

     

    wget http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz

     

     

     

    二。安装libevent-1.4.9-stable.tar.gz

    tar zxvf libevent-2.0.13-stable.tar.gz 

    cd libevent-2.0.13-stable

    ./configure --with-libevent=/usr

    make

    make install

     

     

     

     

    memcached: error while loading shared libraries: libevent-2.0.so.5: cannot o

    分类: Linux   1798人阅读  评论(0)  收藏  举报

    memcached基本选项

    -p 端口   监听tcp端口
    -d    以守护进程方式运行memcached
    -u username  以username运行
    -m 《num》  最大的内存使用,单位是MB ,缺省是64MB
    -c <num>  软连接数量,缺省是1024
    -v    输出警告和错误信息
    -vv   打印客户端的请求和返回信息

    检查memcached是否正常运行
    #ps aux | grep memcached

    #telnet localhost 11211
    ....
    stats
    ...
    会显示memcached的基本信息

     

    如果启动时出现“memcached: error while loading shared libraries:libevent-2.0.so.5: cannot

    open shared object file: No such file or directory”之类的信息,表示memcached 找不到

    libevent 的位置
    所以,请先使用whereis libevent 得到位置,然后连接到memcached 所寻找的路径
    首先查看,libevent 在哪里
    # whereis libevent
    libevent: /usr/local/lib/libevent.la /usr/local/lib/libevent.so /usr/local/lib/libevent.a
    然后,再看memcached 从哪里找它
    # LD_DEBUG=libs memcached -v 2>&1 > /dev/null | less
    可以看到:是/usr/lib/libevent-2.0.so.5,所以,创建软链
    [root@localhost tools]# ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
    再次启动

     

    关闭memcached :pkill memcached

     

     

     

    三。安装memcacd

    tar zxvf memcached-1.4.13.tar.gz 

    cd memcached-1.4.13

    ./configure --with-libevent=/usr

    make

    make install

     

     

    四。安装magent

    tar zxvf magent-0.6.tar.gz 

    make

     

     

     

    报错1:

    gcc -Wall -g -O2 -I/usr/local/include -m64 -c -o magent.o magent.c

    magent.c: In function 'writev_list':

    magent.c:729: error: 'SSIZE_MAX' undeclared (first use in this function)

    magent.c:729: error: (Each undeclared identifier is reported only once

    magent.c:729: error: for each function it appears in.)

    make: *** [magent.o] Error 1

     

    解决办法:

    [root@centos6 memcached]# vi ketama.h 

    #在开头加入

    #ifndef SSIZE_MAX

    #define SSIZE_MAX      32767

    #endif

     

     

     

    继续make

     

    报错2:

    gcc -Wall -g -O2 -I/usr/local/include -m64 -c -o magent.o magent.c

    gcc -Wall -g -O2 -I/usr/local/include -m64 -c -o ketama.o ketama.c

    gcc -Wall -g -O2 -I/usr/local/include -m64 -o magent magent.o ketama.o /usr/lib64/libevent.a /usr/lib64/libm.a 

    gcc: /usr/lib64/libevent.a: No such file or directory

    gcc: /usr/lib64/libm.a: No such file or directory

     

     

    解决办法:

    [root@centos6 memcached]# ln -s /usr/lib/libevent*  /usr/lib64/

    [root@centos6 memcached]# make

     

    报错3:

    gcc -Wall -g -O2 -I/usr/local/include -m64 -o magent magent.o ketama.o /usr/lib64/libevent.a /usr/lib64/libm.a 

    gcc: /usr/lib64/libm.a: No such file or directory

    make: *** [magent] Error 1

     

     

    解决办法:

    yum install glibc glibc-devel

    如果是64bit的系统则不会在/usr/lib64/libm.a 生成,如果是32bit即会有。

     

    [root@centos6 memcached]# cp /usr/lib64/libm.so /usr/lib64/libm.a

     

     

    继续make

     

     

    报错4:

    gcc -Wall -g -O2 -I/usr/local/include -m64 -o magent magent.o ketama.o /usr/lib64/libevent.a /usr/lib64/libm.a 

    /usr/lib64/libevent.a(event.o): In function `detect_monotonic':

    event.c:(.text+0xc79): undefined reference to `clock_gettime'

    /usr/lib64/libevent.a(event.o): In function `gettime':

    event.c:(.text+0xd60): undefined reference to `clock_gettime'

    collect2: ld returned 1 exit status

    make: *** [magent] Error 1

     

     

    解决办法:

    [root@centos6 memcached]# vi Makefile 

    CFLAGS = -Wall -g -O2 -I/usr/local/include $(M64)

    改为:    

    CFLAGS = -lrt -Wall -g -O2 -I/usr/local/include $(M64)

     

     

     

    [root@centos6 memcached]# make

    gcc -Wall -g -O2 -I/usr/local/include -m64 -o magent magent.o ketama.o -lrt /usr/lib64/libevent.a /usr/lib64/libm.a 

    [root@centos6 memcached]# ls                                                                                             成功

    Makefile  ketama.c  ketama.h  ketama.o  magent  magent-0.6.tar.gz  magent.c  magent.o

    [root@centos6 memcached]# cp magent /usr/bin/

     

     

     

    五。启动进程

    memcached启动参数描述:

     

    -d :启动一个守护进程,

     

    -m:分配给Memcache使用的内存数量,单位是MB,默认是64MB,

     

    -u :运行Memcache的用户

     

    -l  :监听的服务器IP地址

     

    -p :设置Memcache监听的端口,默认是11211    注:-p(p为小写)

     

    -c :设置最大并发连接数,默认是1024

     

    -P :设置保存Memcache的pid文件   注:-P(P为大写)

     

    如果要结束Memcache进程,执行:kill cat pid文件路径

     

     

     

    [root@centos6 memcached]#  memcached -m 10 -u root -d -l 0.0.0.0 -p 11211

    [root@centos6 memcached]#  memcached -m 10 -u root -d -l 0.0.0.0 -p 11212

    [root@centos6 memcached]#  memcached -m 10 -u root -d -l 0.0.0.0 -p 11213

    [root@centos6 memcached]# netstat -antp 

    Active Internet connections (servers and established)

    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   

    tcp        0      0 127.0.0.1:11211             0.0.0.0:*                   LISTEN      12296/memcached    

    tcp        0      0 0.0.0.0:11212               0.0.0.0:*                   LISTEN      12412/memcached    

    tcp        0      0 0.0.0.0:11213               0.0.0.0:*                   LISTEN      12419/memcachcd

     

     

    magent启动

     

    [root@centos6 memcached]# magent -u root -n 51200 -l 192.168.20.122 -p 12000 -s 127.0.0.1:11211 -s 127.0.0.1:11212 -b 127.0.0.1:11213

     

    分别在127.0.0.1机器的11211,11212,11213端口启动3个Memcached进程,在12000端口开启magent代理程序;(以此类推可在不同机器上启动memcached)

     

    11211和11212为主Memcached,11213为备份Memcached;

     

     

     

    [root@centos6 memcached]# telnet 192.168.20.159 12000

    Trying 192.168.20.159...

    Connected to 192.168.20.159.

    Escape character is '^]'.

    stats

    memcached agent v0.6

    matrix 1 -> 127.0.0.1:11211, pool size 0

    matrix 2 -> 127.0.0.1:11212, pool size 0

    matrix 3 -> 127.0.0.1:11213, pool size 0

    END

     

     

     

     

    六。安装php的memcache客户端

    下载

     

    wget http://pecl.php.net/get/memcache-2.2.6.tgz

     

     

     

    安装

     

    tar zxvf memcache-2.2.6.tgz -C /usr/src/

    cd /usr/src/memcache-2.2.6/

    ls

    /usr/local/php/bin/phpize

    ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config

    make && make install

     

    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/   出现该行安装成功

     

     

    修改php.ini

     

    [root@LNMP4 memcache-2.2.6]# vi /usr/local/php/etc/php.ini 

     

    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/"                  该行修改 

    extension = memcache.so                                                                          该行添加


    安装magent  

    安装magent:

    [plain]  view plain copy print ?
    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  
    如果在make的时候,发生错误如下:
    [plain]  view plain copy print ?
    1. gcc -lrt -Wall -g -O2 -I/usr/local/include -m64 -c -o magent.o magent.c  
    2. magent.c: In function ‘writev_list’:  
    3. magent.c:729: error: ‘SSIZE_MAX’ undeclared (first use in this function)  
    4. magent.c:729: error: (Each undeclared identifier is reported only once  
    5. magent.c:729: error: for each function it appears in.)  
    6. make: *** [magent.o] Error 1  
    解决办法如下:
    [plain]  view plain copy print ?
    1. vi ketama.h  
    在开头加入
    [plain]  view plain copy print ?
    1. #ifndef SSIZE_MAX  
    2. # define SSIZE_MAX      32767  
    3. #endif  

    4、使用实例

    启动三个memcached实例:

    [plain]  view plain copy print ?
    1. memcached -m 1 -u root -d -l 192.168.136.129 -p 11211  
    2. memcached -m 1 -u root -d -l 192.168.136.129 -p 11212  
    3. memcached -m 1 -u root -d -l 192.168.136.129 -p 11213  
    通过magent代理三个实例:
    [plain]  view plain copy print ?
    1. magent -u root -n 51200 -l 127.0.0.1 -p 12000 -s 127.0.0.1:11211 -s 127.0.0.1:11212 -b 127.0.0.1:11213  
    a、分别在11211,、11212、11213端口启动memcached实例,在12000端口开启magent代理实例

    b、11211、11212端口为主memcached,11213为备份memcached。

    c、客户端连接12000端口,连接magent,进行memcached操作,相应的值会写到11211,、11212、11213三个端口的实例。

    d、当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;当11211和11212重启之后,连接到12000端口的magent取数据,数据会丢失。

    e、当11211端口的Memcached死掉,magent会从11212端口的memcached取值,重启11211端口的memcached实例,连接12000端口的magent取值,不会发生错误,但11211的memcached实例的数据已经丢失。


    memcached: error while loading shared libraries: libevent-2.0.so.5: cannot o

    memcached基本选项

    -p 端口   监听tcp端口
    -d    以守护进程方式运行memcached
    -u username  以username运行
    -m 《num》  最大的内存使用,单位是MB ,缺省是64MB
    -c <num>  软连接数量,缺省是1024
    -v    输出警告和错误信息
    -vv   打印客户端的请求和返回信息

    检查memcached是否正常运行
    #ps aux | grep memcached

    #telnet localhost 11211
    ....
    stats
    ...
    会显示memcached的基本信息

     

    如果启动时出现“memcached: error while loading shared libraries:libevent-2.0.so.5: cannot

    open shared object file: No such file or directory”之类的信息,表示memcached 找不到

    libevent 的位置
    所以,请先使用whereis libevent 得到位置,然后连接到memcached 所寻找的路径
    首先查看,libevent 在哪里
    # whereis libevent
    libevent: /usr/local/lib/libevent.la /usr/local/lib/libevent.so /usr/local/lib/libevent.a
    然后,再看memcached 从哪里找它
    # LD_DEBUG=libs memcached -v 2>&1 > /dev/null | less
    可以看到:是/usr/lib/libevent-2.0.so.5,所以,创建软链
    [root@localhost tools]# ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
    再次启动

     

    关闭memcached :pkill memcached


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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值