Magent 是一款基於 libevent 的 Memcached 代理,支援一致性雜湊分發、故障自動轉移,可將多個 Memcached 節點聚合為單一入口,簡化客戶端配置。
mkdir -p /usr/local/magent
cd /usr/local/magent
wget https://pan.baidu.com/s/1eRygtEU -O magent-0.5.tar.gz
tar -xvf magent-0.5.tar.gz
cd magent
編譯時常報 SSIZE_MAX 未定義,需修改 ketama.h:
vim ketama.h
# 在檔案開頭加入:
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif
/sbin/ldconfig
sed -i 's#LIBS = -levent#LIBS = -levent -lm#g' Makefile
make
# 成功產生 magent 執行檔
#!/bin/bash
# start_memcached.sh
memcached -d -m 512 -u root -l 127.0.0.1 -p 11211 -P /tmp/memcached1.pid
memcached -d -m 512 -u root -l 127.0.0.1 -p 11212 -P /tmp/memcached2.pid
#!/bin/bash
# start_magent.sh
/usr/local/magent/magent -u root -n 51200 -l 127.0.0.1 -p 11210 \
-s 127.0.0.1:11211 -s 127.0.0.1:11212 \
-k /tmp/magent_ketama -P /tmp/magent.pid -D
參數說明:
-n:最大連接數-s:後端 Memcached 節點-k:Ketama 一致性雜湊檔案路徑-D:前台運行(去除則背景執行)# 測試寫入
telnet 127.0.0.1 11210
set test_key 0 0 11
hello world
STORED
get test_key
VALUE test_key 0 11
hello world
END
# 觀察 ketama 分發
cat /tmp/magent_ketama
libevent-devel、gcc、make原始碼與腳本打包:百度網盤