day43 keepalived高可用

day09 keepalived高可用

1.什么是高可用国旷,為什么要設(shè)計(jì)高可用?

兩臺機(jī)器啟動(dòng)著相同的業(yè)務(wù)系統(tǒng),當(dāng)有一臺機(jī)器宕機(jī),另外一臺服務(wù)器能快速的接管忿项,對于訪問的用戶是無感知的陡鹃。
減少系統(tǒng)不能提供服務(wù)的時(shí)間沮峡。

2.高可用使用什么工具來實(shí)現(xiàn)? 是硬件還是軟件?

軟件: keepalived

3.keepalived如何實(shí)現(xiàn)高可用?

通過vrrp協(xié)議實(shí)現(xiàn), 虛擬路由冗余協(xié)議.

4.vrrp誕生的過程以及vrrp的原理?

image.png

5.keepalived高可用使用場景?

通常業(yè)務(wù)系統(tǒng)需要7×24小時(shí)不DOWN機(jī)算撮,比如公司內(nèi)部OA系統(tǒng)生宛,每天公司人員都要使用,則不允許DOWN機(jī)肮柜。做為業(yè)務(wù)來說陷舅,要隨時(shí)隨地都要可用。

6.keepalived高可用核心概念總結(jié)?

搶占式:當(dāng)master宕機(jī)后backup頂替工作审洞,當(dāng)master恢復(fù)正常之后莱睁,backup退下,master又繼續(xù)工作芒澜。

非搶占式:當(dāng)master宕機(jī)之后,backup頂替工作,當(dāng)master恢復(fù)正常之后爆班,只能等到backup宕機(jī)之后花嘶,master才能接入正常工作。

7.keepalived高可用安裝與配置?

10.0.0.5 (兩臺機(jī)器要保持一致) 10.0.0.6

1.安裝

[root@lb01 ~]#  yum install keepalived -y

2.配置( master 主 backup備)

10.0.0.5 lb01

[root@lb01 ~]# cat /etc/keepalived/keepalived.conf 
global_defs {     
    router_id lb01   
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 50
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
}
    virtual_ipaddress {
        10.0.0.3
    }
}

10.0.0.6 lb02

[root@lb02 ~]# cat /etc/keepalived/keepalived.conf global_defs {
    router_id lb02
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3
    }
}

3.啟動(dòng)

[root@lb01 ~]# systemctl start keepalived
[root@lb01 ~]# systemctl enable keepalived

4.驗(yàn)證

[root@lb01 ~]# ip addr|grep 10.0.0.3

8.keepalived高可用地址漂移測試?

1.抓包看看
1.10.0.0.3 發(fā)送 組播數(shù)據(jù)包--->

什么是廣播:打個(gè)比方誊酌,一個(gè)廣場上部凑,全是中國人,你大喊一句中文碧浊,大家都聽到了涂邀,這叫廣播。

什么是組播:如果廣場上有中國人和外國人箱锐,你大喊一句中文比勉, 只有中國人能聽懂,這就是組播驹止。組播是有特定目的的成員浩聋,是一種可控的廣播,組播成員需要加入組播組幢哨,才能收到該組播信息赡勘。
2.抓包查看arp緩存表 --->

image.png

9.keepalived高可用搶占式與非搶占式?

master故障--->backup頂上--->master恢復(fù)--->backup 搶占式 默認(rèn)
master故障--->backup頂上--->master恢復(fù)--->backup繼續(xù)工作 非搶占式

1、兩個(gè)節(jié)點(diǎn)的state都必須配置為BACKUP(官方建議)
2捞镰、兩個(gè)節(jié)點(diǎn)都在vrrp_instance中添加nopreempt參數(shù)
3闸与、其中一個(gè)節(jié)點(diǎn)的優(yōu)先級必須要高于另外一個(gè)節(jié)點(diǎn)的優(yōu)先級。
兩臺服務(wù)器都角色狀態(tài)啟用nopreempt后岸售,必須修改角色狀態(tài)統(tǒng)一為BACKUP践樱,唯一的區(qū)分就是優(yōu)先級。

1.搶占:   硬件配置不一
2.非搶占: 硬件配置一致,業(yè)務(wù)不允許多次切換

10.keepalived高可用與Nginx集成

地址漂移實(shí)現(xiàn)高可用

nginx和keeplaived沒有關(guān)系?
nginx需要借助keeplaived VIP 地址漂移 實(shí)現(xiàn) 高可用.

11.案例

如果Nginx宕機(jī), 會導(dǎo)致用戶請求失敗, 但Keepalived并不會進(jìn)行切換, 所以需要編寫一個(gè)腳本檢測Nginx的存活狀態(tài), 如果不存活則kill nginx和keepalived

思路:1.判斷nginx進(jìn)程是否存在 ps aux|grep nginx|grep -v grep
2.判斷nginx的端口是否存在 netstat -lntp|grep :80|wc -l
3.通過curl來模擬訪問,判斷訪問結(jié)果是否ok curl -H Host:url.oldxu.com http://10.0.0.3

1.編寫腳本

[root@lb01 ~]# mkdir /scripts
    [root@lb01 ~]# vim /scripts/check_web.sh
    #!/usr/bin/bash

    nginx_port=$(netstat -lntp|grep :80|wc -l)
    if [ $nginx_port -ne 1 ];then
        
        systemctl start nginx &>/dev/null
        rc=$?
        sleep 3
        if [ $rc -ne 0 ];then
            systemctl stop  keepalived 
        fi
    fi
    [root@lb01 ~]# chmod +x /scripts/check_web.sh 

2.keeplaived調(diào)用該腳本

[root@lb01 ~]# cat /etc/keepalived/keepalived.conf 
    global_defs {     
        router_id lb01   
    }

    定義腳本名稱,以及腳本所在的路徑
    vrrp_script check_web {
       script "/scripts/check_web.sh"
       interval 5
    }


    vrrp_instance VI_1 {
        state MASTER
        #nopreempt
        interface eth0
        virtual_router_id 50
        priority 150
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
    }
        virtual_ipaddress {
            10.0.0.3
        }

        #調(diào)用腳本名稱
        track_script {
            check_web
        }
    }

3.模擬nginx停止,檢查nginx是否會被拉起

4.模擬nginx故障,檢查keeplaived的VIP是否會漂移至備節(jié)點(diǎn)

12.keepalived高可用腦裂與故障解決?

腦裂(split-brain)凸丸,指在一個(gè)高可用(HA)系統(tǒng)中拷邢,當(dāng)聯(lián)系著的兩個(gè)節(jié)點(diǎn)斷開聯(lián)系時(shí),本來為一個(gè)整體的系統(tǒng)屎慢,分裂為兩個(gè)獨(dú)立節(jié)點(diǎn)瞭稼,這時(shí)兩個(gè)節(jié)點(diǎn)開始爭搶共享資源忽洛,結(jié)果會導(dǎo)致系統(tǒng)混亂,數(shù)據(jù)損壞环肘。

對于無狀態(tài)服務(wù)的HA欲虚,無所謂腦裂不腦裂;
但對有狀態(tài)服務(wù)(比如MySQL)的HA悔雹,必須要嚴(yán)格防止腦裂复哆。
(但有些生產(chǎn)環(huán)境下的系統(tǒng)按照無狀態(tài)服務(wù)HA的那一套去配置有狀態(tài)服務(wù),結(jié)果可想而知...)

master 10.0.0.3
backup 10.0.0.3

1.在備上編寫檢測腳本, 測試如果能ping通主并且備節(jié)點(diǎn)還有VIP的話則認(rèn)為產(chǎn)生了腦列

[root@lb02 conf.d]# cat /scripts/check_spilt.sh 
vip=10.0.0.3
master_ip=10.0.0.5

ping -c2 $master_ip &>/dev/null
if [ $? -eq 0 ];then
    ip_check=$(ip addr | grep "$vip" | wc -l)
    if [ $ip_check -eq 1 ];then
        echo "腦列"
        systemctl stop keepalived
    fi
fi
--------------------------------------------------------------->

[root@lb02 conf.d]# cat /etc/keepalived/keepalived.conf 
global_defs {
    router_id lb02
}

vrrp_script check_spilt {
   script "/scripts/check_spilt.sh"
   interval 3
}


vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface eth0
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3
    }


    track_script {
    check_spilt
    }

}


keeplaived使用:
1.不能在公有云上使用
2.公有云要想實(shí)現(xiàn)負(fù)載均衡高可用-----> 購買的SLB 自帶高可用
3.虛擬IP咋使--->真實(shí)的硬件環(huán)境:l

總結(jié):

1.介紹高可用.....
2.高可用實(shí)現(xiàn)工具keepalived
3.keepalived--->VRRP協(xié)議實(shí)現(xiàn)--->誕生-->
4.keepalived安裝 配置 啟動(dòng) 測試地址漂移
5.nginx的高可用問題,nginx借助keeplaived地址漂移實(shí)現(xiàn)高可用
6.keepalived搶占和非搶占
7.keeplaived + nginx 實(shí)現(xiàn)高可用--->nginx故障-->強(qiáng)制殺死keepalived
8.keeplaived 腦裂 -->無狀態(tài)服務(wù)沒有影響 有狀態(tài)的有影響
9.keeplaived使用場景 如何使用-->
1.真實(shí)的硬件環(huán)境
2.不能在公有云使用
10.lvs+keeplaived nginx+keeplaived haproxy+keeplaived

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腌零,一起剝皮案震驚了整個(gè)濱河市梯找,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌益涧,老刑警劉巖锈锤,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饰躲,居然都是意外死亡牙咏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門嘹裂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妄壶,“玉大人,你說我怎么就攤上這事寄狼《〖模” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵泊愧,是天一觀的道長伊磺。 經(jīng)常有香客問我,道長删咱,這世上最難降的妖魔是什么屑埋? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮痰滋,結(jié)果婚禮上摘能,老公的妹妹穿的比我還像新娘。我一直安慰自己敲街,他們只是感情好团搞,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著多艇,像睡著了一般逻恐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天复隆,我揣著相機(jī)與錄音拨匆,去河邊找鬼。 笑死昏名,一個(gè)胖子當(dāng)著我的面吹牛涮雷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播轻局,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼样刷!你這毒婦竟也來了仑扑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤置鼻,失蹤者是張志新(化名)和其女友劉穎镇饮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體箕母,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡储藐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘶是。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钙勃。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖聂喇,靈堂內(nèi)的尸體忽然破棺而出辖源,到底是詐尸還是另有隱情,我是刑警寧澤希太,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布克饶,位于F島的核電站,受9級特大地震影響誊辉,放射性物質(zhì)發(fā)生泄漏矾湃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一堕澄、第九天 我趴在偏房一處隱蔽的房頂上張望邀跃。 院中可真熱鬧,春花似錦奈偏、人聲如沸坞嘀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丽涩。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間矢渊,已是汗流浹背继准。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留矮男,地道東北人移必。 一個(gè)月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像毡鉴,于是被迫代替她去往敵國和親崔泵。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容