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

准备

资料准备:
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/src
tar -zxvf libevent-2.1.8-stable.tar.gz
cd libevent-2.1.8-stable

./configure --prefix=/usr/local/libevent
make && make install
wget http://memcached.org/files/memcached-1.4.35.tar.gz
tar zxvf memcached-1.4.35.tar.gz
cd memcached-1.4.35
./configure --prefix /usr/local/memcached --with-libevent=/usr/local/libevent/
make && make install
mkdir -p /usr/local/magent
tar -zxvf magent-0.6.tar.gz 
vim Makefile
#找到 LIBS = /usr/lib64/libevent.a /usr/lib64/libm.a
#替换为libevent安装目录lib
LIBS = /usr/local/libevent/lib/libevent.a /usr/lib64/libm.a

#找到 CFLAGS = -Wall -g -O2 -I/usr/local/include $(M64)
#替换为libevent安装目录include
CFLAGS = -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 status
make: *** [magent] Error 1
#解决
vim Makefile
#找到 LIBS = /usr/lib64/libevent.a /usr/lib64/libm.a
#替换为libevent安装目录lib
LIBS = /usr/local/libevent/lib/libevent.a /usr/lib64/libm.a

#找到 CFLAGS = -Wall -g -O2 -I/usr/local/include $(M64)
#替换为libevent安装目录include
CFLAGS = -lrt -Wall -g -O2 -I/usr/local/libevent/include $(M64)
#报错
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

vim ketama.h 
#在开头加入
#ifndef SSIZE_MAX
#define SSIZE_MAX      32767
#endif
#最后就成功了
make
export PATH=$PATH:/usr/local/memcached/bin/
#加入环境变量
echo 'export PATH=$PATH:/usr/local/memcached/bin/' >> /etc/profile
echo 'export PATH=$PATH:/usr/local/magent' >> /etc/profile
source /etc/profile

启动

#开启多个memcached
memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
#代理memcached
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
  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/src
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar -zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
#配置
./configure --prefix=/usr/local/libmemcached
#编译安装
make && make install

#安装php memcached拓展
cd /usr/local/src
wget http://pecl.php.net/get/memcached-2.2.0.tgz
tar -zxvf memcached-2.2.0.tgz
cd 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 install

vim /usr/local/php/etc/php.ini
#添加
extension=memcached.so
#重启web服务或者php-fpm
service php-fpm restart
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值