集羣基礎知識

 

1.共享存儲,前端

      在web1和web2之間有一個NFS服務器,正常web1掛載讀寫,當web1宕機時,web2掛載讀寫。但NFS是文件服務器,讓2臺web服務器讀寫的效率很低。文件級別共享。這種存儲架構叫NAS。
      DAS(Direct Attached Storage—直接鏈接存儲)是指將存儲設備經過SCSI接口或光纖通道直接鏈接到一臺計算機上。
     NAS存儲是(Network Attached Storage)的簡稱,中文稱爲網絡附加存儲。NAS存儲做用相似於一個專用的文件服務器。NAS技術是一種將分佈、獨立的數據整合爲大型、集中化管理的數據中心,以便於對不一樣主機和應用服務器進行訪問的技術。
     SAN是Storage Area Network的縮寫,即「存儲區域網絡」。SAN專一於企業級存儲的特有問題。當前企業存儲方案所遇到的兩個問題是:數據與應用系統緊密結合所產生的結構性限制,以及目前小型計算機系統接口(SCSI)標準的限制。SAN中,存儲設備經過專用交換機到一羣計算機上。在該網絡中提供了多主機鏈接,容許任何服務器鏈接到任何存儲陣列,讓多主機訪問存儲器和主機間互相訪問同樣方便,這樣無論數據置放在那裏,服務器均可直接存取所需的數據。同時,隨着存儲容量的爆炸性增加,SAN也容許企業獨立地增長它們的存儲容量。 web

 

三種存儲解決方案對比算法

wKiom1MOjzPzvApIAAGMKJjE1Hk635.jpg

 

2.LVS:Linux Virtual Server Linux 虛擬服務器,架構的前端是一臺director/load balancer負載均衡器負責轉發, 後端是好幾臺服務器realserver提供服務,director根據Linux內核的補丁代碼ipvs調度後端realserver任務。後端

       LVS相似iptables/netfilter兩段式管理,管理工具ipvsadm實際執行的內核補丁代碼ipvs,ipvadm管理後臺每一個realserver的ip地址和提供的服務,director空間分爲用戶空間和內核空間,用戶請求通過網卡進入到內核空間的TCP/IP棧,要通過路由器進行路由,集羣服務的定義在ipvs的代碼裏,ipvs代碼識別用戶請求是集羣服務的話,即便地址指向director本身,也不會轉發到本身的用戶空間,而是向外轉發到對應的realserver ip地址。ipvs只是框架,自己不會轉發任何請求,依賴ipvsadm定義的集羣服務才能轉發。不是ipvs服務的數據包直接丟棄。緩存

 

3.LVS的用途
   1.For higher throughout 更高的吞吐率,大併發
   2.For redundancy 冗餘,提供部分高可用,但不徹底是高可用
   3.For adaptability 更靈活適應性,簡單地增長或縮減服務器數量就能適應規模的擴張和縮減。服務器

   4.就是一個四層交換機/四層路由器。根據用戶請求的ip address+port進行轉發。port是在OSI模型的第四層傳輸層。轉發的基礎/標準是用戶定義的轉發調度方法。網絡

 

4.LVS專用的地址
  1.Virtual IP(VIP) address: 直接向用戶提供服務的,調度器的外網卡地址,
  2.Real IP (RIP) address:後端服務器網卡真實IP地址
  3.Director's IP (DIP) address: 調度器鏈接realserveer的內網卡地址
  4.Client computer's IP (CIP) address:客戶端地址架構

 

5. 3種LVS架構對比併發

類型負載均衡

屬性

LVS-NAT(最簡單)

網絡地址轉換

LVS-DR(最經常使用)

直接路由

LVS-TUN

IP隧道

realserver和director是否可在同一網絡中

在同一子網中

在同一物理網絡中       (基於MAC地址轉發)

可在不一樣的物理網絡中,也能夠在不一樣的地域

RIP是私有地址仍是公網地址

通常來講是私有地址

公網地址

必定不是私有地址

director是否同時處理入站和出站數據

同時處理入站和出站數據

只處理入站請求

只處理入站請求

realserver的網關是否指向DIP

realserver的網關指向DIP

realserver的網關不能指向DIP

realserver的網關不能指向DIP

是否支持端口映射

支持端口映射

不支持端口映射

不支持端口映射

realserver是否能夠是任意操做系統

能夠是任意的OS

能夠是大多數的操做系統(OS支持一個網卡配置多個IP,隔離realserver廣播)

僅但是那些支持IP隧道協議的OS

其餘方面

director很容易成爲系統瓶頸

性能優於LVS-NAT

 

6. 3種LVS 架構圖

wKioL1MOkyiAPReeAANGK15gTEc972.jpg

圖一:LVS-NAT 模型

 玩笑1:NAT就像中國大媽CIP好不容易出國,在外國專賣店VIP專挑奢侈品買LV包,海關Director報高檔稅,結果回家一看,全都made in China.

wKioL1MOlYnAwc63AARlxPDoLzo292.jpg

圖二:LVS-DR模型

玩笑2:中國大媽CIP跑到外國買達芬奇傢俱,老外忽悠大媽說原產地絕對是佛羅倫薩VIP,結果原產地是東莞DIP,在海關作個地址假裝,直接從東莞發貨。

wKioL1MOmGaggXGpAATxDlnf36c654.jpg

圖三:LVS-TUN 模型

玩笑3:中國大媽總代CIP跑到新西蘭團購VIP全國的奶粉,用IPTUNNEL集裝箱滾裝船往回運,出了海關Director再用快遞ROUTER分發到全國各地。

 

7.Director的調度算法 LVS Scheduling Methods

Fixed Scheduling固定調度:Director在選取下一個realserver時,不會考慮那個realserver自己有多少個鏈接個數和鏈接狀態,僅僅按調度算法斷定和分配。

     1.輪叫調度(Round Robin(簡稱rr)

    調度器經過「輪叫」調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而無論服務器上實際的鏈接數和系統負載。

     2.加權輪叫(Weighted Round Robin)(簡稱wrr)

   調度器經過「加權輪叫」調度算法根據真實服務器的不一樣處理能力來調度訪問請求。這樣能夠保證處理能力強的服務器能處理更多的訪問流量。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。

    計算負載overhead’ =(活躍個數 * 256+非活躍個數) / 權重,誰的負載小誰優先。

    3.目標地址散列(Destination Hashing(DH)

「目標地址散列」調度算法根據請求的目標IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。對同一個服務器IP的訪問原路返回,有助於提升Squid代理的緩存命中率。

    4.源地址散列(Source Hashing(SH)

  「源地址散列」調度算法根據請求的源IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。在一個網絡中有多個網絡出口(防火牆或路由器),來自於同一個客戶端IP的訪問原路返回,有助於監控/防火牆得到狀態值。

       Dynamic Scheduling動態調度:相反。Director在選取下一個realserver時,考慮那個realserver自己有多少個活躍鏈接個數和鏈接狀態Established,甚至多少個非活躍的鏈接(發起過鏈接但如今非Established),以此做爲標準按調度算法斷定和分配,越空閒越優先。

     1.最少連接(Least Connections(LC)

調度器經過「最少鏈接」調度算法動態地將網絡請求調度到已創建的連接數最少的服務器上。若是集羣系統的真實服務器具備相近的系統性能,採用「最小鏈接」調度算法能夠較好地均衡負載。

    每當新鏈接進入,Director查看每一個realserver的活躍鏈接數和非活躍鏈接數,

    計算負載overhead= 活躍個數 * 256+非活躍個數。

    2.加權最少連接(Weighted Least Connections(WLC)

    在集羣系統中的服務器性能差別較大的狀況下,調度器採用「加權最少連接」調度算法優化負載均衡性能,具備較高權值的服務器將承受較大比例的活動鏈接負載。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。

    3.基於局部性的最少連接(Locality-Based Least Connections(LBLC)

   「基於局部性的最少連接」調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工做負載,則用「最少連接」的原則選出一個可用的服務器,將請求發送到該服務器。

     4.帶複製的基於局部性最少連接(Locality-Based Least Connections with Replication(LBLCR)

「帶複製的基於局部性最少連接」調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。它與LBLC算法的不一樣之處是LBLCR要維護從一個目標 IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按「最小鏈接」原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按「最小鏈接」原則從這個集羣中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以下降複製的程度。

按「最小鏈接」原則選中的緩存服務器沒有用戶請求的內容就去查找臨近的兄弟、父子服務器去複製來內容,依靠ICP (Internet Cache Protocol) Internet緩存協議。

     5. 最短的指望的延遲(Shortest Expected Delay Scheduling SED(SED)

     基於wlc算法。這個必須舉例來講了

       ABC三臺機器分別權重123 ,鏈接數也分別是123。那麼若是使用WLC算法的話一個新請求進入時它可能會分給ABC中的任意一個。使用sed算法後會進行這樣一個運算

A(1+1)/1

B(1+2)/2

C(1+3)/3

根據運算結果,把鏈接交給

    再也不考慮非活動鏈接個數,負載overhead = ( 當前活躍鏈接數 + 1 ) *256 / 權重,當初始負載值爲零,選擇權重值大的服務器作響應,但當前活躍鏈接數相同時,(0+1/3和(0+1/1 就不一致了。誰的負載小誰優先。但權重設置差異過大會引發全部鏈接指向權重大的本機愈來愈忙,權重小的反而愈來愈空。

     6.最少隊列調度(Never Queue Scheduling NQ(NQ)

   無需隊列。若是有臺 realserver的鏈接數=0就直接分配過去,不須要在進行sed運算

相關文章
相關標籤/搜索