轉發:https://idc.wanyunshuju.com/li/581.html
關於實現 memcached 緩存集羣可以有多種方式,一種是使用 Repcached(memcached同步補丁),Repcached 優點主要是數據冗餘,兩臺 memcached 都可以進行讀寫操作,缺點是隻支持單對單,指支持 1.2.x 版本,所以受到的侷限性很大。另外可以使用開源軟件 Magent實現 Memcached 羣集。通過 Magent 緩存代理,防止單點現象,緩存代理也可以做備份,可以用 keepalived 軟件實現高可用。
通過 magent 緩存代理,防止單點現象,緩存代理也可以做備份,通過客戶端連接到緩存代理服務器,緩存代理服務器連接緩存服務器,緩存代理服務器可以連接多臺 memcached機器,可以將每臺 memcached 機器進行數據同步,如果其中一臺緩存服務器宕機,系統依然可以繼續工作,數據不會丟失並且可以保證數據的完整性。但是如果緩存代理服務器故障,那麼緩存代理服務器將無法繼續提供服務,所以用 keepalived 軟件實現高可用。
Memcached羣集案例
案例環境 :
主緩存節點 Master :192.168.2.11 magent 、memcached 、libevent 、keepalived
備緩存節點 Backup :192.168.2.12 magent 、memcached 、libevent 、keepalived
客戶端 Client : 192.168.2.13 telnet
實驗前先關閉三臺機器的 防火牆及 selinux 。
1 、主/備緩存節點編譯安裝 libevent
[root@master ~]# tar xf libevent-1.4.9-stable.tar.gz -C /usr/src/
[root@master ~]# cd /usr/src/libevent-1.4.9-stable/
[root@master libevent-1.4.9-stable]# ./configure --prefix=/usr && make && make install
備緩存節點與主相同
2 、主/備緩存節點編譯安裝 memcached
[root@master libevent-1.4.9-stable]# cd
[root@master ~]# tar xf memcached-1.2.6.tar.gz -C /usr/src/
[root@master ~]# cd /usr/src/memcached-1.2.6/
[root@master memcached-1.2.6]# ./configure --with-libevent=/usr/ && make && make install
備緩存節點與主相同
3 、主、備緩存節點安裝 magent (這個軟件一般要翻牆才能下載)
[root@master ~]# mkdir magent
[root@master ~]# tar xf magent-0.5.tar.gz -C magent/
[root@master ~]# cd magent/
[root@master magent]# ls
ketama.c ketama.h magent.c Makefile
[root@master magent]# vim ketama.h
1 #ifndef SSIZE_MAX //手動添加此三行在文件開頭處
2 #define SSIZE_MAX 32767
3 #endif
[root@master magent]# ldconfig
[root@master magent]# sed -i '1 s/$/ -lm/' Makefile
[root@master magent]# head -1 Makefile
LIBS = -levent -lm
[root@master magent]# make
gcc -Wall -O2 -g -c -o magent.o magent.c
gcc -Wall -O2 -g -c -o ketama.o ketama.c
gcc -Wall -O2 -g -o magent magent.o ketama.o -levent -lm
[root@master magent]# ls
ketama.c ketama.h ketama.o magent magent.c magent.o Makefile
[root@master magent]# cp magent /usr/bin/
[root@master magent]# scp magent 192.168.2.12:/usr/bin/