memcached+magent+keepalived高可用集羣


上一篇我們說過memcached實現高可用以及防止單點故障可以通過magent來實現,接下來我們來配置一個高可用羣集


magent代理服務器:192.168.200.101


memcached節點:(可以在同一個服務器上開啓三個memcached節點看前面介紹,也可以一臺服務器一個)

memcached:192.168.200.100  11000端口

memcached: 192.168.200.100 12000端口

memcached: 192.168.200.100 13000端口


客戶端 

192.168.200.200 工具:telnet(用於測試時使用)


magent安裝

開源軟件:magent-0.5.tar.gz  libevent-1.4.14b-stable.tar.gz

先安裝 libevent

[root@www ~]# tar -xf /src/libevent-1.4.14b-stable.tar.gz -C /usr/src/
[root@www ~]# cd /usr/src/libevent-1.4.14b-stable/
[root@www libevent-1.4.14b-stable]# ./configure --prefix=/usr/ && make && make install


安裝magent

[root@www ~]# mkdir magent
[root@www ~]# tar -xf /src/magent-0.5.tar.gz -C /root/magent/
[root@www ~]# cd magent/
[root@www magent]# ls
ketama.c  ketama.h  magent.c  Makefile
[root@www magent]# vim ketama.h 

在行首添加下列三行內容:

#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif


[root@master magent]# ldconfig

修改Makefile文件第一行末尾加上 -lm


執行make命令,會在當前目錄產生一個magent命令


把此命令複製到/usr/local/bin/下面

[root@www magent]# cp magent /usr/local/bin/


檢測magent是否安裝正確

執行magent命令出現下列信息表示沒有問題。



memcached服務器啓動三個進程(memcached安裝前面文章已經說過不在安裝)

[root@bogon ~]# memcached -u root -p 11000 -P /opt/memcached1.pid -m 30m -d
[root@bogon ~]# memcached -u root -p 12000 -P /opt/memcached2.pid -m 30m -d
[root@bogon ~]# memcached -u root -p 13000 -P /opt/memcached3.pid -m 30m -d



啓動magent並制定連接到memcached節點,同時指定好哪個是memcached主節點那個是memcached備份節點,可以指多個。

[root@www ~]# magent -u root -n 51200 -l 192.168.200.101 -p 10000 -s 192.168.200.100:11000 -s 192.168.200.100:12000 -b 192.168.200.100:13000 

magent 參數詳解:
-u 指定用戶,以root 用戶運行
-n 最大的連接數,默認不指定的話是4096
-l (小寫L),magent 對外監聽的IP 地址
-p magent 對外監聽的端口
-s 設置memcached 主緩存的IP 地址和端口
-b 設置memcached 備緩存的IP 地址和端口

客戶端使用telnet測試

客戶端寫入一個數據,會在其中一個主緩存節點中緩存起來,100:11000 或者100:12000 ,只會緩存在一個上面不會同時緩存在兩個主緩存節點上,

客戶端寫入的數據也會同時緩存在memcached備份節點中。


客戶端登錄magent輸入一條數據,並查詢是否輸入成功


查詢第一個主緩存memcached節點,發現可以查詢到


查詢到第二個主緩存節點發現沒有插入的數據證明了緩存數據只會在緩存在一個主緩存節點上面


查看備份節點可以查到插入的數據,說明備份節點已經把緩存數據保存了一份。



剛剛我們查詢到插入的數據存在了11000端口的那個memcached節點上面,現在我們關閉這個端口的節點再來查詢

可以發現雖然關閉了。但是還是可以查詢到我們插入的那條數據,說明備份節點起了作用。



然後重啓11000端口的memcached節點,並查看這個端口的節點是否還有我們剛剛插入的那條數據,會發現查詢不到因爲memcached是基於內存的不能持久保存重啓就會消失,

最後再次從magent代理服務器訪問插入的那條數據,還是可以訪問到。



memcached節點宕機或者重啓後數據丟失的問題解決了,現在我們只有一個magent代理服務器如果magent代理宕機了,這時候我們就要用到keepalived了。就提配置放在下一篇


發佈了38 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章