lvs–各類型的原理及實現—(原理篇)

前言:

   LVS即是linux虛擬服務器,是一個虛擬的服務器集群系統,目的是使用集群技術和linux操作系統實現一個高性能、高可用的服務器。采用IP負載均衡技術和基于內容請求分發技術,將請求負載均衡地轉移到不同的服務器上執行,從而將一組服務器構成一個高性能、高可用的虛擬服務器。此篇的內容只包含兩種較為常用的LVS技術,分別是LVS-NAT和LVS-DR。

一、Linux Cluster類型:

   Linux集群的三種類型分別是負載均衡集群,高可用集群和高性能集群,以下分別對這三種集群進行講解;

   

   LB:Load Balancing,負載均衡集群;該集群用于實現將同一種應用的大量請求分散到多臺主機;

   HA:High Availablity,高可用;當某一主機出現故障時,從服務器能夠取而代之,為服務提供冗余性;

   HP:High Performance,高性能;組合多臺計算機,可以將一個很復雜、計算量很大的問題分散到多臺主機,通過多臺主機聯合計算,減少計算的時間;

二、負載均衡集群的調度方式:

    LB集群的簡圖:

    blob.png

   lvs是基于傳輸層(目標IP和目標端口)分發請求報文,下圖是IPVS的工作原理,IPVS是工作于內核空間的netfiliter的INPUT鉤子之上的框架;

   下圖是DNAT的轉發機制圖:

 blob.png

三、LVS集群的類型詳解:

  (一)LVS-NAT

     lvs-nat是一個多目標的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的RIP和POST實現轉發:

     客戶端的請求報文發送到DIRECTOR的vip接口,此時源IP是CIP,目標IP是VIP,由于IPVS是工作于INPUT鏈的,當發現請求報文是請求某一集群服務需要向后轉發時,IPVS強行改變發送流程,通過FORWARDING鏈將報文發送至POSTROUTING鏈,經由算法算出報文發往到那一臺后端服務器,報文進入到后端服務器時,此時源IP地址是CIP,目標IP地址是RIP,后端服務器返回報文時,必須將將網關指向DIRECTOR的DIP,返回報文的源地址是RIP,目標地址是CIP,經過DIRECTOR后,源IP是VIP,目標IP是CIP,這個過程就是LVS-NAT的工作原理。

blob.png

LVS-NAT的特性:   

      多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某跳出的RS的RIP的DPORT實現轉發

           (1)RIP和DIP必須在同一個IP網絡,且應該使用私網地址;RS的網關指向DIP;

           (2)請求報文和響應報文必須經由Director轉發;Director易于成為系統瓶頸;

           (3)支持端口映射,可修改請求報文的目標PORT;

           (4)VS必須是linux系統,RS可以是任意系統;

(二)LVS-DR

      LVS-DR是直接路由的方式,通過將請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,目標MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變

     下圖是LVS-DR的工作原理圖:

blob.png

     客戶端的請求報文通過路由器、交換機將請求報文發送到DIRECTOR上,DIRECTOR通過算法將請求報文發往某一臺REAL SERVER上,REAL SERVER的回應報文不再經由DIRECTOR,而是將報文直接返回到CLient上,此時回應報文的源地址為VIP,目標地址是CIP。DIRECTOR、兩臺REAL SERVER的IP地址都需要配置VIP地址,由于三臺主機使用同一個VIP地址會發生地址沖突,所以需要將VIP地址做隱藏,DIRECTOR的VIP地址需要配置在DIRECTOR的網卡別名上,由于地址不屬于網卡而是屬于內核,所以無論將VIP配置在REAL SERVER的哪個網卡上,內核都會知道IP地址,從而將IP地址通告給路由器。首先需要將REAL SERVER的VIP地址配置在LO網卡的別名上,為之后隱藏VIP地址做準備。同時需要調整內核參數arp_announce和arp_ignore,從而達到隱藏VIP地址的目的??蛻舳舜藭r只能將請求報文直接發往DIRECTOR,DIRECTOR對請求報文重新封裝MAC,通過MAC將報文發往其中一臺REAL SERVER,REAL SERVER的回應報文不經由DIRECTOR,而是直接發送到客戶端。

  LVS-DR的特性:

    

  Director和各RS都得配置使用VIP;

             (1)確保前端路由器將目標IP為VIP的請求報文發往DIrector:

                    (a)在前端網關做靜態綁定;

                    (b)在RS上使用arptables;

                    (c)在RS上修改內核參數以限制ARP通告及應答級別;

                           arp_announce

                           arp_ignore

             (2)RS的RIP可以使用私網地址,也可以是公網地址;RIP與DIP在同一網絡;RIP的網關不能指向DIP,以確保響應報文不會經由Director;

             (3)RS跟Director要在同一個物理網絡;

             (4)請求報文要經由Director,但響應不能經由Director,而是由RS直接發往Client;

             (5)不支持端口映射;

    

四、IPVS的調度算法

     根據其調度時是否考慮各RS當前的負載狀態,可分為靜態方法和動態方法兩種,靜態方法是僅根據算法本身進行調度,動態方法主要根據每RS當前的負載狀態及調度算法進行調度。

     靜態方法:

          (1)RR:roundrobin,輪詢;               

          (2)WRR:weighted RR,加權輪詢;

          (3)SH:source hashing,源IP地址哈希,用于實現session sticy;

          (4)DH:destination hashing,目標IP地址哈希,將發往同一個目標地址的請求始終轉發至第一次挑中的RS;

      動態方法:

          (1)LC:least connections:最少連接

          (2)WLC:weight LC 加權最少連接

          (3)SED:shortest expection delay

          (4)NQ:never queue

          (5)LBLC:locality-based LC,動態DH算法

          (6)LBLCR:LBLC with replication,帶復制功能的LBLC;

   

 

原創文章,作者:因為有你,如若轉載,請注明出處:http://www.www58058.com/54645

(0)
因為有你因為有你
上一篇 2016-10-27 15:18
下一篇 2016-10-27 16:10

相關推薦

  • nginx實現代理服務器功能

    nginx實現代理服務器功能1: #環境: 172.16.253.223 #CentOS7.3,安裝nginx作為代理服務器 172.16.253.224 #CentOS7.3,安裝httpd作為服務器 172.16.253.188 #CentOS6.8,咱莊httpd作為圖片服務器 #223主機: yum install nginx vim /etc/ng…

    Linux干貨 2017-06-28
  • 文件系統磁盤管理上

    磁盤:主要作用用于存儲數據 早期一塊硬盤共有256個盤面,每個盤面有1024個磁道,每個磁道有63個扇區,每個扇區的大小是512byte 硬盤的命名: 早期IDE硬盤標記為hd scsi、usb、sas標記為sd 引用設備的方式 設備文件名 標卷 UUID 硬盤分區: 第0個磁道的第0個扇區存放的是磁盤的信息 MBR:Master Boot Record 主…

    Linux干貨 2016-08-30
  • 08.04 筆記總結

    1.ps axo  user,ruser,group,rgroup,cmd  //  ruser  表示程序發起的用戶,一般是指系統當前的用戶  //  user  表示程序的所有者。在大數情況下,兩個用戶都是系統當前的用戶, 之后當程序被賦予suid的時候,可能user會發生變化。 2.…

    Linux干貨 2016-08-08
  • M20 – 1- 第二周博客(1):幫助手冊查詢的使用

    Linux系統中存在諸多的命令,而這些命令分為內鍵命令和外部命令。如何查詢命令屬于內部還是外部呢。前一篇博客已經介紹type命令,type命令可以區分命令屬于內部還是外部,下面舉個例子: 為什么這一期博客還重復講如何區分內部與外部命令呢,因為在man手冊查詢中,內部命令并不是使用man查詢幫助手冊,僅僅使用與外部命令,那內鍵命令如何查詢呢,接下來要講的就是h…

    Linux干貨 2016-08-02
  • 第一天參與馬哥linux運維面授

    很高興認識大家,介紹一下,我叫袁亞瓊,來自美麗的云南。我是一個隨和而又不隨性95年女子,喜歡運動,擅長田徑。學食品檢測的,上學期間沒怎么接觸計算機,現在又來學專業計算機,內心還是有幾絲恐慌,希望在今后的學習路上得到各位學友和老師的指導和幫助。等工作穩定,可以去云南放松一下,云南是個吃喝玩樂的好地方,同時也是個感受慢節奏生活的佳地。云南歡迎您哦! 選擇學習li…

    Linux干貨 2018-03-26
  • 第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 ~]# who | cut -d' ' -f 1 |sort |uniq -c 2、取出最后登錄到當前系統的用戶的相關信息。 ~]# last | head -1 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 ~]# cat…

    Linux干貨 2016-12-14

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-10-30 20:49

    文章內容上比較完整地,但是整體排版是不是太亂了點?建議多看看別人寫的博客,來提升自己的寫作能力哦。

欧美性久久久久