Memcached+magent集群安装及错误处理

来源:互联网 发布:p2717h 知乎 编辑:程序博客网 时间:2024/03/29 18:09

准备

资料准备:
libevent下载:http://download.csdn.net/detail/webben/9782162
memcached下载:http://memcached.org/files/memcached-1.4.35.tar.gz

magent官网:http://code.google.com/p/memagent/
Google下载(墙):http://memagent.googlecode.com/files/magent-0.6.tar.gz
magent下载:http://download.csdn.net/detail/webben/9782076
(0.6 在2017年03月已经是最新版本)

安装

cd /usr/local/srctar -zxvf libevent-2.1.8-stable.tar.gzcd libevent-2.1.8-stable./configure --prefix=/usr/local/libeventmake && make install
wget http://memcached.org/files/memcached-1.4.35.tar.gztar zxvf memcached-1.4.35.tar.gzcd memcached-1.4.35./configure --prefix /usr/local/memcached --with-libevent=/usr/local/libevent/make && make install
mkdir -p /usr/local/magenttar -zxvf magent-0.6.tar.gz 
vim Makefile#找到 LIBS = /usr/lib64/libevent.a /usr/lib64/libm.a#替换为libevent安装目录libLIBS = /usr/local/libevent/lib/libevent.a /usr/lib64/libm.a#找到 CFLAGS = -Wall -g -O2 -I/usr/local/include $(M64)#替换为libevent安装目录includeCFLAGS = -lrt -Wall -g -O2 -I/usr/local/libevent/include $(M64)vim ketama.h #在开头加入#ifndef SSIZE_MAX#define SSIZE_MAX      32767#endif
#报错gcc -Wall -g -O2 -I/usr/local/libevent/include/ -m64 -o magent magent.o ketama.o /usr/local/libevent/lib/libevent.a /usr/lib64/libm.a /usr/local/libevent/lib/libevent.a(evutil_time.o): In function `evutil_gettime_monotonic_':/usr/local/src/libevent-2.1.8-stable/evutil_time.c:315: undefined reference to `clock_gettime'/usr/local/libevent/lib/libevent.a(evutil_time.o): In function `evutil_configure_monotonic_time_':/usr/local/src/libevent-2.1.8-stable/evutil_time.c:289: undefined reference to `clock_gettime'/usr/local/src/libevent-2.1.8-stable/evutil_time.c:283: undefined reference to `clock_gettime'collect2: ld returned 1 exit statusmake: *** [magent] Error 1#解决vim Makefile#找到 LIBS = /usr/lib64/libevent.a /usr/lib64/libm.a#替换为libevent安装目录libLIBS = /usr/local/libevent/lib/libevent.a /usr/lib64/libm.a#找到 CFLAGS = -Wall -g -O2 -I/usr/local/include $(M64)#替换为libevent安装目录includeCFLAGS = -lrt -Wall -g -O2 -I/usr/local/libevent/include $(M64)
#报错gcc -Wall -g -O2 -I/usr/local/include -m64 -c -o magent.o magent.cmagent.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 oncemagent.c:729: error: for each function it appears in.)make: *** [magent.o] Error 1vim ketama.h #在开头加入#ifndef SSIZE_MAX#define SSIZE_MAX      32767#endif
#最后就成功了makeexport PATH=$PATH:/usr/local/memcached/bin/#加入环境变量echo 'export PATH=$PATH:/usr/local/memcached/bin/' >> /etc/profileecho 'export PATH=$PATH:/usr/local/magent' >> /etc/profilesource /etc/profile

启动

#开启多个memcachedmemcached -m 1 -u root -d -l 127.0.0.1 -p 11211memcached -m 1 -u root -d -l 127.0.0.1 -p 11212memcached -m 1 -u root -d -l 127.0.0.1 -p 11213#代理memcachedmagent -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
  1. 分别在11211、11212、11213端口启动3个Memcached进程,在12000端口开启magent代理程序;
  2. 11211、11212端口为主Memcached,11213端口为备份Memcached;
  3. 连接上12000的magent,set key1和set key2,根据哈希算法,key1被写入11212和11213端口的Memcached,key2被写入11212和11213端口的Memcached;
  4. 当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;
  5. 当11211、11212端口的Memcached重启复活,连接到12000端口,magent会从11211或11212端口的Memcached取数据,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管11213端口的Memcached还有数据(此问题尚待改进)。

PHP Memcached拓展安装

#安装memcached客户端cd /usr/local/srcwget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gztar -zxvf libmemcached-1.0.18.tar.gzcd libmemcached-1.0.18#配置./configure --prefix=/usr/local/libmemcached#编译安装make && make install#安装php memcached拓展cd /usr/local/srcwget http://pecl.php.net/get/memcached-2.2.0.tgztar -zxvf memcached-2.2.0.tgzcd memcached-2.2.0#phpize/usr/local/php/bin/phpize#配置./configure --with-php-config=/usr/local/php/bin/php-config -with-libmemcached-dir=/usr/local/libmemcached/#编译安装make && make installvim /usr/local/php/etc/php.ini#添加extension=memcached.so#重启web服务或者php-fpmservice php-fpm restart
0 0
原创粉丝点击