一、偽集群方案
最常見的做法:memcache安裝後,在一台機器或多台機器上啟動多個例項,客戶端配置memcache節點的ip,port即可。
由客戶端實現分布式快取效果,其實是偽集群。
memcache節點之間不通訊,無資料備份,負載均衡由客戶端實現,存在單點故障。
客戶端可設定故障恢復和故障轉移機制。
二、簡單集群方案
使用magent**元件搭建集群服務。
集群特性:
1)memcache節點宕機後,客戶端能自動重連。
2)有資料備份,比如部署了memcache節點1、節點2和備份節點,當節點1宕機,set操作到節點1的時候,會失敗(不會自動跳到另乙個節點當中去),但備份memcache節點是會保留所有key,所有運用get命令還是能夠得到正常結果的。
2)編譯安裝
1.tar -xzvf magent-0.5.tar.gz
2./sbin/ldconfig
3.sed -i 「s#libs = -levent#libs = -levent -lm#g」 makefile
4.make
5.cp magent /usr/bin/magent
6.magent
執行第三步時,要注意最後的輸出檔案為makefile。
執行第四步時,一般會遇到如下錯誤:
錯誤一:
問題原因:缺少ssize_max字義
解決方法:
修改ketama.h檔案,在檔案起始行加下以下**:
#ifndef ssize_max
#define ssize_max 32767
#endif
儲存檔案,重新執行make命令即可
這個錯誤是magent-0.6.tar.gz才有,0.5版本的沒有。
問題原因:檔案存放路徑的問題
libm.a 預設在/usr/lib/x86…/lib64下
libevent.a 預設在/usr/lib/下
本人演示用的linux作業系統是centos-6.5,其他作業系統可能不同,請注意區分。
解決辦法:
可用find命令查詢,再將這兩個檔案拷貝到/usr/lib64目錄下
若libm.a提示找不到,則需要重新安裝glibc-static元件:yum install glibc-static。
錯誤三:
安裝過程中出現:/usr/lib64/libevent.a(event 0) : in function 『gettime』錯誤字樣
解決辦法:
1、先備份makefile檔案:cp makefile makefile.bak
2、修改makefile檔案,找到cflags = -wall -g -o2 -i/usr/local/include $(m64)
,改為cflags = -lrt -g -o2 -i/usr/local/include $(m64)
即可。
make命令成功後,會在當前目錄下產生magent檔案,將該資料夾移到/usr/bin/目錄下即可。
資料夾移到新的位置後,可以直接使用magent命令,如下圖所示,表示安裝成功:
2、magent啟動命令常用引數
-u:啟動使用者名稱
-n:連線數,預設為4096
-l:magent監聽的ip位址
-p(小寫):magent監聽的埠號
-s:註冊的memcache節點資訊,格式為ip:port
-b:用於備份的memcache節點資訊,格式為ip:port
示例命令 magent -u root -n 2048 -l 192.168.0.103 -p 12001 -s 192.168.0.103:11211 -s 192.168.0.103:11212 -b 192.168.0.103:11213
3、使用示例
1)先啟動memcache節點
/usr/local/bin/memcached -d -m 128 -u root -l 192.168.0.103 -p 11211 -p /tmp/memcached11211.pid
/usr/local/bin/memcached -d -m 128 -u root -l 192.168.0.103 -p 11212 -p /tmp/memcached11212.pid
/usr/local/bin/memcached -d -m 128 -u root -l 192.168.0.103 -p 11213 -p /tmp/memcached11213.pid
共啟動3個memcache節點,埠分別為11211,11212,11213
2)啟動magent,**memcache節點
magent -u root -n 2048 -l 192.168.0.103 -p 12001 -s 192.168.0.103:11211 -s 192.168.0.103:11212 -b 192.168.0.103:11213
如命令所示:
memcache 11211和11212兩個節點為工作節點,11213節點將作為備份節點;
magent監聽的埠為12001,ip為192.168.0.103。
注:為了演示方便,都在一台機器上啟動例項,若實際需要為多台機器,將ip和埠更換即可。
4、基本使用方法
1)telnet作為客戶端,連線magent
還記得前一遍講解的telnet操作嗎?magent的操作也一樣適用。
演示的ip和port可以參照上面的演示示例。
telnet 192.168.0.103 12001
stats命令檢視狀態,如下圖所示:
可以看到magent版本號,連線的memcache工作節點列表,用matrix1、matrix2表示。
2)get,set,version等命令跟memcache的操作是一致的
set操作時,按雜湊演算法寫入兩個工作節點(簡單對映雜湊演算法),備份節點不受此雜湊演算法影響,所有的快取物件都會到備份節點中儲存。
get操作時,先按雜湊演算法查詢,查詢不到就到備份節點裡查詢,因為set時所有的快取物件都會儲存到備份節點上。
當某一memcache工作節點宕機時,set還是按原有的雜湊演算法做set操作,宕機的節點上無資料,但備份節點上有,get操作還是不受影響的(所以說備份節點很重要,一定要設定)。
當宕機的節點重新啟動時,該節點已無資料。magent做get操作時,儘管備份節點上還有資料,但還是會返回空值。(這是乙個很大的問題!)
code.google官方最新發布的版本為magent-0.6.tar.gz,也一樣沒有修復這個問題。
magent-0.6:
修正版(修正安裝過程中出現ssize_max無法找到的問題)
magent-0.5:
magent-0.6:
memcache集群使用原則
1 集群節點的儲存方式 1 乙個環狀的概念,將集群節點雜湊到環上 2 權重的影響,影響集群節點在患上的雜湊 2 集群節點擴充和減少 會導致資料遷移 3 乙個專案的客戶端訪問多個memcache集群 需要針對每個集群進行區分 cms後台有這個需求 4 開發注意事項 1 key是string 2 物件必...
memcache集群服務 memagent配置使用
安裝magent到 usr local 下 cd usr local mkdir magent cd magent wget tar zxvf magent 0.5.tar.gz sbin ldconfig sed i s libs levent libs levent lm g makefile ...
memcache集群服務 memagent配置使用
magent是一款開源的memcached 伺服器軟體 cd usr local mkdir magent cd magent wget tar zxvf magent 0.5.tar.gz sbin ldconfig sed i s libs levent libs levent lm g mak...