002 基於VIP的keepalived高可用架構

  • Keepalived簡介
  • Keepalived工作原理
  • Keepalived應用場景
  • 高可用集羣
  • 高可用架構
  • Keepalived高可用集羣的解決方案
Keepalived簡介

Keepalived的作用是檢測服務器的狀態。如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepalived自動將服務器加入到服務器集羣中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的服務器。
Keepalived的特性:

  1. 配置文件簡單:配置文件比較簡單,可通過簡單配置實現高可用功能
  2. 穩定性強:Keepalived是一個類似於layer3/4/7交換機機制的軟件,具備我們平時說的第3層、第4層和第7層交換機的功能,常用於前端負載均衡器的高可用服務,當主服務器出現故障時,可以快速進行切換,監測機制靈活,成功率高。
  3. 成本低廉:開源軟件,可直接下載配置使用,沒有額外費用。
  4. 應用範圍廣:因爲Keepalived可應用在多個層面,所以它幾乎可以對所有的應用做高可用,包括LVS、數據庫、http服務、nginx負載均衡等。
  5. 支持多種類型:支持主從模式、主主模式高可用,可根據業務場景靈活選擇。
Keepalived工作原理
  1. WatchDog監控checkers和VRRP進程的狀態;
  2. Checkers負責真實服務器的健康檢查healthchecking;
  3. VRRP Stack負責負載均衡器之間的失敗切換;
  4. IPVS wrapper用來發送設定的規則到內核IPVS代碼;
  5. Netlink Reflector用來設定VRRP的vip(虛擬IP)地址等。

Keepalived是以VRRP協議爲實現基礎的,VRRP全稱Vritual Router Redundancy Protocol,即虛擬路由冗餘協議。
VRRP根據優先級來確定虛擬路由器中每臺路由器的角色(Master路由器或Backup路由器)。VRRP優先級的取值範圍爲0到255(數值越大表明優先級越高),可配置的範圍是1到254,優先級0爲系統保留給路由器放棄Master位置的時候使用,255則是系統保留給IP地址擁有者使用。優先級越高,則越有可能成爲Master路由器。當兩臺優先級相同的路由器同時競爭Master時,比較接口IP大小。接口地址大者當選爲Master。
Keepalived主要有三個模塊

  1. core模塊:Keepalived的核心,負責主進程的啓動、維護以及全局配置文件的加載和解析。
  2. check模塊:負責健康檢查,包括常見的各種檢查方式。
  3. vrrp模塊:是來實現VRRP協議的。
Keepalived應用場景

在網絡層、數據鏈路層,運行着4個重要協議:

  • IP:互聯網協議。
  • ICMP:互聯網控制報文協議。
  • ARP:地址轉換協議(IP地址轉Mac地址)
  • RARP:反向地址轉換協議。(Mac地址轉IP地址)
    網絡層場景:
    Keepalived在網絡層採用最常見的工作方式是通過ICMP協議向服務器集羣中的那個節點發送一個ICMP數據包(類似於ping實現的功能),如果某個節點沒有返回響應數據包,那麼認爲此節點發生了故障,Keepalived將報告此節點失效,並從服務器集羣中剔除故障節點。
    傳輸層場景:
    傳輸層提供了兩個主要的協議TCP和UDP
    Keepalived在傳輸層利用TCP協議的端口連接和掃描技術來判斷集羣點是否正常。如Web服務器80端口,ssh服務22端口,Keepalived一旦在傳輸層探測到這些端口沒有響應數據返回,就認爲這些端口發生異常,然後強制將此端口對應得節點從服務器集羣中移除。
    應用層場景:
    在應用層,可運行FTP、TELNET、HTTP、DNS等各種不同類型的高層協議。
    Keepalived在應用層的運行方式也更加全面化和複雜化,用戶可以通過自定義Keepalived的工作方式;例如,用戶可以通過編寫程序來運行Keepalived。而Keepalived將根據用戶的設定檢測各種程序或服務是否運行正常,如果Keepalived的檢測結果與用戶設定不一致時,Keepalived將把對應的服務從服務器中移除。
集羣
  1. 集羣是一組相互獨立的、通過高速網絡互聯的計算機,它們構成了一個組,並以單一系統的模式加以管理。一個客戶與集羣相互作用時,集羣像是一個獨立的服務器。
  2. 通過集羣技術,可以在付出較低成本的情況下獲得在性能、可靠性、靈活性方面相對較高的收益,其任務調度則是集羣系統中的核心技術。
  3. 集羣組成後,可以利用多個計算機和組合進行海量請求處理(負載均衡),從而獲得很高的處理效率,也可以用多個計算機做備份(高可用),使得任何一個機器壞了整個系統還是能正常運行。集羣在目前互聯網公司是必備的技術,極大提高互聯網業務的可用性和可縮放性。
高可用

HA(High Available),高可用性羣集是通過系統的可靠性(reliability)和可維護性(maintainability)來度量的。
工程上,通常用平均無故障時間(MTFF)來度量系統的可靠性,用平均維修時間(MTTR)來度量系統的可維護性。於是可用性被定義爲:HA=MTFF/(MTFF+MTTR) (平均無故障時間/總時間,總時間=平均無故障時間+平均維修時間),宕機時間不超過6分鐘。
具體HA(可用性)衡量標準:

  1. 99%一年宕機時間不超過4天
  2. 99.9%一年宕機時間不超過10小時
  3. 99.99% 一年宕機時間不超過1小時
  4. 99.999% 一年宕機時間不超過6分鐘
高可用集羣實現

高可用工作方式:

  1. 主從方式(非對稱方式)
  2. 雙機雙工方式(互備互援)
  3. 集羣工作方式(多服務器互備方式)

高可用的資源分類

  1. 網絡高可用
  2. 服務器高可用
  3. 存儲高可用
  4. 服務高可用
    開源高可用解決方案:Keepalived 通過實現vrrp(虛擬路由冗餘協議)協議來實現地址漂移

主從高可用架構

  1. 在系統中,有一個Master節點和一個Backup節點,其中Master節點對線上業務提供服務,Backup與Master節點之間保持心跳。
  2. 當Master節點因宕機服務不可用時,系統會切換到Backup節點上線,提供服務。
  3. 當宕機Master節點恢復後,系統將該Master作爲Backup加入集羣。

雙主高可用架構

  1. 在系統中,有兩個Master節點,均對線上業務提供服務,兩個Master節點之間保持心跳。
  2. 當某一臺Master節點因宕機服務不可用時,系統會將流量全部導向剩餘的Master節點,繼續提供服務。
  3. 當宕機的Master節點恢復後,系統將該Master加入集羣,提供服務。
Keepalived高可用集羣的解決方案

Keepalived在一個節點上啓動之後,會生成一個Master主進程,這個主進程又會生成兩個子進程,分別是:

  1. VRRP Stack:實現VRRP協議
  2. Checkers:檢測ipvs後端realserver的健康狀況檢測

VRRP雙方節點都啓動以後,要實現狀態轉換的,剛開始啓動的時候,初始狀態都是Backup,而後向其它節點發送通告,以及自已的優先級信息,誰的優先級高,就轉換爲Master,否則就還是Backup。

這時候服務就在狀態爲Master的節點上啓動,爲用戶提供服務,如果,該節點掛掉了,則轉換爲Backup ,優先級降低,另一個節點轉換爲Master,優先級上升,服務就在此節點啓動,VIP,VMAC都會被轉移到這個節點上,爲用戶提供服務。

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