001.Keepalived簡介

来源:https://www.cnblogs.com/itzgr/archive/2018/12/23/10165280.html
-Advertisement-
Play Games

一 Keepalived 定義 Keepalived 是一個基於VRRP協議來實現的LVS服務高可用方案,可以解決靜態路由出現的單點故障問題。一個LVS服務會有2台伺服器運行Keepalived,一臺為主伺服器(MASTER),一臺為備份伺服器(BACKUP),但是對外表現為一個虛擬IP,主伺服器會 ...


一 Keepalived 定義

Keepalived 是一個基於VRRP協議來實現的LVS服務高可用方案,可以解決靜態路由出現的單點故障問題。一個LVS服務會有2台伺服器運行Keepalived,一臺為主伺服器(MASTER),一臺為備份伺服器(BACKUP),但是對外表現為一個虛擬IP,主伺服器會發送特定的消息給備份伺服器,當備份伺服器收不到這個消息的時候,即主伺服器宕機的時候,備份伺服器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。

二 VRRP 協議簡介

在實際網路環境中,主機之間的通信通常都是通過配置靜態路由協議完成的。但配置靜態路由卻經常成為單點故障。VRRP的目的就是為瞭解決靜態路由單點故障問題,VRRP通過一競選(election)協議來動態的將路由任務交給LAN中虛擬路由器中的某台VRRP路由器。

三 VRRP 工作機制

在一個VRRP虛擬路由器中,有多台物理的VRRP路由器協同工作,同一時間只有一臺稱為MASTER的負責路由工作,其它的都是BACKUP,MASTER並非一成不變,VRRP讓每個VRRP路由器參與競選,最終獲勝的就是MASTER,它擁有對外服務的虛擬IP,提供各種網路功能,如數據轉發、ICMP、ARP。而其他路由器不擁有對外的虛擬IP,也不提供對外網路功能,僅僅接受MMASTER的VRRP狀態通告信息,這些路由器稱為備份路由器。 VRRP通過競選協議來實現虛擬路由器的功能,所有的協議報文都是通過IP多播(multicast)包(多播地址224.0.0.18)形式發送的。虛擬路由器由VRID(範圍0-255)和一組IP地址組成,對外表現為一個周知的MAC地址。所以,在一個虛擬路由器中,不管誰是MASTER,對外都是相同的MAC和IP(稱之為VIP)。客戶端主機並不需要因為MASTER的改變而修改自己的路由配置,對客戶端來說,這種主從的切換是透明的。 在一個虛擬路由器中,只有作為MASTER的VRRP路由器會一直發送VRRP通告信息(VRRPAdvertisement message),BACKUP不會搶占MASTER,除非它的優先順序(priority)更高。當MASTER不可用時(BACKUP收不到通告信息),多台BACKUP中優先順序最高的這台會被搶占為MASTER。這種搶占是非常快速的(<1s),以保證服務的連續性。由於安全性考慮,VRRP包使用了加密協議進行加密。

四 VRRP 工作流程

(1).初始化

路由器啟動時,如果路由器的優先順序是255(最高優先順序,路由器擁有路由器地址),要發送VRRP通告信息,併發送廣播ARP信息通告路由器IP地址對應的MAC地址為路由虛擬MAC,設置通告信息定時器準備定時發送VRRP通告信息,轉為MASTER狀態;否則進入BACKUP狀態,設置定時器檢查定時檢查是否收到MASTER的通告信息。

(2).Master

  1. 設置定時通告定時器;
  2. 用VRRP虛擬MAC地址響應路由器IP地址的ARP請求;
  3. 轉發目的MAC是VRRP虛擬MAC的數據包;
  4. 如果是虛擬路由器IP的擁有者,將接受目的地址是虛擬路由器IP的數據包,否則丟棄;
  5. 當收到shutdown的事件時刪除定時通告定時器,發送優先權級為0的通告包,轉初始化狀態;
  6. 如果定時通告定時器超時時,發送VRRP通告信息;
  7. 收到VRRP通告信息時,如果優先權為0,發送VRRP通告信息;否則判斷數據的優先順序是否高於本機,或相等而且實際IP地址大於本地實際IP,設置定時通告定時器,複位主機超時定時器,轉BACKUP狀態;否則的話,丟棄該通告包。

(3).Backup

  1. 設置主機超時定時器;
  2. 不能響應針對虛擬路由器IP的ARP請求信息;
  3. 丟棄所有目的MAC地址是虛擬路由器MAC地址的數據包;
  4. 不接受目的是虛擬路由器IP的所有數據包;
  5. 當收到shutdown的事件時刪除主機超時定時器,轉初始化狀態;
  6. 主機超時定時器超時的時候,發送VRRP通告信息,廣播ARP地址信息,轉MASTER狀態;
  7. 收到VRRP通告信息時,如果優先權為0,表示進入MASTER選舉;否則判斷數據的優先順序是否高於本機,如果高的話承認MASTER有效,複位主機超時定時器;否則的話,丟棄該通告包。

(4).ARP查詢處理

當內部主機通過ARP查詢虛擬路由器IP地址對應的MAC地址時,MASTER路由器回覆的MAC地址為虛擬的VRRP的MAC地址,而不是實際網卡的MAC地址,這樣在路由器切換時讓內網機器覺察不到;而在路由器重新啟動時,不能主動發送本機網卡的實際MAC地址。如果虛擬路由器開啟的ARP代理 (proxy_arp)功能,代理的ARP也回應VRRP虛擬MAC地址。

五 Keepalived工作原理

Keepalived工作在TCP/IP模型的第三、四和五層,即網路層、傳輸層和應用層。其運行機制如下: 網路層,Keepalived採用ICMP協議向伺服器集群中的每個節點發送一個ICMP的數據包,如果某個節點沒有返迴響應數據包,則認為此節點發生了故障,Keepalived將報告次節點失效,並從伺服器集群中剔除故障節點。 傳輸層,Keepalived利用你TCP的埠連接和掃描技術來判斷集群節點是否正常。如常見的web服務預設埠80,ssh預設埠22等。Keepalived一旦在傳輸層探測到相應埠沒用響應數據返回,則認為此埠發生異常,從而將此埠對應的節點從伺服器集群中剔除。 應用層,可以運行FTP、telnet、smtp、dns等各種不同類型的高層協議,Keepalived的運行方式也更加全面化和複雜化,用戶可以通過自定義Keepalived的工作方式,來設定監測各種程式或服務是否正常,若監測結果與設定的正常結果不一致,將此服務對應的節點從伺服器集群中剔除。

六 Keepalived體系架構

008 Keepalived的功能體繫結構,大致分兩層:用戶空間(user space)和內核空間(kernel space)。 內核空間:主要包括IPVS:IP虛擬伺服器,用於實現網路服務的負載均衡; NETLINK:提供高級路由及其他相關的網路功能。 用戶空間:
  • WatchDog:負載監控checkers和VRRP進程的狀況
  • VRRP Stack:負載負載均衡器之間的失敗切換FailOver,如果只用一個負載均稀器,則VRRP不是必須的。
  • Checkers:負責真實伺服器的健康檢查healthchecking,是keepalived最主要的功能。換言之,可以沒有VRRP Stack,但健康檢查healthchecking是一定要有的。
  • IPVS wrapper:用戶發送設定的規則到內核ipvs代碼
  • Netlink Reflector:用來設定vrrp的vip地址等。
註意:Keepalived的所有功能是配置keepalived.conf文件來實現的。 參考文檔:http://www.keepalived.org/
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼是範式? 簡言之就是,資料庫設計對數據的存儲性能,還有開發人員對數據的操作都有莫大的關係。所以建立科學的,規範的的資料庫是需要滿足一些規範的來優化數據數據存儲方式。在關係型資料庫中這些規範就可以稱為範式。 什麼是三大範式? 第一範式(1NF):強調的是列的原子性,即列不能夠再分成其他幾列。 第二 ...
  • 現在無論是工作中,還是日常的學習中,想要在網上搜一些解決方法發現國外的網址像Google這些網址是訪問不了的,如果想要訪問國外的網址,自己可以去國外國外的伺服器,然後在上面搭建shadowsock 進行翻牆,下麵二個網址就是購買國外伺服器的地址。 1.https://www.vultr.com/ 2 ...
  • SpringCloud學習中遇到的一些bug分享給大家,避免再次踩坑 ...
  • 結果顯示如圖: 要點: 多項式函數:polyld(),詳解見圖書p96頁 ...
  • 詳細講解SpringBoot利用註解創建靜態定時任務,利用介面創建動態定時任務,利用@EnableAsync和@Async創建多線程定時任務 ...
  • 質數,質因數 應該都瞭解,在這裡不過多解釋,直接上代碼: ...
  • 關於IdentityServer4與ocelot博客園裡已經有很多介紹我這裡就不再重覆了。 ocelot與IdentityServer4組合認證博客園裡也有很多,但大多使用ocelot內置的認證,而且大多都是用來認證API的,查找了很多資料也沒看到如何認證oidc,所以這裡的ocelot實際只是作為 ...
  • 代理認證 proxy代理服務被廣泛的使用,為了安全起見,可以在伺服器上增加一層安全認證機制。這裡使用htpasswd建立認證賬號和密碼 1、創建認證賬號和密碼 [root@localhost wj]# htpasswd -c /etc/squid/passwd david New password: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...