LVS(Linux Virtual Server)學習筆記

LVS(Linux Virtual Server)學習筆記

此文主要對lvs負載均衡學習的總結,一為記錄,二為鞏固。主要介紹:1、lvs基礎;2、lvs的配置;3、lvs的實現

前提:負載均衡(LB Cluster)
    負載均衡實現方法有兩種:硬件實現和軟件實現;
        硬件比較常見的有:   1) F5 Big-IP;2)Citrix Netscaler;3)A TEN
        軟件比較常見的有:   1)LVS(Linux Virtual Server);2)nginx;3)HAProxy;4)ATS(Apache Traffic Server)

一、LVS基礎

1.1 什么是lvs

  LVS是Linux Virtual Server的縮寫,顧名思義是一個虛擬的服務器集群系統,項目在1998年5月由張文嵩博士成立,在linux 2.6版本后,LVS被收錄到內核中。

1.2 lvs能拿來干什么

  LVS作為一個調度器,能把用戶的大量并發請求負載均衡至后端服務器,使得網站在高并發下還能提供服務,而不至于癱瘓。LVS技術要達到的目標是:通過LVS提供的負載均衡技術和Linux操作系統實現一個高性能、高可用的服務器群集,它具有良好可靠性、可擴展性和可操作性。從而以低廉的成本實現最優的服務性能。 LVS自從1998年開始,發展到現在已經是一個比較成熟的技術項目了??梢岳肔VS技術實現高可伸縮的、高可用的網絡服務,例如WWW服務、Cache服務、DNS服務、FTP服務、MAIL服務、視頻/音頻點播服務等等,有許多比較著名網站和組織都在使用LVS架設的集群系統,例如:Linux的門戶網站(www.linux.com)、向RealPlayer提供音頻視頻服務而聞名的Real公司(www.real.com)、全球最大的開源網站(sourceforge.net)等。

1.3 lvs的工作模式

  LVS是四層負載均衡,也就是說建立在OSI模型的第四層——傳輸層之上,傳輸層上有我們熟悉的TCP/UDP,LVS支持TCP/UDP的負載均衡。因為LVS是四層負載均衡,因此它相對于其它高層負載均衡的解決辦法,比如DNS域名輪流解析、應用層負載的調度、客戶端的調度等,它的效率是非常高的。

  LVS的IP負載均衡技術是通過IPVS模塊來實現的,IPVS是LVS集群系統的核心軟件,它的主要作用是:安裝在Director Server上,同時在Director Server上虛擬出一個IP地址,用戶必須通過這個虛擬的IP地址訪問服務。這個虛擬IP一般稱為LVS的VIP,即Virtual IP。訪問的請求首先經過VIP到達負載調度器,然后由負載調度器從Real Server列表中選取一個服務節點響應用戶的請求。 當用戶的請求到達負載調度器后,調度器如何將請求發送到提供服務的Real Server節點,而Real Server節點如何返回數據給用戶,是IPVS實現的重點技術,IPVS實現負載均衡機制有幾種,分別是NAT、DR、TUN及FULLNAT。

1.3.1 lvs-nat工作模式

LVS(Linux Virtual Server)學習筆記  NAT(Network Address Translation 網絡地址轉換)是一種外網和內外地址映射的技術,內網可以是私有網址,外網可以使用NAT方法修改數據報頭,讓外網與內網能夠互相通信。NAT模式下,網絡數據報的進出都要經過LVS的處理。LVS需要作為RS(真實服務器)的網關。當包到達LVS時,LVS做目標地址轉換(DNAT),將目標IP改為RS的IP。RS接收到包以后,仿佛是客戶端直接發給它的一樣。RS處理完,返回響應時,源IP是RS IP,目標IP是客戶端的IP。這時RS的包通過網關(LVS)中轉,LVS會做源地址轉換(SNAT),將包的源地址改為VIP,這樣,這個包對客戶端看起來就仿佛是LVS直接返回給它的??蛻舳藷o法感知到后端RS的存在。

(1)RIP和DIP必須在同一個IP網絡,且應該使用私網地址;RS的網關要指向DIP;
(2)請求報文和響應報文都必須經由Director轉發;Director易于成為系統瓶頸;
(3)支持端口映射,可修改請求報文的目標PORT;
(4)vs必須是Linux系統,rs可以是任意系統;

缺點:在整個過程中,所有輸入輸出的流量都要經過LVS 調度服務器。顯然,LVS 調度服務器的網絡I/O壓力將會非常大,因此很容易成為瓶頸,特別是對于請求流量很小,而響應流量很大的Web類應用來說尤為如此。

優點: NAT模式的優點在于配置及管理簡單,由于了使用NAT技術,LVS 調度器及應用服務器可以在不同網段中,網絡架構更靈活,應用服務器只需要進行簡單的網絡設定即可加入集群。

1.3.2 lvs-dr工作模式(最為常用)

lvs-dr.png.JPG

  DR(Direct Routing 直接路由模式)此模式時LVS 調度器只接收客戶發來的請求并將請求轉發給后端服務器,后端服務器處理請求后直接把內容直接響應給客戶,而不用再次經過LVS調度器。LVS只需要將網絡幀的MAC地址修改為某一臺后端服務器RS的MAC,該包就會被轉發到相應的RS處理,注意此時的源IP和目標IP都沒變。RS收到LVS轉發來的包時,鏈路層發現MAC是自己的,到上面的網絡層,發現IP也是自己的,于是這個包被合法地接受,RS感知不到前面有LVS的存在。而當RS返回響應時,只要直接向源IP(即用戶的IP)返回即可,不再經過LVS。

注意:
    (1) 確保前端路由器將目標IP為VIP的請求報文發往Director:
        (a) 在前端網關做靜態綁定;
        (b) 在RS上使用arptables;
        (c) 在RS上修改內核參數以限制arp通告及應答級別;
                arp_announce
                arp_ignore
    (2) RS的RIP可以使用私網地址,也可以是公網地址;RIP與DIP在同一IP網絡;RIP的網關不能指向DIP,以確保響應報文不會經由Director;
    (3) RS跟Director要在同一個物理網絡;
    (4) 請求報文要經由Director,但響應不能經由Director,而是由RS直接發往Client;
    (5) 此模式不支持端口映射;

缺點:唯一的缺陷在于它要求LVS 調度器及所有應用服務器在同一個網段中,因此不能實現集群的跨網段應用。

優點:可見在處理過程中LVS Route只處理請求的直接路由轉發,所有響應結果由各個應用服務器自行處理,并對用戶進行回復,網絡流量將集中在LVS調度器之上。

1.3.3 lvs-tun 工作模式

lvs-tun.JPG

  TUN(virtual server via ip tunneling IP 隧道)調度器把請求的報文通過IP隧道轉發到真實的服務器。真實的服務器將響應處理后的數據直接返回給客戶端。這樣調度器就只處理請求入站報文。此轉發方式不修改請求報文的IP首部(源IP為CIP,目標IP為VIP),而在原IP報文之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標RS;RS直接響應給客戶端(源IP是VIP,目標IP是CIP),由于一般網絡服務應答數據比請求報文大很多,采用lvs-tun模式后,集群系統的最大吞吐量可以提高10倍

注意:
    (1) DIP, VIP, RIP都應該是公網地址;
    (2) RS的網關不能,也不可能指向DIP;
    (3) 請求報文要經由Director,但響應不能經由Director;
    (4) 此模式不支持端口映射;
    (5) RS的操作系統得支持隧道功能

缺點:由于后端服務器RS處理數據后響應發送給用戶,此時需要租借大量IP(特別是后端服務器使用較多的情況下)。

優點:實現lvs-tun模式時,LVS 調度器將TCP/IP請求進行重新封裝并轉發給后端服務器,由目標應用服務器直接回復用戶。應用服務器之間是通過IP 隧道來進行轉發,故兩者可以存在于不同的網段中。

1.3.4 lvs-fullnat模式(此類型默認不支持

  此模式類似DNAT,它通過同時修改請求報文的源IP地址和目標IP地址進行轉發

注意:
    (1) VIP是公網地址,RIP和DIP是私網地址,且通常不在同一IP網絡;因此,RIP的網關一般不會指向DIP;
    (2) RS收到的請求報文源地址是DIP,因此,只需響應給DIP;但Director還要將其發往Client;
    (3) 請求和響應報文都經由Director;
    (4) 支持端口映射;
1.4 LVS 的調度算法

根據其調度時是否考慮各RS當前的負載狀態,可分為靜態方法和動態方法兩種。

靜態方法:   
        僅根據算法本身進行調度;
        RR:roundrobin,輪詢調度,即簡單在各主機間輪流調度;
        WRR:Weighted RR,加權輪詢調度,根據各主機的權重進行輪詢;
        SH:Source Hashing,實現session sticy,源IP地址hash;將來自于同一個IP地址的請求始終發往第一次挑中的RS,從而實現會話綁定;
        DH:Destination Hashing;目標地址哈希,將發往同一個目標地址的請求始終轉發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡;

動態方法:
        主要根據每RS當前的負載狀態及調度算法進行調度;
            Overhead=

            LC:least connections最小連接調度,;
                lvs根據Overhead=activeconns*256+inactiveconns計算服務器的負載狀態,每次選擇overhead最小的服務器
            WLC:Weighted LC 加權最小連接調度;
                lvs根據Overhead=(activeconns*256+inactiveconns)/weight來計算服務器負載,每次選擇overhead最小的服務器,它是lvs的默認調度算法;
            SED:Shortest Expection Delay最短期望延遲,
                它不對 inactive 狀態的連接進行計算,根據Overhead=(activeconns+1)*256/weight計算服務器負載,選擇 overhead 最小的服務器進行調度
            NQ:Never Queue
                當有空閑服務器時,直接調度至空閑服務器,當沒有空閑服務器時,使用 SED 算法進行調度
            LBLC:Locality-Based LC,動態的DH算法,基于局部性最少連接,相當于 dh + wlc,正常請求下使用 dh 算法進行調度,如果服務器超載,則使用 wlc 算法調度至其他服務器;
            LBLCR:LBLC with Replication,帶復制功能的LBLC,與 LBLC 不同的是 LVS 將請求 IP 映射至一個服務池中,使用 dh 算法調度請求至對應的服務池中,使用 lc 算法選擇服務池中的節點,當服務池中的所有節點超載,使用 lc 算法從所有后端 Realserver 中選擇一個添加至服務吃中。
1.5 ipvsadm lvs負載均衡管理命令
核心功能:
            集群服務管理(lvs調度器):增、刪、改;
            集群服務的RS管理:增、刪、改;
            查看;

管理集群服務:增、改、刪;

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

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

            service-address:
                    -t|u|f:
                    -t: TCP協議的端口,VIP:TCP_PORT
                    -u: TCP協議的端口,VIP:UDP_PORT
                    -f:firewall MARK,是一個數字;

            [-s scheduler]:指定集群的調度算法,默認為wlc;

        例子:
            # ipvsadm -A -t 172.16.33.116:80 -s rr

管理集群上的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[:port]

            選項:
                lvs類型:
                    -g: gateway, dr類型
                    -i: ipip, tun類型
                    -m: masquerade, nat類型   
                    -w weight:權重;
        例子:
            # ipvsadm -a -t 172.16.33.117:80 -r 192.168.100.1 -m
            # ipvsadm -a -t 172.16.33.118:80 -r 192.168.100.2 -m

清空定義的所有內容:
                ipvsadm -C

查看:
        ipvsadm -L|l [options]
            --numeric, -n:numeric output of addresses and ports 
            --exact:expand numbers (display exact values)

            --connection, -c:output of current IPVS connections
            --stats:output of statistics information
            --rate :output of rate information

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

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

(0)
yaoqin.liangyaoqin.liang
上一篇 2017-02-13
下一篇 2017-02-13

相關推薦

  • shell腳本清空系統message日志

      1 #/bin/bash   2 #此腳本用來清空系統message日志文件   3 #author:wyf date:16/10/30   4 LOG_DIR=/var/log   5 ROOT…

    Linux干貨 2016-10-30
  • 文件查找與壓縮

    文件查找與壓縮   Locate:非事實查找(數據庫查找)     查詢系統上預建的文件索引數據庫 /var/lib/mlocate/mlocate.db 依賴于事先構建的索引; 索引的構建是在系統較為空閑時自動進行(周期性任務); 管理 員手動更新數據庫(updatedb);   工作特點: 查找…

    Linux干貨 2016-08-18
  • test

    test

    Linux干貨 2017-11-26
  • 系統基礎之文件查找工具find

    文件查找:        在運維人員操作系統時,要接觸大量的文件,為了避免忘記文件存放位置的尷尬,就需要我們有一種文件查找工具的幫忙,下面是兩個文件查找工具的詳解,locate以及find,分別分享給大家. 第一款工具: Locate locate – find files by name loc…

    Linux干貨 2016-08-16
  • 用戶和組的相關配置文件

      用戶,是計算機識別使用者身份的一種唯一使用標識。 而現實生活中為了方便人類記憶使用等,用戶名往往是用便于人類識別的語言來記錄的。但事實上計算機并不對人類語言敏感,所以有必要把人類語言跟機器語言對應上。于是,linux給每一個創建用戶提供了一個UID。當使用用戶名登錄時,系統換自動對應UID來識別該用戶身份。 而用戶名與UID的對應信息就儲存在一…

    Linux干貨 2016-10-23
  • N22-第二周作業

    1、文件管理類命令有:cp,mv,rm    cp:復制命令      用法:cp [OPTION]… SOURCE… DEST        如果DEST不存在,則先創建此文件并復制源…

    Linux干貨 2016-08-29
欧美性久久久久