馬哥教育網絡班21期+第1周課程練習

LVS簡介

LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個由章文嵩博士開發的一款自由軟件。利用LVS可以實現高可用的、可伸縮的Web、Mail、Cache等網絡服務,并在此基礎上開發支持龐大用戶數的高可用商務應用。

LVS集群的組成

基于LVS構建的服務器集群系統由3個部分組成:最前端的負載均衡層,中間的服務器池層,以及后端的數據存儲層。以下是LVS的架構框圖:
  • 負載均衡層:由一臺或多臺負載均衡調度器組成。而LVS的核心模板IPVS就在調度器上,調度器的主要作用類似于路由器,通過預先設定的ipvs規則,將用戶的請求分發到服務器池的Real Server上。

  • 服務器池層:由一組實際運行應用服務的機器組成,Real Server可以是Web服務器、FTP服務器、Mail服務器等中的一個或多個。

  • 數據存儲層:為所有的Real Server提供共享存儲空間和內容一致性的存儲區域。一般可以通過NFS網絡文件系統共享數據。

lvs_meitu_1.jpg

LVS集群實現原理

LVS的IP負載均衡技術是通過IPVS模塊實現的。IPVS是LVS的核心軟件,它的主要作用是:改變netfilter中INPUT鏈處理數據包的路徑,同時在Director Server上虛擬出一個IP地址,用戶必須通過這個虛擬IP去訪問服務器。訪問的請求首先通過此IP到達調度器,然后由調度器根據規則從服務器池中選擇一個Real Server響應用戶的請求。而此處Real Server如何返回數據給用戶就是LVS實現的重點,可以分為常用的3種方式:NAT、TUN和DR。下面進行詳細的介紹。
  • NAT:確切地來說是DNAT,通過請求的目標網絡地址轉換實現LVS。當用戶請求調度器時,調度器將請求報文的目標地址(VIP)改寫為根據調度算法挑選出的Real Server地址,同時也可以將報文的目標端口映射為Real Server的相應端口,最后將報文請求發送給選定的Real Server。Real Server在將數據返回給用戶時,需要再次經過調度器將報文的源IP和源端口改為VIP和相應端口,然后將數據發送給用戶,完成整個負載均衡調度過程。

    NAT.PNG

  • DR:即Director Routing,也就是用直接路由技術實現LVS。調度器收到請求報文后通過改寫請求報文中的源目MAC地址,將請求發送到Real Server,而Real Server將響應直接返回給用戶,不再經過調度器。那么在這一過程中有一個點需要重點把握,那就是Real Server和調度器都使用了VIP,如何能保證請求報文會先發給Real Server,那么核心思想是不要讓Real Server對廣播的ARP請求做出響應,最有效的方法是修改Real Server主機的內核參數。

    DR1.PNG

  • TUN:即通過IP隧道技術實現LVS。也就是當調度器收到請求報文時不會去修改請求報文的三層頭部,而是在原有的IP頭部外再封裝一個IP頭部,新的IP頭部的目標IP是根據調度算法挑選出來的Real Server的IP。

    TUN.PNG

LVS調度算法

前文一直在講調度器根據算法選定服務器池中的Real Server,那么到底如何選擇的,這里就淺析一下IPVS的調度算法,分為靜態和動態兩大類調度算法。

靜態調度算法:

①RR:輪詢(round robin):是一種1:1調度,實現將外部用戶的請求按順序1:1地分配到每一個Real Server上,不考慮Real Server的負載狀況。

②WRR:加權輪詢(weighted round robin):能者多勞的機制,根據Real Server的不同負載能力去調度訪問請求。通過預先在每臺Real Server上設定權重值來區別它們的處理能力。

③DH:目標地址散列(Destination Hash ):根據請求的目標IP地址,作為散列鍵(HashKey)從靜態分配的散列表找出對應的服務器,即將來自同一個IP的請求始終調度至同一個RS,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。

④SH:源地址散列(Source Hash):源地址散列”調度算法根據請求的源IP地址,作為散列鍵(HashKey)從靜態分配的散列表找出對應的服務器,即將對同一個目標IP的請求始終調度至同一個RS,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空?

動態調度算法:

①LC:最少連接(Least Connections):動態地將用戶請求調度到當前活動連接數最少的Real Server上。

②WLC:加權最少連接(Weighted LC):對每個服務節點用相應的權值表示其處理能力。WLC在進行調度時盡可能使Real Server的活動連接數與權重成正比。

③SED:最短期望延遲(Shortest Expection Delay): 對WLC的改進,Overhead = (ACTIVE+1)*256/權重值,防止在最初始狀態時,調度器會將請求轉發給負載能力差的Real Server。

④NQ:最少隊列調度(Never Queue):對SED的改進,防止服務器資源的浪費,因為SED算法可能會導致權重過大的Real Server一直在處理請求,而權重小的一直空閑。

⑤LBLC:基于局部性的最少連接(Locality-Based LC):目前主要用于Cache集群系統?該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器。

⑥LBLCR:帶復制的基于局部性最少連接(LBLC with Replication):對LBLC的改進,防止調度器一直轉發請求給同一個緩存服務器,而使其他服務器處于空閑,而LBLCR實現的就是緩存服務器可向其他緩存服務器請求的功能,即復制他們的數據,這比從遠端數據庫請求數據高效很多,也使服務器資源充分利用。

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

(0)
Net21_charlesNet21_charles
上一篇 2016-07-12 11:20
下一篇 2016-07-12 11:20

相關推薦

  • LINUX 下正確關機方法

    Linux下正確關機方法 Table of Contents 1關機前 1.1觀察系統使用 1.2通知在線使用者關機 2關機 2.1 sy 2.2 shutdo 2.3 rebo 2.4 ha 2.5 powero 3執行 3.1等級 3.2等級 1關機前準備 1.1觀察系統使用狀態 誰在線:who 聯網狀態:netstat -a 后臺執行的程序:ps -a…

    Linux干貨 2017-08-21
  • 第一篇

     新的征程又開始了,努力吧!

    Linux干貨 2016-12-26
  • 馬哥教育第21班網絡版第三周作業

    1、列出當前系統上所有已經登錄的用戶名,注意:同一個用戶登錄多次,則只顯示一次。 [root@localhost ~]# who |cut -d' ' -f 1 | uniq chenggb root 2、取出最后登錄到當前系統的用戶的相關信息。 [ro…

    2016-08-05
  • 馬哥教育網絡班19期+第9周課程練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現;   #!/bin/bash   declare -i login=0   declare -i nologin=0   for i in `awk …

    2016-07-07
  • 系統管理之磁盤管理(二)磁盤配額,RAID,LVM

    上篇博文給大家介紹了磁盤和文件系統的基礎知識,也是最基本的使用.在實際生產環境中,對于磁盤的使用,要求穩定,靈活,那么下面給大家分享下磁盤的高級用法.磁盤配額,RAID,LVM等相關知識. 1.磁盤配額2.磁盤RAID3.LVM 一.磁盤配額 1.概述: ? 在內核中執行 ? 以文件系統為單位啟用 ? 對不同組或者用戶的策略不同…

    Linux干貨 2016-09-05
  • 馬哥教育網絡班20期+第5周課程練習

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行;     grep "^[[:space:]]\+.*" /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一…

    2016-07-07

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-07-12 13:29

    寫的很好,排版也很棒,圖畫的也很棒,加油

欧美性久久久久