最近的项目需要使用memcached,而且需要考虑集群。在网上看了很多文档,都比较推荐magent,所以就试用一下。
magent的网站是http://code.google.com/p/memagent/ 安装配置都很简单,不过还是遇到了一个问题,我使用的0.6版本。

1,在系统中新建一个目录放magent
[root@vmhost ~]# mkdir magent

上传软件包,解压然后开始安装。
[root@vmhost magent]# /sbin/ldconfig
[root@vmhost magent]# sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
[root@vmhost magent]# makeMemcached的代理服务器magent应用配置_magent
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
/usr/lib64/libevent.a(event.o): In function `gettime':
(.text+0x193): undefined reference to `clock_gettime'
/usr/lib64/libevent.a(event.o): In function `event_base_new':
(.text+0x44a): undefined reference to `clock_gettime'
collect2: ld returned 1 exit status
make: *** [magent] Error 1

这个问题我还以为没有安装libevent软件,查询了下系统已经安装过了
[root@vmhost magent]# rpm -qa|grep libevent
libevent-devel-1.4.13-1
libevent-devel-1.4.13-1
libevent-1.4.13-1
libevent-1.4.13-1
[root@vmhost magent]# ls
ketama.c ketama.h ketama.o magent-0.6.tar.gz magent.c magent.o Makefile

在网上找到解决的方法很简单,编辑Makefile文件修改一行。

把LIBS = /usr/lib64/libevent.a /usr/lib64/libm.a改为LIBS = -lrt /usr/lib64/libevent.a /usr/lib64/libm.a
[root@vmhost magent]# vi Makefile

继续安装
[root@vmhost magent]# 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@vmhost magent]# make install
make: *** No rule to make target `install'. Stop.

执行完make安装就结束了,不需要make install。

查看系统已经出现magent可执行文件。
[root@vmhost magent]# ls
ketama.c ketama.h ketama.o magent magent-0.6.tar.gz magent.c magent.o Makefile
[root@vmhost magent]#

./magent
please provide -s "ip:port" argument

memcached agent v0.6 Build-Date: Apr 23 2012 14:47:09
Usage:
-h this message
-u uid
-g gid
-p port, default is 11211. (0 to disable tcp support)
-s ip:port, set memcached server ip and port
-b ip:port, set backup memcached server ip and port
-l ip, local bind ip address, default is 0.0.0.0
-n number, set max connections, default is 4096
-D don't go to background
-k use ketama key allocation algorithm
-f file, unix socket path to listen on. default is off
-i number, set max keep alive connections for one memcached server, default is 20
-v verbose

[root@vmhost magent]#

上面是这个工具命令的参数,

magent能够消除单点故障问题,但是不能实现负载均衡。如果要实现负载均衡的话,可能还要再研究一下其他工具。