一、安裝步驟:
1、編譯安裝libevent:
wget http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz
tar zxvf libevent-1.4.9-stable.tar.gz
cd libevent-1.4.9-stable/
./configure --prefix=/usr
make && make install
cd ../
2、編譯安裝Memcached:
wget http://danga.com/memcached/dist/memcached-1.2.6.tar.gz
tar zxvf memcached-1.2.6.tar.gz
cd memcached-1.2.6/
./configure --with-libevent=/usr
make && make install
cd ../
3、編譯安裝magent:
mkdir magent
cd magent/
wget http://memagent.googlecode.com/files/magent-0.5.tar.gz
tar zxvf magent-0.5.tar.gz
/sbin/ldconfig
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
make
cp magent /usr/bin/magent
cd ../
二、使用執行個體:
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
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還有資料(此問題尚待改進)。
安裝magent出現如下錯誤
gcc -Wall -O2 -g -c -o magent.o magent.c
magent.c: 在函數‘writev_list’中:
magent.c:623: 錯誤:‘SSIZE_MAX’未聲明(在此函數内第一次使用)
magent.c:623: 錯誤:(即使在一個函數内多次出現,每個未聲明的辨別符在其
magent.c:623: 錯誤:所在的函數内也隻報告一次。)
make: *** [magent.o] 錯誤 1
在ketama.h中加入
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif