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
[[email protected] ~]# tar -xf /src/libevent-1.4.14b-stable.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/libevent-1.4.14b-stable/
[[email protected] libevent-1.4.14b-stable]# ./configure --prefix=/usr/ && make && make install
安裝magent
[[email protected] ~]# mkdir magent
[[email protected] ~]# tar -xf /src/magent-0.5.tar.gz -C /root/magent/
[[email protected] ~]# cd magent/
[[email protected] magent]# ls
ketama.c ketama.h magent.c Makefile
[[email protected] magent]# vim ketama.h
在行首新增下列三行內容:
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif
[[email protected]
修改Makefile檔案第一行末尾加上 -lm
執行make命令,會在當前目錄產生一個magent命令
把此命令複製到/usr/local/bin/下面
[[email protected] magent]# cp magent /usr/local/bin/
檢測magent是否安裝正確
執行magent命令出現下列資訊表示沒有問題。
memcached伺服器啟動三個程序(memcached安裝前面文章已經說過不在安裝)
[[email protected] ~]# memcached -u root -p 11000 -P /opt/memcached1.pid -m 30m -d
[[email protected] ~]# memcached -u root -p 12000 -P /opt/memcached2.pid -m 30m -d
[[email protected] ~]# memcached -u root -p 13000 -P /opt/memcached3.pid -m 30m -d
啟動magent並制定連線到memcached節點,同時指定好哪個是memcached主節點那個是memcached備份節點,可以指多個。
[[email protected] ~]# 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了。就提配置放在下一篇