黑馬程式設計師:keepalived實現雙機熱備

2021-01-11 黑馬程式設計師

Keepalived簡介

Keepalived是Linux下一個輕量級別的高可用解決方案。高可用(High Avalilability,HA),其實兩種不同的含義:廣義來講,是指整個系統的高可用行,狹義的來講就是之主機的冗餘和接管, 它與HeartBeat RoseHA 實現相同類似的功能,都可以實現服務或者網絡的高可用,但是又有差別,HeartBeat是一個專業的、功能完善的高可用軟體,它提供了HA 軟體所需的基本功能,比如:心跳檢測、資源接管,檢測集群中的服務,在集群節點轉移共享IP位址的所有者等等。HeartBeat功能強大,但是部署和使用相對比較麻煩,與HeartBeat相比,Keepalived主要是通過虛擬路由冗餘來實現高可用功能,雖然它沒有HeartBeat功能強大,但是Keepalived部署和使用非常的簡單,所有配置只需要一個配置文件即可以完成。

Keepalived是什麼?

Keepalived起初是為LVS設計的,專門用來監控集群系統中各個服務節點的狀態,它根據TCP/IP參考模型的第三、第四層、第五層交換機制檢測每個服務節點的狀態,如果某個伺服器節點出現異常,或者工作出現故障,Keepalived將檢測到,並將出現的故障的伺服器節點從集群系統中剔除,這些工作全部是自動完成的,不需要人工幹涉,需要人工完成的只是修復出現故障的服務節點。

後來Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虛擬路由冗餘協議)出現的目的是解決靜態路由出現的單點故障問題,通過VRRP可以實現網絡不間斷穩定運行,因此Keepalvied 一方面具有伺服器狀態檢測和故障隔離功能,另外一方面也有HA cluster功能,下面介紹一下VRRP協議實現的過程。

VRRP協議與工作原理

在現實的網絡環境中。主機之間的通信都是通過配置靜態路由或者(默認網關)來完成的,而主機之間的路由器一旦發生故障,通信就會失效,因此這種通信模式當中,路由器就成了一個單點瓶頸,為了解決這個問題,就引入了VRRP協議。

熟悉網絡的學員對VRRP協議應該不陌生,它是一種主備模式的協議,通過VRRP可以在網絡發生故障時透明的進行設備切換而不影響主機之間的數據通信,這其中涉及到兩個概念:物理路由器和虛擬路由器。

VRRP可以將兩臺或者多臺物理路由器設備虛擬成一個虛擬路由,這個虛擬路由器通過虛擬IP(一個或者多個)對外提供服務,而在虛擬路由器內部十多個物理路由器協同工作,同一時間只有一臺物理路由器對外提供服務,這臺物理路由設備被成為:主路由器(Master角色),一般情況下Master是由選舉算法產生,它擁有對外服務的虛擬IP,提供各種網絡功能,如:ARP請求,ICMP 數據轉發等,而且其它的物理路由器不擁有對外的虛擬IP,也不提供對外網絡功能,僅僅接收MASTER的VRRP狀態通告信息,這些路由器被統稱為「BACKUP的角色」,當主路由器失敗時,處於BACKUP角色的備份路由器將重新進行選舉,產生一個新的主路由器進入MASTER角色,繼續提供對外服務,整個切換對用戶來說是完全透明的。

每個虛擬路由器都有一個唯一的標識號,稱為VRID,一個VRID與一組IP位址構成一個虛擬路由器,在VRRP協議中,所有的報文都是通過IP多播方式發送的,而在一個虛擬路由器中,只有處於Master角色的路由器會一直發送VRRP數據包,處於BACKUP角色的路由器只會接受Master角色發送過來的報文信息,用來監控Master運行狀態,一一般不會發生BACKUP搶佔的情況,除非它的優先級更高,而當MASTER不可用時,BACKUP也就無法收到Master發過來的信息,於是就認定Master出現故障,接著多臺BAKCUP就會進行選舉,優先級最高的BACKUP將稱為新的MASTER,這種選舉角色切換非常之快,因而保證了服務的持續可用性。

Keepalvied的工作原理

上面我們介紹了Keepalived通過VRRP實現高可用性的工作原理,而Keepalived作為一個高性能集群軟體,它還能實現對集群中伺服器運行狀態的監控以及故障隔離,下面我們介紹一下Keepalived對伺服器運行狀態和故障隔離的工作原理。

Keepalived工作在TCP/IP 參考模型的 三層、四層、五層,也就是分別為:網絡層,傳輸層和應用層,根據TCP、IP參數模型隔層所能實現的功能,Keepalived運行機制如下:

在網絡層:我們知道運行這4個重要的協議,網際網路IP協議,網際網路可控制報文協議ICMP、地址轉換協議ARP、反向地址轉換協議RARP,在網絡層Keepalived在網絡層採用最常見的工作方式是通過ICMP協議向伺服器集群中的每一個節點發送一個ICMP數據包(有點類似與Ping的功能),如果某個節點沒有返迴響應數據包,那麼認為該節點發生了故障,Keepalived將報告這個節點失效,並從伺服器集群中剔除故障節點。

在傳輸層:提供了兩個主要的協議:傳輸控制協議TCP和用戶數據協議UDP,傳輸控制協議TCP可以提供可靠的數據輸出服務、IP位址和埠,代表TCP的一個連接端,要獲得TCP服務,需要在發送機的一個埠和接收機的一個埠上建立連接,而Keepalived在傳輸層裡利用了TCP協議的埠連接和掃描技術來判斷集群節點的埠是否正常,比如對於常見的WEB伺服器80埠。或者SSH服務22埠,Keepalived一旦在傳輸層探測到這些埠號沒有數據響應和數據返回,就認為這些埠發生異常,然後強制將這些埠所對應的節點從伺服器集群中剔除掉。

在應用層:可以運行FTP,TELNET,SMTP,DNS等各種不同類型的高層協議,Keepalived的運行方式也更加全面化和複雜化,用戶可以通過自定義Keepalived工作方式,例如:可以通過編寫程序或者腳本來運行Keepalived,而Keepalived將根據用戶的設定參數檢測各種程序或者服務是否允許正常,如果Keepalived的檢測結果和用戶設定的不一致時,Keepalived將把對應的伺服器從伺服器集群中剔除。

Keepalvied的安裝

我們在本文中的測試環境如下:

兩臺物理伺服器和一個虛擬伺服器(vip):

master: centos7 192.168.8.4

backup: centos7 192.168.8.6

vip:192.168.8.100

測試環境的網絡topology圖如下:

節點A 192.168.8.4 (主節點), 節點B 192.168.8.6(備用節點),虛擬IP(對外提供服務的IP 192.168.8.100)。

在這種模式下,虛擬IP在某時刻只能屬於某一個節點,另一個節點作為備用節點存在。當主節點不可用時,備用節點接管虛擬IP(即虛擬IP漂移至節點B),提供正常服務。

keepalived的原理可以這樣簡單理解:

keepalived安裝在兩臺物理伺服器上,並相互監控對方是否在正常運行。

當節點A正常的時候:節點A上的keepalived會將下面的信息廣播出去:

192.168.8.100 這個IP對應的MAC地址為節點A網卡的MAC地址,圖中的其它電腦如客戶端和NodeB會更新自己的ARP表,對應192.168.8.100的MAC地址=節點A網卡的MAC地址。當節點A發生故障的時候,節點B上的keepalived會檢測到,並且將下面的信息廣播出去:192.168.8.100 這個IP對應的MAC地址為節點B網卡的MAC地址圖中的其它電腦如客戶端會更新自己的ARP表,對應192.168.8.100的MAC地址=節點B網卡的MAC地址,下面分別在兩臺機器上進行軟體安裝:

1. 下載keepalived :說明:目前在CentOS7上安裝需要1.3.2以上版本,否則會出現一個作業系統內核錯誤,不好搞定,建議使用root用戶安裝

2. 解壓keepalived :tar -xvf keepalived-1.3.4.tar.gz

3. ./configure

4. make

5. make install

6. whereis keepalived

7. mkdir /etc/keepalived

8. cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

9. cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/ (目前這個文件在keepalived解壓後,存在keepalived文件夾,etc文件夾,init.d中,具體看安裝的版本)

10. cp /usr/local/etc/sysconfig/keepalived /etc/sys

11. cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

12. cp /usr/local/sbin/keepalived /usr/sbin/

13. chkconfig --add keepalived 添加作業系統啟動

14. chkconfig --list keepalived

15. service keepalived start/stop/restart 啟動關閉keepalived服務

Keepalvied的防火牆配置

防火牆規則(主從機都要配置,雙向打開vrrp服務,建議關閉防火牆先測試keepalived配置是否正確,這裡是firewall防火牆的配置,iptables的話查下):

16. firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

17. firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

18. firewall-cmd --reload

Keepalvied配置

分別配置主機從機的keepalived.conf文件,配置完成後重啟keepalived服務,雙機熱備功能伺服器配置完成。

1. 主機的配置

2. 從機的配置

相關焦點

  • 搭建高可用負載均衡器: haproxy+keepalived
    ):VIP: 192.168.1.100·負載均衡器會用到2臺主機,一主一備的架構lb1(默認為主): 192.168.1.101lb2(默認為備): 192.168.1.102·後端伺服器集群中主機的IP位址s1: 192.168.1.2s2: 192.168.1.3s3: 192.168.1.4
  • Keepalived 2.0.14 發布,C 語言編寫的路由軟體
    To avoid syntax error, modify keepalived.spec.in.* When uninstall keepalived with init upstart, stop keepalived process.* Fix type re LOG_INGO should be LOG_INFO * 6git stash --cached.
  • UNIX平臺雙機配置 - 軟體與服務 - 中國軟體網-推動ICT產業的健康...
    4.編輯/etc/hosts文件,將所有的(這裡為兩臺主機)IP位址 (包括心跳地址、網卡地址等)加到此文件中,以備解析時使用。 5.創建需要共享的VG,這裡VG的創建就不詳細說明了。#vgchange -a n  /dev/vgsyb  停用此鎖卷組,修改/etc/lvmrc文件,將 雙機設置為手工啟動,等待由雙機軟體來激活鎖卷組 [color=red:e75c3b98b1]13.因為共享卷組是由雙機來激活的,也就是由包控制文件來激活,所以在此篇文章中我沒有介紹如何去配置包,所以按照正常的使用#cmruncl可以啟動雙機但是不能啟動共享卷組的。
  • 10分鐘學會 手把手教你玩雙機3D投影
    目前,民用3D投影方案分為單機方案與雙機方案,其中單機方案屬於主動式3D技術,只使用一臺投影機;而雙機方案屬於被動式3D技術(偏光式3D技術),輔助設備(3D眼鏡)成本較低,但是對顯示設備(需雙投影機與金屬幕)的要求較高。
  • 我省首家雙機3D落戶奧斯卡大上海影城
    本報訊(記者 奚同發)從即日起,河南觀眾終於可以享受到3D技術的最新效果,雙機3D正式登陸我省奧斯卡院線大上海國際影城,這也是我省目前唯一一家擁有這樣最時尚、最先進技術的影院。而配套上映的由徐克執導的影片《龍門飛甲》,也令觀眾大呼過癮。
  • 高可用負載均衡最佳實踐五:總體實現
    理論上,負載均衡器也可以是其他類型的unix,如freebsd,但這些系統都不能linux來得方便,因為lvs已經集成在各個linux的發行版裡了,不需要額外的處理,就可以實現lvs的轉發(主要內核模塊是ip_vs)。本方案以開源為宗旨,並且考慮以節省成本,因此所有伺服器都安裝和運行centos5。
  • 萬達影城將引進南昌首部雙機3D設備
    據悉,近期萬達影城將率先引進世界最領先的雙機3D+金屬銀幕的頂尖設備組合,在6月16日好萊塢3D動畫大片《玩具總動員》上映之際,這套雙機3D設備將正式跟洪城影迷見面,將為南昌影迷呈現出「水晶般亮麗清晰的3D畫質」,給觀眾帶來前所未有顛覆性的感官新體驗。
  • 基於串口通訊技術實現流量計計量系統的設計
    4.1 系統原理 此流量計計量系統共包括計算機監控管理程序(力控2.0組態軟體,即ForceControl2.0)、多串口轉換卡(CI-134IS)、質量流量計(羅斯蒙特)、自動切斷閥(兩階段式)、控制系統(OPTOMUX B100)、急停復位按鈕,控制方式可實現全自動化。
  • 西藏航空一機長執行任務落地後去世 雙機長制如何運行
    從這份聲明中我們注意到了一個細節,那就是該航班為雙機長運行。可能有人會問,一架民航客機為什麼會有兩名機長? 兩名機長的作用主要體現在哪兒呢?接下來我們就來詳細了解一下雙機長制度。在中國航空界,雙機長運行,可是中國民航在高原安全運行的密鑰。
  • 高精度3d重建是一個雙機融合模型
    fast2pair是基於熱卷積的機器視覺融合方法。該方法利用3d雷射雷達和毫米波雷達,提取三維車輛的點雲信息。基於點雲特徵圖的3d雷射雷達和毫米波雷達融合地圖建立是指通過雷射雷達點雲,高精度點雲輸入到pacsfast地圖數據融合系統。高精度網格階段結合雷射雷達數據和點雲數據,對輸入的點雲和三維地圖進行融合獲得最終高精度地圖。
  • 普通程式設計師與高級程式設計師有什麼差別?你知道嗎?
    程式設計師的基本能力是:Tasking和學習能力。當好程式設計師的能力是:用更好的方法來實現功能。0.文檔能力「文檔是第一生產力」,這一點在程式設計師的世界是毫無異議的。俗話說:「不會寫文檔的程式設計師不是一個好程式設計師」。
  • 是什麼成就了一名「高級」程式設計師?
    除多年編程經驗之外,還有什麼能區分一個程式設計師是「老手」還是「新手」?編程技巧當然是一部分,但它絕非是全部。聰明的程式設計師可能比他們的同行擁有更出眾的編程技巧,但那不足以說明他們就是「老手」。同樣,僅僅因為擁有10年編程經驗也並不意味著他們就是高手。在工作崗位上,擁有多年編程經驗也不能說明問題。即便沒被炒魷魚,那也不能提升你的價值。
  • 今日芯聲|搶完呼吸機,美國州長們開始搶退休程式設計師了
    「今日芯聲」是讀芯術推出的一檔簡讀欄目,匯聚每日國內外最新最熱的AI應用資訊,敬請關注。1、搶完口罩呼吸機,美國的州長們開始搶退休程式設計師了美國矽谷也流行著這樣的傳說,「如果你在一家大公司工作超過10年,那麼你的技術將會落後六個時代。」
  • 程式設計師和工程師的不同
    ,可以迅速從程式設計師成長為工程師。當時我覺得太詫異了,從很多招聘啟事來看,「程式設計師」不就等於 「工程師」嗎,只是「工程師」更好聽一些而已。等我工作久了,才知道「程式設計師」和「工程師」真的是不一樣的——程式設計師只寫程序,工程師寫能在現實世界中創 造價值的程序。
  • 據說不知道這些大神的程式設計師不是真正的程式設計師
    理由是他們「研究發展了通用的作業系統理論,尤其是實現了UNIX作業系統」。   注意後半句,搞計算機的多少都會有一點OS情節,總是夢想是自己也能做一個OS。可對大多數人來說,這是夢想而已,因為現代的作業系統 太複雜,太龐大,你即使精通理論,實現的工作量遠遠超出了一個人的能力範圍。
  • 國外程式設計師推薦:每個程式設計師都應讀的書
    —— Joel《程式設計師修煉之道:從小工到專家》內容簡介:《程式設計師修煉之道》由一系列獨立的部分組成, 涵蓋的主題從個人責任、職業發展,知道用於使代碼保持靈活、並且易於改編和復用的各種架構技術, 利用許多富有娛樂性的奇聞軼事、有思想性的例子及有趣的類比, 全面闡釋了軟體開發的許多不同方面的最佳實踐和重大陷阱。
  • 「妹子在熱成像下,一不小心就暴露了小秘密,真的好尷尬呀!」哈哈哈哈
    閱讀本文前,請您先點擊上面的「藍色字體」,再點擊「關注」,這樣您就可以繼續免費收到最新文章了「妹子在熱成像下,一不小心就暴露了小秘密,真的好尷尬呀!」哈哈哈哈01熱成像這種東西常用於醫學上,一般給病人檢查身體時會用到。
  • 資深程式設計師大佬告訴你,如何成為一個C++高級程式設計師
    GUI想要學習交流C/C++,可以私信小編 發C++ 獲取資源和一個程式設計師交流圈。3. 數據結構和算法很多人都忽視了數據結構和算法方面的知識,尤其是一些程式語言的庫做得非常好,幾乎不需要自己去實現一些數據結構和算法,導致現在很多程式設計師不 重視甚至忽略這方面的知識。但是,當我們想讓我們的程序跑的更快、內存佔用更少的時候,這些知識就非常非常重要了。
  • 程式設計師的這108個笑話 你都看得懂嗎?-程式設計師,笑話,編程, ——快...
    15、殺一個程式設計師不需要用槍,改三次需求就可以了。16、C++程式設計師看不起C程式設計師,C程式設計師看不起java程式設計師,java程式設計師看不起C#程式設計師,C#程式設計師看不起美工。周末了,美工帶著妹子出去約會了,一群SX程式設計師還在加班。17、問:如何生成一個隨機的字符串?答:讓新手退出VIM。18、「我給你出個腦筋急轉彎,你說達文西密碼的上面是什麼?」