本篇總結(jié)利用keepalived來實(shí)現(xiàn)nginx主從模式下的高可用。
環(huán)境:CentOS6.4、nginx-1.12.2、keepalived-1.4.0。
場(chǎng)景:


規(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配置如下

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

2)檢查nginx是否正常的腳本,連個(gè)節(jié)點(diǎn)的腳本內(nèi)容一致。
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情況:

可以看到主節(jié)點(diǎn)130機(jī)子上已經(jīng)虛擬出來了192.168.139.120ip。
在129節(jié)點(diǎn)上執(zhí)行ip add,查看ip情況:

可以看出從節(jié)點(diǎn)129機(jī)子上只有自己的ip。
在瀏覽器中訪問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停掉:

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

再訪問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:

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

訪問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的配置中:

在129的keepalived配置中添加nopreempt。
完。