Memcached主主複製+Keepalived高可用架構

                                                                      實驗報告

第一、實驗環境:

Memcached主主複製+Keepalived高可用架構

第二、實驗步驟:
配置memcached主緩存節點和從緩存節點-----兩臺配置相同
解包:
tar xf memcached-1.5.6.tar.gz -C /opt/
tar xf libevent-2.1.8-stable.tar.gz -C /opt/

cd /opt/libevent-2.1.8-stable --- 安裝lib插件
./configure --prefix=/usr/

make && make install ---編譯安裝

cd ../memcached-1.5.6 ---安裝memcached

./configure \
--with-libevent=/usr

make && make install ---編譯安裝

下面在主上安裝magent:
mkdir /opt/magent
tar xf magent-0.5.tar.gz -C /opt/magent
cd /opt/magent/
vi ketama.h
Memcached主主複製+Keepalived高可用架構
vi Makefile
LIBS = -levent -lm //第一行末尾加-lm (不是數字1)
Memcached主主複製+Keepalived高可用架構

make //修改完成後可以編譯了
Memcached主主複製+Keepalived高可用架構
完成,無任何報錯

ls一下可看到magent可執行程序
Memcached主主複製+Keepalived高可用架構
cp magent /usr/bin/ //將編譯好的magent程序複製到PATH路徑中

scp magent [email protected]:/usr/bin/ //把產生的magent文件直接複製到從服務器。

下面安裝keepalived:
yum install keepalived –y   
vi /etc/keepalived/keepalived.conf //修改默認配置文件
-------------------參考腳本------------
! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id MAGENT_HB
}
vrrp_script magent {
        script "/opt/shell/magent.sh"
        interval 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script {
        magent
}
    virtual_ipaddress {
        192.168.80.188
    }
}

從服務器上安裝keepalived,拷貝上面的配置文件進行修改:
yum install -y keepalived
cd /etc/keepalived/
mv keepalived.conf keepalived.conf.bak
scp [email protected]:/etc/keepalived/keepalived.conf ./ //把主服務器的配置文件複製過來
vi keepalived.conf
從服務器的名稱要修改;router_id MAGENT_HB
從服務器的熱備狀態要修改成BACKUP;state BACKUP
從調度器的優先級要小於主的;priority 90

下面設置magent管理腳本
--在主服務器上設置: 
mkdir /opt/shell  創建目錄
cd /opt/shell

vi magent.sh
腳本內容如下:
#!/bin/bash
K=`ps -ef | grep keepalived | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
        magent -u root -n 51200 -l 192.168.80.188 -p 12000 -s 192.168.80.181:11211 -b 192.168.80.182:11211
else
pkill -9 magent
fi

參數註解:
-n 51200 //定義用戶最大連接數
-l 192.168.80.188 //指定虛擬IP
-p 12000  //指定端口號
-s //指定主緩存服務器
-b //指定從緩存服務器

chmod +x magent.sh   增加執行權限

--在從服務器上操作:
mkdir /opt/shell
cd /opt/shell

vi magent.sh
腳本內容如下,與主服務器腳本有區別!
#!/bin/bash
K=`ip addr | grep 192.168.80.188 | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
        magent -u root -n 51200 -l 192.168.80.188 -p 12000 -s 192.168.80.181:11211 -b 192.168.80.182:11211
else
pkill -9 magent
fi  

chmod +x magent.sh   加執行權限

第三步:開始驗證工作
---啓動主服務器
service keepalived start 
netstat -anpt | grep 12000 //確認magent運行
![](http://i2.51cto.com/images/blog/201803/25/20c59e92c452d26c559ba15bbc70ec27.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
cat /var/log/messages  看日誌,驗證主從
![](http://i2.51cto.com/images/blog/201803/25/d0554e0924fec37435290893d042078e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
ip addr //確認漂移地址生效
![](http://i2.51cto.com/images/blog/201803/25/69dda3e28ae6ea8e098da85dbf87ac7e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
驗證了漂移地址在主服務器上

從服務器開啓keepalived
service keepalived start
cat /var/log/messages      看日誌,驗證主從
![](http://i2.51cto.com/images/blog/201803/25/c71e3acc5d79a5b0744fcd4a9101864b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
下面啓動memcached
memcached -m 512k -u root -d -l 192.168.80.181 -p 11211 //啓動主

memcached -m 512k -u root -d -l 192.168.80.182 -p 11211 //啓動從
![](http://i2.51cto.com/images/blog/201803/25/d3006a19746f44b8d7c1dc2ac7bf706d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
啓動成功

下面在客戶端測試:192.168.80.138
-----關閉干擾------------
service firewalld stop
setenforce 0

telnet 192.168.80.188 12000 用漂移地址登陸服務:
Memcached主主複製+Keepalived高可用架構
以上界面表示登陸成功

Memcached主主複製+Keepalived高可用架構
再次用漂移地址登陸查看內容:
Memcached主主複製+Keepalived高可用架構
內容存在,寫入成功

從181與182服務器本地登陸查看內容:
telnet 192.168.80.181 11211
Memcached主主複製+Keepalived高可用架構
telnet 192.168.80.182 11211
Memcached主主複製+Keepalived高可用架構

下面進行倒換測試:
service keepalived stop //把主服務器停了業務不影響
Memcached主主複製+Keepalived高可用架構
可以看到漂移地址已經轉移到從服務器上了,說明從已接受工作!

再次通過漂移地址訪問時,業務不受影響,內容依然可以查看!
Memcached主主複製+Keepalived高可用架構
證明倒換測試成功,主備工作正常

service keepalived start 將主服務器再次啓動後
Memcached主主複製+Keepalived高可用架構
漂移地址再次轉移到主服務器上,接手地址,服務依然不受影響。

至此,實驗成功!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章