天天看點

Memcached代理伺服器軟體:magent使用

一、安裝步驟:

  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