幾個(gè)集群的總結(jié)(三)keepalived②

本篇總結(jié)利用keepalived來實(shí)現(xiàn)nginx主從模式下的高可用。

環(huán)境:CentOS6.4、nginx-1.12.2、keepalived-1.4.0。

場(chǎng)景:

場(chǎng)景需求


keepalived實(shí)現(xiàn)nginx高可用

規(guī)劃:

節(jié)點(diǎn)規(guī)劃

實(shí)施

nginx和keepalived都需要安裝在129和130兩個(gè)節(jié)點(diǎn)上。nginx的詳細(xì)安裝過程略過,keepalived安裝見上一篇keepalived①。

兩個(gè)關(guān)鍵點(diǎn):

1)keepalived的配置文件

192.168.139.130節(jié)點(diǎn)上keepalived配置如下

130節(jié)點(diǎn)keepalived配置

192.168.139.129節(jié)點(diǎn)上keepalived配置如下(紅框和紅圈的注意和130節(jié)點(diǎn)的對(duì)比):

129節(jié)點(diǎn)keepalived配置

2)檢查nginx是否正常的腳本,連個(gè)節(jié)點(diǎn)的腳本內(nèi)容一致。

nginx檢查腳本如下:

nginx檢查腳本

這里需要注意的是打開檢查腳本的執(zhí)行權(quán)限?

chmod +x /etc/keepalived/nginx_check.sh


高可用測(cè)試

啟動(dòng)兩個(gè)節(jié)點(diǎn)上的nginx和keepalived。

在130節(jié)點(diǎn)上執(zhí)行ip add,查看ip情況:

130節(jié)點(diǎn)ip情況

可以看到主節(jié)點(diǎn)130機(jī)子上已經(jīng)虛擬出來了192.168.139.120ip。

在129節(jié)點(diǎn)上執(zhí)行ip add,查看ip情況:

129節(jié)點(diǎn)ip情況

可以看出從節(jié)點(diǎn)129機(jī)子上只有自己的ip。

在瀏覽器中訪問http://192.168.139.120

http://192.168.139.120

注意Thank you for using nginx. 130這一行,我在130節(jié)點(diǎn)的nginx默認(rèn)首頁中加了130,在129節(jié)點(diǎn)的nginx默認(rèn)首頁中加了129,目前可以看出,通過虛擬ip訪問nginx,是由主節(jié)點(diǎn)130提供服務(wù)的。

現(xiàn)在,把130節(jié)點(diǎn)的keepalived停掉:

130上keepalived停止后的ip情況

在查看129節(jié)點(diǎn)的ip:

130節(jié)點(diǎn)keepalived停止后129節(jié)點(diǎn)ip情況

再訪問http://192.168.139.120

139節(jié)點(diǎn)掛掉后訪問 http://192.168.139.120

現(xiàn)在http://192.168.139.120依然可以訪問,不過是由之前的從節(jié)點(diǎn)129提供的服務(wù)。

可以看出當(dāng)其中一個(gè)節(jié)點(diǎn)掛掉后,nginx依然可以對(duì)外提供服務(wù),實(shí)現(xiàn)了高可用。

現(xiàn)在,把130節(jié)點(diǎn)的keepalived再次啟動(dòng),查看130節(jié)點(diǎn)ip:

主節(jié)點(diǎn)130ip情況

再查看129節(jié)點(diǎn)ip:

129節(jié)點(diǎn)ip情況

訪問http://192.168.139.120/

訪問 http://192.168.139.120/

問題出現(xiàn)了:130節(jié)點(diǎn)又對(duì)外提供服務(wù),正常的主從邏輯應(yīng)該是主節(jié)點(diǎn)掛掉并恢復(fù)后成為從節(jié)點(diǎn),而不是搶占,況且129節(jié)點(diǎn)并沒有出現(xiàn)故障,所以這引起了一個(gè)非期望情況的主從節(jié)點(diǎn)切換問題!

解決辦法:

在130節(jié)點(diǎn)的keepalived的配置中:

修改130節(jié)點(diǎn)keepalived配置

在129的keepalived配置中添加nopreempt。

完。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容