LVS詳解

LVS詳解


LVS(Linux Virtual Server),意即Linux虛擬服務器,是一個虛擬的服務器集群系統。本項目在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。

  • LVS 是一個工作在四層的負載均衡器,實現和 iptables/netfilter 類似,工作在內核空間的 TCP/IP 協議棧上,LVS 工作在 INPUT Hook Funtion 上,并在 INPUT 設置附加規則,一旦客戶端請求的是集群服務,LVS 會強行修改請求報文,將報文發往 POSTROUTING,轉發至后端的主機。

LVS的組成:

ipvsadm:管理集群服務的命令行工具,工作于用戶空間

ipvs:為lvs提供服務的內核模塊,工作于內核空間INPUT鏈上,所以lvs與iptables在INPUT鏈不能同時使用。

在linux內核2.4.23之前的內核中模塊默認是不存在的,需要自己手動打補丁,然后把此模塊編譯進內核才可以正常使用。

目標

  • 使用集群技術和Linux操作系統實現一個高性能、高可用的服務器。

  • 很好的可伸縮性

  • 很好的可靠性

  • 很好的可管理性

集群分類:

  • 負載均衡集群LB: Load balancing clusters

    通過一個或者多個前端負載均衡器,將工作負載分發到后端的一組服務器上,從而達到整個系統的高性能和高可用性。

  • 高可用性集群HA: High-availability (HA) clusters

    一般指當集群中某個節點失效時,其上的任務會自動轉移到其他正常的節點上。

  • 高性能計算集群HP: High-performance (HPC) clusters

    將計算任務分配到集群的不同計算節點而提高計算能力,因而主要應用在科學計算領域。

集群常用術語:

Director:復制調度集群的主機  
 VIP:Virtual IP,向外提供服務的IP  
 RIP:real IP,內部真實提供服務的主機IP  
 DIP:向內部的IP通信的IP,在Director主機上  
 CIP:客戶端IP

LVS工作模型:

  • LVS-NAT:修改請求報文的目標IP

    地址轉換類型,主要是做目標地址轉換,類似于iptables的DNAT
     LVS 修改請求報文的目標地址為 RIP,轉發至后端的 RealServer,并修改后端響應報文的源地址為 VIP,響應至客戶端。

    LVS詳解

 特性:

  1. 集群節點跟 Director 必須在同一個 IP 網絡中,并且其網關需要指向DIP的地址

  2. RIP地址通常為私有地址,僅用于各個集節點之間通信

  3. Director位于client和Real Server之間,處理進出所有報文,大型應用易成為瓶頸。

  4. Real Server必須將網關指向DIP

  5. 支持端口映射

.

  • LVS-DR:操縱封裝新的MAC地址;默認類型

    LVS詳解

    直接路由,為請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,目標MAC是某挑選出的RS的RIP所在接口的MAC地址;
     每個Real Server上都有兩個IP:VIP和RIP,VIP是隱藏的,不會接收請求,用來做請求響應的源IP
     Director上只需要一個網卡利用別名配置兩個IP:VIP和DIP

 特性:

  1. 保證前端路由器將目標地址為 VIP 的報文通過 ARP 解析后送往 Director。

    1. 靜態綁定:在前端路由將 VIP 對應的目標 MAC 地址靜態配置為Director VIP 接口的 MAC 地址。

    2. arptables:在各 Realserver 上,通過 arptables 規則拒絕其響應對 VIP 的 ARP 廣播請求

    3. 修改內核參數:在 Realserver 上修改內核參數,限制arp通告及應答級別

  2. 各RIP 必須與 DIP 在同一個物理網絡中

  3. RS 的 RIP 可以使用私有地址,也可以使用公網地址,Realserver 不能將網關指向 DIP

  4. Director 僅負責處理入站請求,響應報文由 Realserver 直接發往客戶端

  5. 不支持端口映射

.

  • LVS-TUN:在原請求IP報文之外新加一個IP首部;

    LVS詳解

    轉發方式:在原IP報文之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標RS;
     Real Server接收到請求以后,先拆除第一層封裝后拆除第二層封裝,然后把響應數據直接傳輸給Client

 特性:

  1. 集群節點可以跨越Internet

  2. Director的VIP和RIP必須為公網IP

  3. Director僅處理入站請求,響應報文則由Real Server直接發往客戶端

  4. Real Server的網關不能指向Director

  5. Real Server 需支持隧道協議

  6. 不支持端口映射

.

  • LVS-FULLNAT:同時修改請求報文的源和目標IP;默認不支持

特點:

  1. RIP,DIP 可以使用私有地址

  2. RIP 和 DIP 可以不再同一網絡中,且 RIP 的網關不需要指向 DIP

  3. 支持端口映射

  4. 請求和響應報文都經由 Director


LVS調度算法

靜態調度算法:只根據算法進行調度 不考慮后端服務器的實際連接情況和負載情況

  • rr:round robin,輪詢,簡單在各主機間輪流調度

  • wrr:weighted round robin,加權輪詢,根據各主機的權重進行輪詢

  • sh:source hash,源地址哈希,對客戶端地址進行哈希計算,保存在 Director 的哈希表中,一段時間內,同一個客戶端 IP 地址的請求會被調度至相同的 Realserver。實現 session affinity(會話綁定),一定程度上損害了負載均衡的效果。

  • dh:destination hash,和 sh 類似,dh 將請求的目標地址進行哈希,將相同目標 IP 的請求發送至同一主機。當 Realserver 為透明代理緩存服務器時,提高緩存的命中率。

動態調度算法:根據各RS當前負載狀態及調度算法進行調度

  • lc:least connted,最少連接,根據 overhead = active*256 + inactive 計算負載狀態,每次選擇 overhead 最小的服務器

  • wlc:weighted lc,默認,加權最少連接,根據 overhead = (active*256+inactive)/weight 來計算負載,每次選擇 overhead 最小的服務器,

  • sed:shortest expected delay,最短期望延遲,不對 inactive 狀態的連接進行計算,根據 overhead = (active+1)*256/weight 計算負載,選擇 overhead 最小的服務器進行調度

  • nq:never queue,當有空閑服務器時,直接調度至空閑服務器,所有服務器都繁忙時,使用 SED 算法進行調度

  • LBLC:locality based least connection,基于本地的最少連接,相當于 dh + wlc,正常請求下使用 dh 算法進行調度,如果服務器超載,則使用 wlc 算法調度至其他服務器

  • LBLCR:locality based least connection with replication,基于本地的帶復制功能的LBLC,判斷后端連接數,當A的連接很多,而B的很空閑,會將A的部分連接分配到B上,避免大范圍不公平。主要用于Cache 集群系統


ipvsadm/ipvs

  • 集群服務管理:

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]

-A|E VIP添加修改服務地址

-D -t|u|f VIP 刪除集群

-t|u|f類型: tcp | udp | 防火墻標記

-s scheduler指定集群調度算法,默認wlc

  • RS管理:

ipvsadm -a|e -t|u|f VIP -r RIP [-g|i|m] [-w weight] 添加修改RS

-g|i|m lvs模型: DR | TUN | NAT 默認DR

-w weight 指定權重

清空定義:
ipvsadm -C

查看:
ipvsadm -ln

保存和重載:
ipvsadm -S = ipvsadm-save
ipvsadm -R = ipvsadm-restore

示例:

ipvsadm -A -t 10.1.235.55:80 -s wrr
ipvsadm -a -t 10.1.235.55:80 -r 10.1.235.6 -g -w 2
ipvsadm -a -t 10.1.235.55:80 -r 10.1.235.7 -g -w 3

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

(0)
JasperJasper
上一篇 2016-11-11 08:41
下一篇 2016-11-11 08:41

相關推薦

  • mariadb數據庫的主從復制

    mariadb的主從復制

    2018-02-27
  • 第三周博客作業

    who useradd usermod groupadd

    Linux干貨 2017-12-17
  • iptables

    iptables 包過濾型的防火墻 Firewall:防火墻,隔離工具;工作于主機或網絡邊緣,對于進出本主機或本網絡的報文根據事先定義的檢查規則作匹配檢測,對于能夠被規則匹配到的報文作出相應處理的組件; 主機防火墻網絡防火墻 軟件防火墻(軟件邏輯)硬件防火墻(硬件和軟件邏輯) 版本 ipfw (firewall framework):命令行工具,生成規則并送…

    Linux干貨 2017-06-13
  • 操作系統—Systemd

    Systemd 概述:       CentOS 6和之前版本采用SysVinit的系統啟動進程管理體系,一般用戶都可通過在/etc/inittab文件的配置,來個性化自己的系統啟動序列。但也經常會由于特殊環境的硬件等關系問題,造成其串行的啟動進程控制流,因為可能任務的阻塞而影響啟動過程。     &nbsp…

    Linux干貨 2016-09-24
  • 用戶組和權限管理

    一、3A認證     Authentication:認證     Autherization:授權     Accoutiong|Audition:審計 二、用戶user      linu…

    Linux干貨 2016-08-04
  • linux的tty

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://jeffyyko.blog.51cto.com/28563/140012 最近做了一個小測試,得到了以下結論 測試linux發行版本:rhel AS4.0 環境:VMware 5.0 目的:修改 vi /etc/initt…

    Linux干貨 2015-03-26
欧美性久久久久