LVS初步認識

LVS是什麼?html

LVS是Linux Virtual Server,中文翻譯爲Linux虛擬服務器。前端

那麼,什麼又是VS呢?linux

VS是基於真實服務器集羣來構建的具備可擴展性(scalability)和高可用性(availability)的服務器。這種架構對於終端用戶徹底透明,也就是說用戶同集羣系統交互就好像是在同一臺高性能的虛擬服務器在交互同樣。服務器

下圖可參考:網絡

Image(8)[1]

LVS項目的目標是什麼?架構

官方有說明負載均衡

Build a high-performance and highly available server for Linux using clustering technology, which provides good scalability, reliability and serviceability.ide

使用集羣技術,爲Linux構建一個高性能和高可靠性的服務器,服務器還能夠提供很好的可擴展性、可靠性和可維護性。 性能

LVS以什麼著稱?優化

負載均衡服務器集羣。

爲何選擇LVS?

面對日益增加的業務訪問壓力,網站很容易過載,比方說是電商網站,在雙11、十一還會流量倍增。

咱們通常有兩種方式應對壓力。

一種方式是增長單臺服務器的性能,如升級硬件和優化軟硬件。可是升級過程會很繁瑣,並且升級所須要的成本愈來愈高。甚至直到有一天你都沒法承受。比方說單臺Oracle,在業務逐步增加的狀況下,若是靠升級單臺服務器性能,你總會有一天支付不起服務器和軟件受權費用。

另外一種方式是多服務器方案,比方說構建一個基於服務器集羣的可擴展的網絡服務系統。當業務增加時,咱們能夠簡單地增長服務器到集羣中,即可以輕鬆應付業務壓力。也就是說,構建服務器集羣系統具備更好的可擴展性和價效比(也可理解爲性價比)。

有兩種方式,來構建集羣服務器。

一種方式是,基於DNS的負載集羣。可是DNS構建的集羣很難作到均勻負載和故障迅速切換,也很難處理峯值負載。這是由於DNS負載集羣,是基於A記錄和TTL值的簡單輪循。若是減少TTL值,會增大DNS系統的負載,這種狀況下,DNS負載便會成爲瓶頸,而更大的TTL值,當服務器宕機後,故障恢復的時間會更長。

另外一種方式是,基於調度器的負載集羣。相比較基於DNS的方式,它能夠更好地調度終端的用戶請求到不一樣的服務器,不單能夠以服務器爲粒度,還能夠以每一個鏈接爲粒度來調度。這種負載集羣方式能夠工做在應用層(七層負載)和IP層(四層負載)。相比較七層負載,四層負載具備更好地性能,能夠輕鬆到擴展到25,甚至是100個節點。而七層負載當擴展到5個節點或者更多節點的時候,七層負載會成爲瓶頸。

而IPVS(LVS的內核代碼)就是基於調度器的負載集羣中的四層負載方式的。

IPVS是如何工做的?

IPVS( IP Virtual Server)在Linux內核中實現了傳輸層(transport-layer)的負載均衡,因此被稱做四層交換。IPVS運行在做爲集羣真實服務器前端(The front of)扮演負載器(load balancer)的主機上,經過IPVS,能夠把TCP或UDP請求轉發到真實服務器上,真實服務器上的服務在IPVS看來就是一個獨立的IP地址。

如何查看Linux內核是否支持ipvs?

自Linux內核官方2.6.10版本默認就包括了ipvs的1.2.1版本。能夠經過lsmod命令來查看是否支持ipvs內核:

# lsmod |head -1 && lsmod |grep ip_vs
Module Size Used by
ip_vs_wrr 12695 1
ip_vs_wlc 12519 0
ip_vs 141303 5 ip_vs_wrr,ip_vs_wlc
nf_conntrack 81926 1 ip_vs
libcrc32c 12644 1 ip_vs

其中ip_vs_wrr是指ipvs的輪循調度模塊。全部的ipvs調度策略都是經過Linux內核中的一個獨立的模塊實現的。

參考資料

LVS Introduction - Load Balancing Server Cluster
http://www.linuxvirtualserver.org/whatis.html

Linux Virtual Server Tutorial
http://www.ultramonkey.org/papers/lvs_tutorial/html/

相關文章
相關標籤/搜索