LVS類型及工作原理

lvs工作原理

lvs(Linux Virtual Server),工作于layer4,其原理是根據請求報文的目標IP和PORT將其轉發至后端主機集群中的某一提供服務的主機,具體轉發到哪一臺后端主機需要由挑選算法來決定。通俗來說,lvs的功能是通過在內核空間的netfilter上的INPUT鏈上的ipvs實現的,當報文由物理網絡接口進入主機后,ipvs將流經至INPUT鏈即將進入用戶空間的報文強行改變其流向,即PREROUTING-->INPUT-->POSTROUTING。

lvs.png

lvs的架構

  • 調度器:director,dispatcher,balancer

  • RS:Real Server

  • CIP:Client IP

  • VIP:Director Virtual IP

  • DIP:Director IP

  • RIP:Real server IP

lvs type

lvs-nat(MASQUERADE)

lvs-nat2.png

實現過程

當客戶端發出的請求報文經Director的VIP所在的物理網卡流入主機的內核空間時,報文的源IP是CIP,目標IP是VIP。此時,ipvs將強行改變報文的流經方向,即修改報文的目標IP并經DIP所在的物理網卡調度至后端的Real Server,此時,報文的源IP是CIP,而目標IP是RIP。后端RS接收報文并處理后,構建響應報文(源IP是RIP,目標IP是CIP)將經DIP發送至Director,此時,ipvs將修改報文的源IP為VIP,并經VIP所在的物理網卡發送給客戶端。

功能實現的本質

多目標的DNAT(iptables),它通過修改請求報文的目標IP地址(同時可能會修改目標端口實現端口映射) 至挑選出某RS的RIP地址實現轉發。

特性

  • RIP和DIP應該使用私網地址,且RS的網關要指向DIP;

  • 請求和相應報文都要經由director轉發,極高負載的場景中,director可能會成為系統瓶頸;

  • 支持端口映射;

  • RS可以使用任意OS;

  • RIP和DIP必須在同一物理網絡。

lvs-dr(GATEWAY)

lvs-dr2.png

幾個理解要點

  • Director和RS只需要一塊物理網卡;

  • Director和RS連接至同一臺交換機;

  • 每臺RS均配置有VIP,并且配置在lo的別名上,如,lo:0

  • 由于RS均有VIP,在路由器進行廣播時,為了避免都進行相應,需進行設定,有三種方案

    • 靜態綁定:在交換機的配置文件直接進行指定

    • arptables:通過arptables進行設置

    • 修改RS主機內核參數

實現過程

客戶端發出的請求報文經過層層路由,到達服務器所在網絡的路由器(此時報文的源IP是CIP,目標IP是VIP)。與路由器相連的交換機此時要進行廣播獲得Director的mac地址,路由器將報文重新進行封裝(源mac是路由器的mac地址,目標mac是Director的MAC地址將),并將報文轉發至Director。此時,Director亦要進行廣播獲得RS的mac地址,并重新將報文進行封裝(目標mac是RS的mac地址)轉發給交換機,交換機收到報文后根據mac轉發給對應的RS。報文到達RS后由物理網卡流入內核空間,并再次經lo進入用戶空間。報文處理后,構建響應報文(源IP是VIP,目標IP是CIP)經lo到物理網卡轉發至路由器,響應給客戶端。

實現本質

通過請求報文目標mac地址進行轉發。

特性

  • 保證前端路由器將目標IP為VIP的請求發送給director;

  • RIP可以使用私有地址,也可以使用公網地址;

  • RS跟Director必須處于同一物理網絡中;

  • 請求報文經Director調度,但相應報文一定不能經由Director;

  • 不支持端口映射;

  • RS可以是大多數的OS;

  • RS的網關不能指向DIP。

lvs-tun(IPIP)

lvs-tun2.png

實現本質

不修改請求報文的ip首部,而是通過在原有的ip首部之外,再封裝一個ip首部。需要考慮的問題是再封裝后會超出MTU,而再進行報文切片,但是一般情況下請求報文都比較小,不太可能超出MTU。

特性

  • RIP、VIP和DIP全得是公網地址;

  • RS的網關不能指向DIP;

  • 請求報文必須經由Director調度,但相應報文必須不能經由Director;

  • 不支持端口映射;

  • RS的OS必須支持隧道功能。

lvs-fullnat:

lvs-fullnat2.png

實現本質:

Director同時修改請求報文的源地址和目標地址進行轉發。但是在內核中并沒有支持此種模式,若要使用需要到官方網站下載補丁包。

實現過程

Director收到報文后, 將源IP(CIP)修改為(DIP),目標地址(VIP)修改為(RIP),然后經過層層路由,轉發給RIP,。當RS主機收到報文后,回應時,源IP為RIP,目標IP為VIP.Director收到報文后,將源IP修改為自己(VIP), 目標IP修改為CIP。此模型適用與多機房且機房不位于同一地區。

特性

  • VIP是公網地址,RIP和DIP是私網地址,且二者無需在同一網絡中;

  • RS接收到的請求報文的源地址是DIP,因此要響應給DIP;

  • 請求報文和響應報文都必須經由Director;

  • 支持斷就映射機制;

  • RS可以是任意OS。

lvs scheduler

靜態方法:僅根據算法本身進行調度。

  • RR:Round Robin,輪調;

  • WRR:Weighted RR,加權輪調;

  • SH:Source Hash,將來自于同一個ip的請求始終調度至同一RS,實現session保持的機制;

  • DH:Destination Hash,將對同一個目標的請求始終發往同一個RS;

動態方法:根據算法及各RS的當前負載(overhead)狀態進行調度。

  • LC:Least Connection,overhead=Active*256+Inactive;

  • WLC:Weighted LC,overhead=(Active*256+Inactive)/weight;

  • SED:Shortest Expection Delay,overhead=(Active+1)*256/weight

  • NQ:Never Queue,SED算法的改進;

  • LBLC:Locality-Based LC,正向代理情況下的cache server調度;

  • LBLCR:Locality-Based Least-Connection with Replication,帶復制功能的LBLC算法。

ipvsadm工具的使用

管理集群服務

ipvsadm -A|E -t|u|f service-address [-s scheduler]
ipvsadm -D -t|u|f service-address
    service-address(VIP):
        tcp: -t ip:port
        udp: -u ip:port
        fwm: -f mark
    -s scheduler:
        默認為wlc

管理集群服務中的RS

ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
ipvsadm -d -t|u|f service-address -r server-address
    server-address(RIP):
        ip[:port]
    lvs-type:
        -g: gateway,dr
        -i: ipip,tun
        -m: masquerade,nat

查看和清空

ipvsadm -C
ipvsadm -L|l [options]
    -n: numeric,基于數字 格式顯示地址和端口
    -c:connection,顯示ipvs連接;
    --stats:顯示統計數據;
    --rate:顯示速率;
    --exact:顯示精確值。

保存和重載–> /etc/sysconfig/ipvsadm

ipvsadm -R --> ipvsadm--restore
ipvsadm -S --> ipvsadm--save

置零計數器

ipvsadm -Z [-t|u|f service-address]

原創文章,作者:Jeason,如若轉載,請注明出處:http://www.www58058.com/62278

(0)
JeasonJeason
上一篇 2016-12-05 17:04
下一篇 2016-12-05 17:05

相關推薦

  • PHP中引用的詳解(引用計數、寫時拷貝)

    《PHP5中文手冊》內容中"引用的解釋"一文的摘要: 1. PHP中引用的特性 PHP中引用意味著用不同的名字訪問同一個變量內容,引用不是C的指針(C語言中的指針里面存儲的是變量的內容,在內存中存放的地址),是變量的另外一個別名或者映射。注意在 PHP 中,變量名和變量內容是不一樣的,因此同樣的內容可以有不同的名字。最接近的比喻是 Uni…

    Linux干貨 2015-04-10
  • Tomcat詳解

    Tomcat詳解 1、tomcat安裝 tomcat的組件:<Server> <Service> <connector/> <connector/> <Engine> <Host /> <Host> <Context/> … </Host> &lt…

    2017-04-27
  • 走入系統命令

    一、inode節點號         在linux中,每一個文件都有唯一的inode號,inode號也是系統識別的唯一編碼,而文件名僅僅是為了使用者區分辨認, inode (index node )表中包含文件系統所有文件列表 一個節點(索引節點)是在一個表項,包含有關…

    2017-05-25
  • Linux的發行版和它們區別跟聯系

    linux的主要發行版有Debian,Slackware,RedHat三個大系列    Debian 最早由Ian Murdock于1993年創建??梢运闶瞧駷橹梗钭裱璆NU規范的Linux系統。Debian最具特色的是apt-get / dpkg包管理方式,其實Redhat的YUM也是在模仿Debian的APT方式,但在二進制文件發…

    Linux干貨 2017-07-02
  • N25 – week 3 blog

    本周的blog開始使用了代碼語言格式,我原本以為自然的才是最好的,orginal的才是最美的,但是我錯了。。。我發現同學們都在各種markdown,各種排版。我說過我早已過了care這些的年紀,但是我不能脫離群體單獨存在,所以我底下了傲嬌的頭。 本周開始blog標題改為英文,逼格滿滿,麥滿分~ 下面開始第$wk_num周的作業 [root@dhcp-10-1…

    Linux干貨 2016-12-19
  • 馬哥教育網絡班19期+第8周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。     網橋用來連接兩個不同的網絡間的設備;集線器的作用是把接受的信號放大,從另一個端口再穿法出去,說白了就是延長網絡的傳輸距離;   二層交換機工作在數據鏈路層,根據源和目的MAC地址進行數據轉發;三層交換機就是具有部分路由器功能的交換機,三層交換…

    Linux干貨 2016-07-07
欧美性久久久久