Memcached之代理服务magent(8)

magent是一款开源的Memcached代理服务器软件,可以实现Memcached之间的主从备份。在主节点挂点的情况下,会自动切换到从节点继续提供服务。本篇主要介绍magent的安装,以及安装过程中碰到的一些问题。

 

编译安装libevent:

[root@bicloud75 home]#wget http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz
[root@bicloud75 home]# tar zxvf libevent-1.4.9-stable.tar.gz
[root@bicloud75 home]# cd libevent-1.4.9-stable
[root@bicloud75 libevent-1.4.9-stable]# ./configure --prefix=/usr
[root@bicloud75 libevent-1.4.9-stable]# make && make install

 

安装Memcached:

参考:Memcached之Window和Linux安装(1) 

 

安装magent

下载的magent-0.6.tar.gz放在/home/magent目录。

[root@bicloud75 home]# cd magent/
[root@bicloud75 magent]# tar zxvf magent-0.6.tar.gz
[root@bicloud75 magent]# ll
总用量 100
-rw-rw-r--. 1  500  502 12822 4月  10 2010 ketama.c
-rw-rw-r--. 1  500  502   339 4月  10 2010 ketama.h
-rw-r--r--. 1 root root 17257 9月   1 10:30 magent-0.6.tar.gz
-rw-rw-r--. 1  500  502 54813 4月  15 2010 magent.c
-rw-rw-r--. 1  500  502   501 4月  14 2010 Makefile
[root@bicloud75 magent]# /sbin/ldconfig    //刷新
[root@bicloud75 magent]# sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
[root@bicloud75 magent]# make
gcc -lrt -Wall -g -O2 -I/usr/local/include -m64 -o magent magent.o ketama.o /usr/lib64/libevent.a /usr/lib64/libm.a 

安装成功!

[root@bicloud75 magent]# ./magent 
please provide -s "ip:port" argument

memcached agent v0.6 Build-Date: Sep  1 2015 14:53:34
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

 

 
 
参数描述
-h帮助信息
-u用户ID
-g 
-p端口号,默认是11211,不能为0
-smemcachd服务的IP+端口
-b备份memcached的IP+端口
-l本地bind的IP地址,默认是:0.0.0.0
-n最大的连接数量,默认是:4096
-D不运行在后台
-k使用ketama密钥分配算法
-f 
-i设置每个memcached服务保持存活的连接数量,默认是20
-v启动时前端打印日志

 

启动命令:

有六个Memcached进程,分别是:

10.0.1.75:12000
10.0.1.75:12001
10.0.1.76:12000
10.0.1.76:12001
10.0.1.77:12000
10.0.1.77:12001

 

10.0.1.75:12000,10.0.1.76:12000,10.0.1.77:12000作为主Memcached

10.0.1.75:12001,10.0.1.76:12001,10.0.1.77:12001作为备Memcached

启动Magent:

 

/home/magent/magent -u -k root -n 51200 -p 11222 -s 10.0.1.75:12000 -s 10.0.1.76:12000 -s 10.0.1.77:12000 -b 10.0.1.75:12000 -b 10.0.1.76:12001 -b 10.0.1.77:12001

 

Magent端口为11222,下面使用telnet查看连接情况:

 

[root@bicloud75 home]# telnet 10.0.1.75 11222
Trying 10.0.1.75...
Connected to 10.0.1.75.
Escape character is '^]'.
stats
memcached agent v0.6
matrix 1 -> 10.0.1.75:12000, pool size 1
matrix 2 -> 10.0.1.76:12000, pool size 1
matrix 3 -> 10.0.1.77:12000, pool size 1
END

 

magent安装错误总汇:

错误1:

 

gcc -Wall -g -O2 -I/usr/local/include -m64 -c -o magent.o magent.c
magent.c: 在函数‘writev_list’中:
magent.c:729: 错误:‘SSIZE_MAX’未声明(在此函数内第一次使用)
magent.c:729: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
magent.c:729: 错误:所在的函数内也只报告一次。)
make: *** [magent.o] 错误 1

解决办法:

 

[root@bicloud75 magent]# vi ketama.h
ketama.h文件头部加下列几行:

#ifndef SSIZE_MAX
#define SSIZE_MAX      32767
#endif

 

 

 

错误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 
/usr/lib64/libevent.a(event.o): In function `gettime':
(.text+0x439): undefined reference to `clock_gettime'
/usr/lib64/libevent.a(event.o): In function `event_base_new':
(.text+0x6fa): undefined reference to `clock_gettime'
collect2: ld 返回 1
make: *** [magent] 错误 1

解决办法:

 

 

[root@bicloud75 magent]# vi Makefile
CFLAGS = -Wall -g -O2 -I/usr/local/include $(M64)
改成
<pre name="code" class="java">CFLAGS = -lrt -Wall -g -O2 -I/usr/local/include $(M64)

 

 

 

错误3:

 

gcc -lrt -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:没有那个文件或目录
make: *** [magent] 错误 1

解决办法:

[root@bicloud77 magent]# ln -s /usr/lib64/libm.so /usr/lib64/libm.a

 

下一篇将讲述如何采用magent做memcachd HA

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值