memagent實現對memcache的初級叢集管理

itscrambler發表於2011-11-05

memagent是一款開源的memcached代理伺服器軟體
地址:

安裝memagent到/usr/local/下
cd /usr/local
mkdir memagent
cd memagent/
wget
tar zxvf memagent-0.5.tar.gz
/sbin/ldconfig
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile

make

memagent命令引數:
-h this message
-u uid
-g gid
-p port, default is 11211. (0 to disable tcp support)
-s ip:port, set memcached server ip and port
-b ip:port, set backup memcached server ip and port
-l ip, local bind ip address, default is 0.0.0.0
-n number, set max connections, default is 4096
-D don't go to background
-k use ketama key allocation algorithm
-f file, unix socket path to listen on. default is off
-i number, max keep alive connections for one memcached server, default is 20
-v verbose

啟動memagent服務
memagent -u root -n 4096 -l 127.0.0.1 -p 12000 -s 127.0.0.1:8086 -s 127.0.0.2:8086 -b 127.0.0.1:11213

memagent的hash演算法
memagent採用的是:Consistent Hashing原理,Consistent Hashing如下所示:首先求出memcached伺服器(節點)的雜湊值, 並將其配置到0~232的圓(continuum)上。 然後用同樣的方法求出儲存資料的鍵的雜湊值,並對映到圓上。 然後從資料對映到的位置開始順時針查詢,將資料儲存到找到的第一個伺服器上。 如果超過232仍然找不到伺服器,就會儲存到第一臺memcached伺服器上。

[@more@]利用memagent實現對memecache的分散式管理,搭建一套memcache叢集服務1、前端php對memagent的訪問跟對memcache訪問相同,不需要做任何更改,對於插入的key,memagent會把值雜湊到各個memcache服務上,只操作magent,不用關心後端處理
2、公司專案應用:南北各10臺前端,南北各部署一套magent服務,主要是考慮電信網通的跨網訪問
以北方為例,每個前端安裝memcached服務(大記憶體機器可以啟動多個服務),每個前端都安裝memagent服務,後端掛載全部機器的memcached服務,啟動引數:magent -p 12000 -s 127.0.0.1:8086 -s 127.0.0.2:8086 -s 127.0.0.3:8086.......-s 127.0.0.10:8086,所有前端配置都是相同的,任何一個前端只需訪問本地埠的memagent,這樣的memcache叢集對應用帶來很大便利.
比如專案的基本配置資訊,早期策略只能在中控機生成配置檔案,同步到各個前端,沒有辦法把配置資訊放到快取中,因為各個前端的memcache是不共享的,一臺機器快取更新,其它機器是不更新的,用程式去控制更新,還是存在不穩定因素,而且隨著服務增多,也不便於管理,部署了memagent後,就可以解決這個問題,任何一個前端更新資料=全域性更新
這種部署還可以解決的應用:session共享

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26273052/viewspace-1056166/,如需轉載,請註明出處,否則將追究法律責任。

相關文章