memcached 和它的代理

jopen 12年前發布 | 16K 次閱讀 memcached 緩存服務器
1.編譯libevent
./configure --prefix=xxx
make && make install

2.編譯memcached
./configure --prefix=xxx
make && make install

3.啟動memcached
服務器端的命令為:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid

-d選項是啟動一個守護進程,
-m是分配給Memcache使用的內存數量,單位是MB,我這里是10MB,
-u是運行Memcache的用戶,我這里是root,
-l是監聽的服務器IP地址,如果有多個地址的話,我這里指定了服務器的IP地址192.168.0.200,
-p是設置Memcache監聽的端口,我這里設置了12000,最好是1024以上的端口,
-c選項是最大運行的并發連接數,默認是1024,我這里設置了256,按照你服務器的負載量來設定,
-P是設置保存Memcache的pid文件,我這里是保存在 /tmp/memcached.pid,

想開機自動啟動的話,只需在/etc/rc.d/rc.local中加入一行,上面命令
有人用以下命令:
/usr/local/memcached/bin/memcached -d -m 20 -p 11211 -u apache
上面有些東西可以參考一下:即,ip不指定時,默認是本機,用戶,最好選擇是:apache 或 deamon
這樣,也就是屬于哪個用戶的服務,由哪個用戶啟動。

4.memcached退出
kill `cat /tmp/memcached.pid`

5.安裝libmemcached
./configure --prefix=/xxxx/libmemcached --with-memcached=/xxxx/memcached/bin/memcached
make && make install

--with-memcached 選項要指定到memcached可執行文件
gcc是4.1,因此只能用老版本libmemcached(選了libmemcached-0.50)

6.使用
pythom-memcached下載鏈接不可用 ( http://www.tummy.com/software/python-memcached/)
改用
 
7.安裝magent

0.5版本:
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 ../

0.6版本:
不需要額外操作,直接執行make即可

8.配置轉發
在memcached的bin/目錄
./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

- 分別在11211、11212、11213端口啟動3個Memcached進程,在12000端口開啟magent代理程序;
- 11211、11212端口為主Memcached,11213端口為備份Memcached;
- 連接上12000的magent,set key1和set key2,根據哈希算法,key1被寫入11212和11213端口的Memcached,key2被寫入11211和11213端口的Memcached;
- 當11211、11212端口的Memcached死掉,連接到12000端口的magent取數據,數據會從11213端口的Memcached取出;
- 當11211、11212端口的Memcached重啟復活,連接到12000端口,magent會從11211或11212端口的 Memcached取數據,由于這兩臺Memcached重啟后無數據,因此magent取得的將是空值,盡管11213端口的Memcached還有數據(此問題尚待改進)。

9.測試流程

參照  http://blog.s135.com/post/393/  其中使用的是magent-0.5

我嘗試了0.5和最新的0.6,但里面提到的重啟后的” 由于這兩臺Memcached重啟后無數據,因此magent取得的將是空值,盡管11213端口的Memcached還有數據(此問題尚待改進)“,仍然存在

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!