天天看點

LVS(DR)+Keepalive負載均衡安裝部署

LVS中文站點 http://zh.linuxvirtualserver.org/

ipvs和keepalived的差別:

一、 LVS簡介

LVS: Linux Virtual Server的縮寫,意思是Linux虛拟伺服器,是一個虛拟的伺服器叢集系統。

LVS是一個開源的軟體,由畢業于國防科技大學的章文嵩博士于1998年5月創立,可以實作LINUX平台下的簡單負載均衡

宗旨:

  使用叢集技術和Linux作業系統實作一個高性能、高可用的伺服器.

  很好的可伸縮性(Scalability)

  很好的可靠性(Reliability)

  很好的可管理性(Manageability)

二、技術原理:

LVS由前端的負載均衡器(Load Balancer,LB)和後端的真實伺服器(Real Server,RS)群組成。RS間可通過區域網路或廣域網連接配接。LVS的這種結構對使用者是透明的,使用者隻能看見一台作為LB的虛拟伺服器(Virtual Server),而看不到提供服務的RS群。

當使用者的請求發往虛拟伺服器,LB根據設定的包轉發政策和負載均衡排程算法将使用者請求轉發給RS。RS再将使用者請求結果傳回給使用者。同請求包一樣,應答包的傳回方式也與包轉發政策有關。

LVS叢集采用“IP負載均衡技術”和“基于内容請求分發技術”。排程器具有很好的吞吐率,将請求均衡地轉移到不同的伺服器上執行,且排程器自動屏蔽掉伺服器的故障,進而将一組伺服器構成一個高性能的、高可用的虛拟伺服器。整個伺服器叢集的結構對客戶是透明的,而且無需修改用戶端和伺服器端的程式。為此,在設計時需要考慮系統的透明性、可伸縮性、高可用性和易管理性。 

LVS(DR)+Keepalive負載均衡安裝部署

LVS叢集采用三層結構,其主要組成部分為:

三、LVS叢集的特點

1、IP負載均衡技術

負載均衡技術有很多實作方案,有基于DNS域名輪流解析的方法、有基于用戶端排程通路的方法、有基于應用層系統負載的排程方法,還有基于IP位址的排程方法,在這些負載排程算法中,執行效率最高的是IP負載均衡技術。

LVS的IP負載均衡技術是通過IPVS子產品來實作的,IPVS是LVS叢集系統的核心軟體,它的主要作用是:

安裝在Director Server上,同時在Director Server上虛拟出一個IP位址,使用者必須通過這個虛拟的IP位址通路服務。這個虛拟IP一般稱為LVS的VIP,即Virtual IP。通路的請求首先經過VIP到達負載排程器,然後由負載排程器從Real Server清單中選取一個服務節點響應使用者的請求。

當使用者的請求到達負載排程器後,排程器如何将請求發送到提供服務的Real Server節點,而Real Server節點如何傳回資料給使用者,是IPVS實作的重點技術,IPVS實作負載均衡機制有三種,分别是NAT、TUN和DR,詳述如下

 a) VS/NAT: 即(Virtual Server via Network Address Translation)

  通過NAT網絡位址轉換技術實作虛拟伺服器,當使用者請求到達排程器時,排程器将請求封包的目标位址(即虛拟IP位址)改寫成標明的Real Server位址,同時封包的目标端口也改成標明的Real Server的相應端口,最後将封包請求發送到標明的Real Server。在伺服器端得到資料後,Real Server傳回資料給使用者時,需要再次經過負載排程器将封包的源位址和源端口改成虛拟IP位址和相應端口,然後把資料發送給使用者,完成整個負載排程過程。

   可以看出,在NAT方式下,使用者請求和響應封包都必須經過Director Server位址重寫,當使用者請求越來越多時,排程器的處理能力将稱為瓶頸。

 b)VS/TUN :即(Virtual Server via IP Tunneling)

   通過IP隧道技術實作虛拟伺服器。它的連接配接排程和管理與VS/NAT方式一樣,隻是它的封包轉發方法不同,VS/TUN方式中,排程器采用IP隧道技術将使用者請求轉發到某個Real Server,而這個Real Server将直接響應使用者的請求,不再經過前端排程器,此外,對Real Server的地域位置沒有要求,可以和Director Server位于同一個網段,也可以是獨立的一個網絡。是以,在TUN方式中,排程器将隻處理使用者的封包請求,叢集系統的吞吐量大大提高。

 c)VS/DR: 即(Virtual Server via Direct Routing) 

  通過直接路由技術實作虛拟伺服器。它的連接配接排程和管理與VS/NAT和VS/TUN中的一樣,但它的封包轉發方法又有不同,VS/DR通過改寫請求封包的MAC位址,将請求發送到Real Server,而Real Server将響應直接傳回給客戶,免去了VS/TUN中的IP隧道開銷。

  這種方式是三種負載排程機制中性能最高最好的,但是必須要求Director Server與Real Server都有一塊網卡連在同一實體網段上。

2、負載排程算法

  上面我們談到,負載排程器是根據各個伺服器的負載情況,動态地選擇一台Real Server響應使用者請求,那麼動态選擇是如何實作呢,其實也就是我們這裡要說的負載排程算法,根據不同的網絡服務需求和伺服器配置,IPVS實作了如下八種負載排程算法,這裡我們詳細講述最常用的四種排程算法,剩餘的四種排程算法請參考其它資料。

 a)RR 輪詢排程(Round Robin)

   “輪詢”排程也叫1:1排程,排程器通過“輪詢”排程算法将外部使用者請求按順序1:1的配置設定到叢集中的每個Real Server上,這種算法平等地對待每一台Real Server,而不管伺服器上實際的負載狀況和連接配接狀态。 

 b)WRR 權重輪詢排程(Weighted Round Robin) 

   “權重輪詢”排程算法是根據Real Server的不同處理能力來排程通路請求。可以對每台Real Server設定不同的排程權值,對于性能相對較好的Real Server可以設定較高的權值,而對于處理能力較弱的Real Server,可以設定較低的權值,這樣保證了處理能力強的伺服器處理更多的通路流量。充分合理的利用了伺服器資源。同時,排程器還可以自動查詢Real Server的負載情況,并動态地調整其權值。 

 c)LC 最少連結排程(Least Connections) 

   “最少連接配接”排程算法動态地将網絡請求排程到已建立的連結數最少的伺服器上。如果叢集系統的真實伺服器具有相近的系統性能,采用“最小連接配接”排程算法可以較好地均衡負載。 

 d)WLC 權重最少連結排程(Weighted Least Connections) 

   “權重最少連結排程”是“最少連接配接排程”的超集,每個服務節點可以用相應的權值表示其處理能力,而系統管理者可以動态的設定相應的權值,預設權值為1,權重最小連接配接排程在配置設定新連接配接請求時盡可能使服務節點的已建立連接配接數和其權值成正比。

 e)WRR 權重輪詢 (Weighted round-robin):給每台Real Server配置設定一個權重/位列,權重越大,分到的請求數越多。

 f)DH 目标散列 (Destination hashing):來自于同一個IP位址的請求都被重定向到同一台Real Server上(保證目标位址不變)

 g)SH 源位址散列(Source hashing): Director必須確定響應的資料包必須通過請求資料包所經過的路由器或者防火牆(保證源位址不變)

 h)SED 最短期望延遲 (Short餓死他 Expected Delay): 不在考慮非活動連接配接數

四、安裝部署

1、基礎環境

Linux核心大于2.6 版本的,都預設支援LVS功能

可以通過如下指令檢查kernel是否已經支援LVS的ipvs子產品

如果有類似上面的輸出,表明系統核心已經預設支援了IPVS子產品。接着就可以安裝IPVS管理軟體了

2、在Director Serve上源碼安裝IPVS管理軟體

下載下傳ipvs管理軟體ipvsadm http://www.linuxvirtualserver.org/software/ipvs.html

ipvsadm 常用文法及格式:

3、安裝keepalived

主配置檔案詳細說明 keepalived.conf

  在配置Keepalived.conf時,需要特别注意配置檔案的文法格式,因為Keepalived在啟動時并不檢測配置檔案的正确性,即使沒有配置檔案,Keepalived也照樣能啟動起來,因而配置檔案一定要正确。

在預設情況下,Keepalived在啟動時會查找/etc/Keepalived/Keepalived.conf配置檔案,如果你的配置檔案放在了其它路徑下,可以通過“Keepalived  -f”參數指定你所在的配置檔案路徑即可。

Keepalived.conf配置完畢後,将此檔案拷貝到備用Director Server對應的路徑下,然後做兩個簡單的修改即可:

配置 Real server

最後,還要配置叢集的Real server節點,以達到與Director Server互相廣播通信并忽略arp的目的。

# 下面是在用戶端realserver是執行的腳步 cat lvs_real.sh,主要是添加虛拟ip,和抑制 arp 廣播,需要在每個Real Server節點上執行

LVS的配置

繼續閱讀