LVS產生背景、原理及LVS-DR應用實例(一)

一、什么是lvs? 它產生的背景,使用場景是什么?

 

   LVS(Linux Virtual Server) 可以理解為一個虛擬服務器系統。

      Internet的飛速發展,網絡帶寬的增長,Web服務中越來越多地使用CGI、動態主頁等CPU密集型應用,這對服務器的性能有較高要求,單臺服務器已經無法滿足需要,所以集群自然的成為一種解決方案,而LVS便是其中的一種集群方案。

    集群(Cluster)是一組相互獨立的、通過高速網絡互聯的計算機,它們構成了一個組,并以單一系統的模式加以管理。一個客戶與集群相互作用時,集群像是一個獨立的服務器。集群配置是用于提高可用性和可縮放性。集群系統的主要優點:高可擴展性、高可用性、高性能、高性價比。

    常見集群類型及實現方式簡介   
        LB:Load Balancing 高可拓展,伸縮集群
        HA:High Availability 高可用集群
        HP:High Performance 高性能集群
        LB:Load Balancing 

        硬件級:F5 BIG-IP、Citrix Netscaler、 A10 A10、Array、Redware
        軟件級:lvs (傳輸層)、haproxy, nginx (應用層)
        HA:高可用,heartbeat 、corosync + pacemaker、 cman +             rgmanager、cman + pacemaker、keepalived
        HP:高性能
            hadoop
      LVS項目在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。通過LVS提供的負載均衡技術和Linux操作系統可實現一個高性能、高可用的服務器群集,從而以低成本實現最優的服務性能
 

    lvs能夠實現在大并發的情況下,將前端調度器收到的請求分發給后端服務器處理,實現了負載均衡集群的作用。

      注:更多信息:LVS是國內貢獻給開源組織的一個最優秀的項目之一,該項目創始人和主要開發人是章文嵩博士,目前就職于阿里巴巴,改項目及具體介紹請參見網站:http://www.linuxvirtualserver.org/zh/lvs1.html

 

 二、LVS的構成和內核

    LVS是作為一個前端(Director)存在的,又稱為調度器,它本身不提供任何的服務,只是將通過互聯網進來的請求接受后再轉發給后臺真正的服務器(RealServer)進行處理,然后響應給客戶端。 

     LVS有兩個重要的組件:一個是IPVS,一個是IPVSADM。

         ipvsLVS的核心組件,它本身只是一個框架,類似于iptables,工作于內核空間中。

         ipvsadm 是用來定義LVS的轉發規則的,工作于用戶空間中

    內核客戶端的請求流向參見以下示意圖

     內核客戶端的請求流向參見以下示意圖.png

 

 

三、LVS調度算法

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

   

    rr: round robin,輪流,輪詢,輪叫

    wrr: weighted round robin, 加權輪詢

    sh:source hashing,session綁定

    dh: destination hashing, 目標地址hash

 

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

 

    lc: least connection,最少連接

    wlc: weighted lc,加權最少連接

    sed: shortest expection delay,最少期望延遲

    nq: never queue,永不排隊

    lblc: Locality-Based Least Connection,基于局部性的最少連接 

    lblcr:Replicated lblc,基于局部性的帶復制功能的最少連接

 

四:LVS 的安裝、配置,使用命令詳解

 

 LVS安裝(ipvsadm)

 

#yum -y install ipvsadm   

      安裝ipvsadm 

#echo 1 > /proc/sys/net/ipv4/ip_forward

      打開系統的轉發功能,也即路由功能

#ipvsadm -A -t 181.163.10.8 :80  -s  rr

    添加一個集群服務,指定 vip,端口80,調度算法:rr 輪詢

 

#ipvsadm -a -t 181.163.10.8:80   -r 181.163.10.9:80    -g

     添加一個節點到集群服務,指定指定節點IP,端口,模式為-g:DR 模式

 

#ipvsadm -a -t 181.163.1.10:80   -r 181.163.10.10:80    -g

     添加一個節點到集群服務,指定指定節點IP,端口,模式為-g:DR 模式 

 

    LVS  ipvsad    命令格式

 

         Ipvsadm     -A|E -t|u|f service-address [-s scheduler]

              [-p   [timeout]] [-M netmask]

      ipvsadm -D   -t|u|f service-address

      ipvsadm -C

      ipvsadm -R

      ipvsadm -S   [-n]

      ipvsadm   -a|e -t|u|f service-address -r server-address

              [-g|i|m] [-w weight] [-x upper] [-y lower]

      ipvsadm -d   -t|u|f service-address -r server-address

      ipvsadm   -L|l [options]

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

      ipvsadm   –set tcp tcpfin udp

      ipvsadm   –start-daemon state [–mcast-interface interface]

                [–syncid syncid]

      ipvsadm   –stop-daemon state

      ipvsadm -h

 

    LVS  ipvsad  命令詳解

 

      定義集群服務:

        -A 添加一個集群服務

        -D 刪除一個集群服務

        -E 修改一個集群服務

        -t VIP:端口 定義集群服務的類型為TCP的某個端口

        -u VIP:端口 定義集群服務的類型為UDP的某個端口

        -f 防火墻標記 定義集群服務的類型為防火墻標記

        -s 調度算法 指定集群服務的調度算法

 

    定義集群節點:

        -a 添加一個節點到集群服務

    -d 從集群服務中刪除一個節點

    -e 修改集群服務器中的節點

    -r 節點IP:端口  定義節點的IP及類型

    -m 定義為NAT模型

    -g 定義為DR模型

    -i 定義為TUN模型

    -w 權重 定義服務器的權重

 

    查看已經定義的集群服務及RS:

        ipvsadm -L -n

        -c: 查看各連接

        –stats: 統計數據

        –rate: 速率

        –exact: 精確值

 

    從集群服務中刪除RS:

        ipvsadm -d -t|u|f service-address -r server-address

     刪除集群服務:

        ipvsadm -D -t|u|f service-address

    清空所有的集群服務:

        ipvsadm -C

     保存集群服務定義:

        ipvsadm -S > /path/to/some_rule_file

        ipvsadm-save > /path/to/some_rule_file

      讓規則文件中的規則生效:

        ipvsadm -R < /path/from/some_rule_file

        ipvsadm-restore < /path/from/some_rule_file

 

五、LVS四種工作模式與對比

        1、LVS-DR   
        LVS-DR模式,直接路由模式, 調度器與實際服務器都有一塊網卡連在同一物理網段上
    lvs-DR模型是lvs的默認模型,也是企業中用到的最多的模型
解讀:直接路由模型,每個Real Server上都有兩個IP:VIP和RIP,但是VIP是隱藏的,就是不能提高解析等功能,只是用來做請求回復的源IP的,Director上只需要一個網卡,然后利用別名來配置兩個IP:VIP和DIP ### Director在接受到外部主機的請求的時候轉發給Real Server的時候并不更改目標地址,只是通過arp解析的MAC地址進行封裝然后轉給Real Server,Real Server在接受到信息以后拆除MAC幀封裝,然后直接回復給CIP

   LVC-DR.png

 

        2、 LVS-TUN 

        LVS-TUN模式,ip隧道模式,可以運用于異地機房的負載調度上
解讀:隧道模型,跟DR模型比較相似,都是由rs直接回復給cs .跟dr模型不同的是,vs和rs之間可以存在路由,原因是tun模型在報文源ip和目的ip后又加入了一層源ip和目的ip的信息。  LVC-TUN.png

 

        3、 LVS-NAT  

         LVS_NAT模型,通常應用與rs較少,rs節點無要求,端口轉換的場景
    解讀:地址轉換模型,vs通過修改目的ip將報文發送到rs.rs通過dip網關將報文發給vs,vs再將報文的源ip進行修改發送給客戶端。

       LVC-NAT.png

 

      4、LVS-FULLNAT

    全地址轉換模型,主要應用與rs和vs不在同一網絡的情景
    解讀:vs接收到client發送的報文后,修改報文中的源ip和目的ip為dip和rip.rs將報文返回vs后vs再將報文中的源ip和目的ip改為vip和cip.LVC-FULLNAT.png    

 注:本文參考:N22-深圳-曉志, 章文嵩項目信息

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

(1)
AchengAcheng
上一篇 2016-10-28 23:49
下一篇 2016-10-29 00:33

相關推薦

  • grep作業題

    找出/proc/meminfo文件中,所有以大寫或小寫s開頭的行,至少三種方式:grep -i "^s" /proc/meminfogrep "^[sS]" /proc/meminfogrep -E "^(s|S)" /proc/meminfo顯示當前系統上roo、centos或者user用戶的相關…

    Linux干貨 2016-08-12
  • raid5創建

    創建分區并改類型 創建raid5   創建把文件系統 生成配置文件    

    2017-12-17
  • Linux文件系統管理

    馬哥教育網絡班23期+第3周課程練習 Linux文件系統管理 由于第三周所學的只是比較零碎,知識量比較大,這篇博客主要講述的是一些習題,包括怎樣完成的練習的思路和截圖等等。首先我們看第一個題目 1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。    [root@localhost]/media/P…

    Linux干貨 2016-09-23
  • LAMP 通過使用腳本的方式安裝并部署Discuz

    該腳本有很多輔助的部分,主要是為了讓腳本在中途運行失敗可以多次運行,所產生的結果是預期的,與第一運行并成功的結果是一樣的。初次攝入bash腳本有很多不足,敬請指正。 所需要的軟件 apr-1.5.2.tar.bz2 apr-util-1.5.4.tar.bz2 Discuz_X3.2_SC_UTF8.zip freetype-2.5.4.tar.gz htt…

    Linux干貨 2016-04-05
  • cache: 緩存相關

    cache: 緩存相關 —————————————————— 以下所陳述的緩存概念多是相對web服務而言 緩存所起的作用就是加速,減輕后端服務器壓力。一般而言,我們請求的web服務資源往往不是由后端 服務器所響應的(對于頗具規模的站點來說),而是由前端的緩存服務器所緩存的內容直接響應,所以, 我們得到的資源可能不實最新的,因為緩存的數據于后端服務器不一定時同…

    Linux干貨 2016-11-08
  • M20 – 1- 第二周(2):課堂練習與作業

    課堂練習: 1、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件和目錄 [root@centos6 ~]# ls /var/l*[[:digit:]]*[[:lower:]] ls: cannot access /var/l*[[:digit:]]*[[:lower:…

    Linux干貨 2016-08-02

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-02 16:11

    完成的非常好,給出了詳細操作步驟,能把排版在完善一下就更完美了,加油!

欧美性久久久久