Keepalived 使用指南

Keepalived 使用指南

1.    簡介

負載均衡是虛擬服務的一種好的處理方案。當設計一種負載均衡的拓撲時必定要考慮到以下兩點:html

真實服務器的可用性使用健康檢測機制。linux

負載均衡器的可用性使用故障轉移協議。web

負載均衡真實服務,提供了一個全局的高可用虛擬服務。爲增長負載均衡服務的可用性,須要檢測每一個真實服務器節點的狀態。這個問題能夠經過使用健康檢測框架來操做一個服務器池來解決。服務器

另外一方面,當使用一個負載均衡器director,對虛擬服務引入了一個故障節點。因負載均衡器的高可用性必須被處理,使用專用的路由協議對director的故障轉移/虛擬化。多線程

Keepalived解決這兩個問題:一方面,增長一個強壯和健壯的監控檢測框架;另外一方面,實現了一個熱待機協議。這兩個框架能夠處理lvs框架來操做lvs真實服務器池,對lvs真實服務池的操做能夠經過增長或者刪除基於健康檢測的真實服務器來完成。架構

2. 術語

LVS 表明了linux virtual Server. LVS 是linux 內核內嵌的一個負載均衡工具。更多信息參考工程主頁:http://www.linux-vs.org. LVS做爲一個網橋(經過nat)來負載均衡TCP/UDP流。LVS路由器組件以下:負載均衡

  • WAN 接口。能夠被全部用戶訪問到的以太網接口控制器。
  • LAN接口。管理全部負載均衡服務器的以太網接口控制器。
  • linux內核。內核內嵌了最新的LVS,而且看成路由器的操做系統。

關鍵詞:框架

LVS組件:異步

VIP: 能夠被全部用戶訪問的虛擬IP,全部的用戶經過這個IP訪問服務器。工具

真實服務器:應用服務部署在真實的服務器上,處理用戶的請求。上圖中的web server1 和webserver2 便是。

服務器池:一組真實服務器。

虛擬服務器:被應用訪問的服務器池地址。

虛擬服務: 關聯到VIP的TCP/UDP服務。

VRRP 組件:

VRRP:虛擬路由器冗餘協議是一種選擇協議,它能夠把一個虛擬路由器的責任動態分配到局域網上的 VRRP 路由器中的一臺。

VRRP實例:a thread manipulating vrrpv2 specific set of ip addresses。

一個VRRP實例能夠做爲一個或者多個VRRP實例的備份。

IP地址擁有者:用戶IP地址做爲真實接口地址的VRRP實例。

主機狀態:一種VRRP實例狀態,當VRRP實例處於這種狀態就能夠認爲關聯此實例的IP地址負責處理髮送的請求。

備機狀態:一種VRRP實例狀態,噹噹前的處於主機狀態的VRRP實例宕機時,處於該狀態的VRRP實例有能力處理髮送來的請求。

真實負載均衡器:運行一個或者多個VRRP實例的一個LVS director。

虛擬負載均衡器:一組真實負載均衡器。

被同步實例:一個將要被同步的VRRP實例,被監控的VRRP實例。

通知:發送給處於一組處於主機狀態的VRRP實例的一個簡單VRRPv2包的名稱。

3. 軟件架構

3.1 全局和局部

 

軟件架構涉及4個linux 內核組件:

  1. LVS核心框架:Kernel2.2使用setsockopt,kernel 2.4使用setsockopt netfilter。
  2. IPCHAINS 框架:kernel 2.2 LVS NAT架構使用內部的IPCHAINS 包裝器來發送MASQ鏈到內核。這個僅僅在linux 2.2內核上運行。在kernel 2.4 ipvs代碼使用netfilter call來處理特定的NAT規則。
  3. Netlink接口:對於熱待機協議(VRRP),咱們使用netlink接口來設置/去除VRRP的VIP.
  4. 組播:對於VRRP部分,通告被髮送到組播組。

3.2軟件設計

下面將闡述keepalived軟件的內部實現組件。Keepalived使用一個基於中央I/O複用器的多線程框架。2個主要的組件以下:

健康檢測工做線程:每一個健康檢測被註冊到全局的調度框架。這些工做線程在keepalived 健康檢測框架下執行健康檢測。健康檢測框架當前執行3個檢測:

         TCP檢測:應用第三層檢測。

         HTTP GET:檢測一個遠程http服務器的html 內容完整性。

         SSL GET:檢測一個遠程SSL服務器的html內容完整性。

         混合檢測:應用用戶定義的完整性檢測。

 

VRRP 包分發器:解服用特定I/O來處理VRRP實例的響應。

這兩個主要組件使用到下面的底層primitives

         SMTP通知:一個SMTP包裝器使用異步數據流處理。這個primitive使得keepalived能夠發送郵件通知。

         IPVS框架:LVS NAT,DR&TUN等。

         Netlink:提供VRRP VIP操做。

         組播:使用多播來發送VRRP通告。

         IPCHAINS框架,如上所述。

SYSLOG: 全部後臺通知消息使用syslog後臺來記錄。

 

4.    健康檢測框架

如上《略》

爲了director故障轉移,keepalived實現了VRRP協議。這個協議能夠這樣簡潔的描述爲:

虛擬路由器冗餘協議(VRRP)是一種選擇協議,它能夠把一個虛擬路由器的責任動態分配到局域網上的 VRRP 路由器中的一臺。控制虛擬路由器 IP 地址的 VRRP 路由器稱爲主路由器,它負責轉發數據包到這些虛擬 IP 地址。一旦主路由器不可用,這種選擇過程就提供了動態的故障轉移機制,這就容許虛擬路由器的 IP 地址能夠做爲終端主機的默認第一跳路由器。使用 VRRP 的好處是有更高的默認路徑的可用性而無需在每一個終端主機上配置動態路由路由發現協議。 VRRP 包封裝在 IP 包中發送。[ 引用自rfc2338]。

 

5.    Keepalived 配置語法

配置文件分爲三個部分:

5.1     全局定義的語法

5.2     虛擬服務器定義語法

 

5.3     VRRP實例定義語法

 

相關文章
相關標籤/搜索