• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 虛擬服務器解決方案

    發表于:2007-07-02來源:作者:點擊數: 標簽:
    Linux Virtual Server,簡稱LVS。是由中國一個Linux 程序員 發起的 開發 項目計劃,其實現目標是創建一個具有良好的擴展性、高 可靠性 、高 性能 和高可用性的,基于 Linux系統 的服務器集群。 1.LVS系統結構與特點 使用LVS架設的服務器集群系統從體系結構上

        Linux Virtual Server,簡稱LVS。是由中國一個Linux程序員發起的開發項目計劃,其實現目標是創建一個具有良好的擴展性、高可靠性、高性能和高可用性的,基于Linux系統的服務器集群。

     

    1.LVS系統結構與特點


    使用LVS架設的服務器集群系統從體系結構上看是透明的,最終用戶只感覺到一個虛擬服務器.物理服務器之間可以通過高速的LAN或分布在各地的WAN相連。最前端是負載均衡器,它負責將各種服務請求分發給后面的物理服務器,讓整個集群表現得象一個服務于同一IP地址的虛擬服務器。

    LVS集群系統具有良好的可擴展性和高可用性。

    可擴展性是指,LVS集群建立后,可以很容易地根據實際的需要增加或減少物理服務器。而高可用性是指當檢測到服務器節點或服務進程出錯、失效時,集群系統能夠自動進行適當的重新調整系統。

    <cente>2.LVS是如何工作的


    Linux Virtual Server的主要是在負載均衡器上實現的,負載均衡器是一臺加了LVS Patch的2.2.x版內核的Linux系統。LVS Patch可以通過重新編譯內核的方法加入內核,也可以當作一個動態的模塊插入現在的內核中。

    負載均衡器可以運行在以下三種模式下中的一種或幾種: 1)Virtual Server via NAT(VS-NAT):用地址翻譯實現虛擬服務器;2)Virtual Server via IP Tunneling (VS-TUN):用IP隧道技術實現虛擬服務器;3)Virtual Server via Direct Routing(VS-DR):用直接路由技術實現虛擬服務器。

    另外,還需要根據LVS應用對物理服務器進行恰當的配置。

    以下將分別講述一下三種模式的工作原理和優缺點。

    2.1.Virtual server via NAT(VS-NAT)

    Virtual Server via NAT方法的最大優點是集群中的物理服務器可以使用任何支持TCP/IP操作系統,物理服務器可以分配Internet的保留私有地址,只有負載均衡器需要一個合法的IP地址。

    這種實現方法的最大的缺點是擴展性有限。當服務器節點(普通PC服務器)數據增長到20個或更多時,負載均衡器將成為整個系統的瓶頸,因為所有的請求包和應答包都需要經過負載均衡器再生。假使TCP包的平均長度是536字節的話,平均包再生延遲時間大約為60us(在Pentium處理器上計算的,采用更快的處理器將使得這個延遲時間變短),負載均衡器的最大容許能力為8.93M/s,假定每臺物理服務器的平臺容許能力為400K/s來計算,負責均衡器能為22臺物理服務器計算。

    Virtual Server via NAT能夠滿足許多服務器的服務性能需求。即使是是負載均衡器成為整個系統的瓶頸,如果是這樣也有兩種方法來解決它。一種是混合處理,另一種是采用Virtual Server via IP tunneling或Virtual Server via direct routing。如果采用混合處理的方法,將需要許多同屬單一的RR DNS域。你采用Virtual Server via IP tunneling或Virtual Server via direct routing以獲得更好的可擴展性。也可以嵌套使用負載均衡器,在最前端的是VS-Tunneling或VS-Drouting的負載均衡器,然后后面采用VS-NAT的負載均衡器。

    2.2.Virtual server via IP tunneling(VS-TUN)

    采用VS-NAT方式,請求與應答包都需要經過負載均衡器,那么當服務器節點增長到20個或更多時,這個負載均衡器就可能成為新的瓶頸。我們發現,許多Internet服務(例如WEB服務器)的請求包很短小,而應答包通常很大。

    而使用VS-TUN方式的話,負載均衡器只負責將請求包分發給物理服務器,而物理服務器將應答包直接發給用戶。所以,負載均衡器能處理很巨大的請求量,這種方式,一臺負載均衡能為超過100臺的物理服務器服務,負載均衡器不再是系統的瓶頸。使用VS-TUN方式,如果你的負載均衡器擁有100M的全雙工網卡的話,就能使得整個Virtual Server能達到1G的吞吐量。

    IP tunneling(IP隧道)能夠用于架構一個高性能的virtual server,非常適合構建virtual proxy server,因為當代理服務器收到了請求,能夠讓最終用戶直接與服務器聯系。

    但是,這種方式需要所有的服務器支持"IP Tunneling"(IP Encapsulation)協議,我僅在Linux系統上實現了這個,如果你能讓其它操作系統支持,還在探索之中。

    2.3.Virtual Server via Direct Routing(VS-DR)

    就象VS-TUN一下,在VS-DR方式下,負載均衡器也只是分發請求,應答包通過單獨的路由方法返回給客戶端。這種方式能夠大大提高Virtual Server的可擴展性。與VS-TUN相比,VS-DR這種實現方式不需要隧道結構,但它要求負載均衡器的網卡必須與物理網卡在一個物理段上。

    而且VS-DR模式,可以使用大多數操作系統做為物理服務器,其中包括:Linux 2.0.36、2.2.9、2.2.10、2.2.12;Solaris 2.5.1、2.6、2.7;FreeBSD 3.1、3.2、3.3;NT4.0無需打補??;IRIX 6.5;HPUX11等

     


    3.安裝配置LVS


    LVS的安裝配置主要可以分成以下三個步驟:
    1) 下載LVS軟件;
    2) 安裝、配置負載均衡器;
    3) 安裝、配置物理服務器;

    3.1. 安裝前的準備

    1).下載LVS軟件:
    大家可以到LVS的主頁(),選擇“Software”鏈接,選取最新版的補丁包(tar包)下載。這個包里包含了內核補丁和源程序。

    2).安裝的指導思想

    如果你選用了VS-NAT模式的話,則可以使用所有支持TCP/IP協議的操作系統構建的機器作物理服務器,并且無須做任何修改。

    如果你選用了VS-TUN模式的話,則選擇Linux作物理服務器的操作系統,并根據后面的介紹做相應的設置。

    如果你選用了VS-DR模式的話,則可以選擇大多數操作系統(如上節所述)作物理服務器,并根據后面的介紹做相應的設置。

    3).各種操作系統作物理服務器的要點詳解

    a)Linux 2.0.36
    這種操作系統無需做任何修改,就可以運行在VS-NAT、VS-Tun、VS-DR三種模式下。

    b)Linux 2.2.x

    無需任何修改就可運行VS-NAT模式。而使用VS-DR和VS-Tun兩種模式可能會引起ARP問題。這種情況
    就必須:¨ 為2.2.x內核打補丁

    · Stephen WillIams的補丁包:
    你可以在獲取,它的原理十分簡單:讓物理服務器不響應對虛擬IP的ARP請求。

    · Julian Anastasov的補丁包:
    你可以在處獲取,然后用以下方法使其生效:
    echo 1 > /proc/sys/net/ipv4/conf/<interface_name>/arp_invisible

    ¨ 新添一塊網卡承載虛擬IP地址:
    你可以選擇一塊ISA網卡或廉價的PCI網卡來用于這個功能。你可以將這個接口的ARP功能關閉。

    ¨ 將物理服務器放置于與虛擬IP地址不同的網絡上,并且確認客戶端無法直接路由到物理服務器所在網段。這種方法需要在負載均衡器上有兩塊網卡象防火墻一樣工作。

    ¨ 在客戶端或路由器將虛擬IP地址與負載均衡器的物理MAC地址綁定。

    ¨ 使用IPCHINA重寫每一個進入的包,將其從lo接口送入。

    c)其它操作系統
    如果是VS-NAT的話,無需修改。如果是VS-DR的話,需要采取一些相應的配置方法設置物理服務器的IP地址,使其擁有LVS的虛擬IP地址。用其它操作系統的話不能使用VS-Tun方法。

    4).準備硬件環境
    構建服務器集群系統,至少需要3臺機器,1臺用于負載均衡器,2臺用于物理服務器。少于這個數字的話就沒有意義了。

    負載均衡器:運行在打了補丁的2.2.x核心Linux系統。

    物理服務器:
    VS-NAT:任何機器、任何操作系統,運行Internet網絡服務,如 HTTP、FTP、Telnet、SMTP、NNTP、DNS等。
    VS-TUN:任何機器、支持IP隧道的操作系統(迄今為止僅有Linux)
    VS-DR:任何機器、大多操作系統。

    3.2. 理解LVS的相關術語

    1).ipvsadm
    ipvsadm是LVS的一個用戶界面。在負載均衡器上編譯、安裝ipvsadm:
    ipvsadm sets

    2).調度算法
    LVS的負載均衡器有以下幾種調度規則:
    Round-robin,簡稱rr,weighted Round-robin,簡稱wrr,每個新的連接被輪流指派到每個物理服務器。
    Least-connected,簡稱lc,weighted Least-connected,簡稱wlc,每個新的連接被分配到負擔最小的服務器。
    Persistent client connection,簡稱pclearcase/" target="_blank" >cc,(持續的客戶端連接,內核2.2.10版以后才支持)。所有來自同一個IP的客戶端將一直連接到同一個物理服務器。超時時間被設置為360秒。Pcc是為https和cookie服務設置的。在這處調度規則下,第一次連接后,所有以后來自相同客戶端的連接(包括來自其它端口)將會發送到相同的物理服務器。但這也會帶來一個問題,大約有25%的Internet可能具有相同的IP地址(AOL的
    客戶是通過位于美國弗吉尼亞洲的一臺服務器連入Internet的),這種情況下只要有一個AOL的客戶連接到一個物理服務器上,那么所有來自AOL的客戶連接將都被連到這一臺物理服務器上。這將多么可怕呀!

    3).Persistent port connection調度算法
    在內核2.2.12版以后,pcc功能已從一個調度算法(你可以選擇不同的調度算法:rr、wrr、lc、wlc、pcc)演變成為了一個開關選項(你可以讓rr、 wrr、lc、wlc具備pcc的屬性)。在設置時,如果你沒有選擇調度算法時,ipvsadm將默認為wlc算法。

    在Persistent port connection(ppc)算法下,連接的指派是基于端口的,例如,來自相同終端的80端口與443端口的請求,將被分配到不同的物理服務器上。
    不幸的是,如果你需要在的網站上采用cookies時將出問題,因為http是使用80端口,然而cookies需要使用443端口,這種方法下,很可能會出現cookies不正常的情況。

    3.3. 配置實例

    1).例一:https only
    a)在lvs_dr.conf 文件寫入:
    SERVICE=t https ppc 192.168.1.1
    b)Ipvsadm設置:
    IP Virtual Server version 0.9.4 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port Forward Weight ActiveConn InActConn
    TCP ssl.mack.net:https wlc persistent 360
    -> di.mack.net:https Route 1 0 0

    2).例二:All ports sticky,超時為30分,wrr調度算法
    a)在lvs_dr.conf 文件寫入:
    SERVICE=t 0 wrr ppc -t 1800 192.168.1.1
    #ppc persistent connection, timeout 1800 sec
    /sbin/ipvsadm -A -t 192.168.1.110:0 -s wrr -p 1800
    echo "adding service 0 to realserver 192.168.1.1 using connection
    (接上行) type dr weight 1"
    /sbin/ipvsadm -a -t 192.168.1.110:0 -R 192.168.1.1 -g -w 1
    b)Ipvsadm設置:
    # ipvsadm
    IP Virtual Server version 0.9.4 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port Forward Weight ActiveConn InActConn
    TCP ssl.mack.net:https wrr persistent 1800
    -> di.mack.net:https Route 1 0 0

    3.4. 配置方法

    1).準備
    用配置腳本*.conf作為輸入產生rc.lvs腳本,然后放置在/etc/init.d或/etc/rc.d目錄下。

    早期版本的配置腳本可以運行在任何機器上。然而現在的配置腳本,針對不同的內核版本是有些不同的。你必須在負載均衡器上運行、檢測內核版本。將在負載均衡器上的配置文件和目錄,通過nfs輸出這個
    目錄到物理服務器上以供配置需要。 必須先在負載均衡器上運行腳本rc.lvs,然后在物理服務器上運行。

    根據你選擇的LVS工作模式(VS-NAT、VS-Tun、VS-DR)選擇適當的conf文件模板(lvs_nat.conf、
    lvs_tun.conf、lvs_dr.conf),然后根據實際情況修改IP地址與服務。在缺省狀態下只配置了telnet服務。
    telnet服務能夠很方便地用于測試:當客戶機telnet登錄時,根據提示符就可以知道登錄到的是哪一臺物理
    服務器。

    你可以編輯conf配置文件來增加其它的服務。在配置文件中提供了集群內部的IP地址建議值
    (192.168.1.x/24、10.1.1.x/24)。

    在配置文件中,你可以使用名稱(如telnet)或端口(如23)來標識服務。使用名稱時要注意,須與
    /etc/services中匹配。/etc/services文件內容如下所示:
    ssh 22/tcp
    domain 53/tcp nameserver dns #the string "dns" needs to be added here
    domain 53/tcp nameserver dns #and here
    https 443/tcp
    https 443/udp

    在多種情況下,一臺機器常需要多個IP地址,你可以使用IP別名(內核支持的可選項,一般情況下已含在內核中)來為一塊網卡指定多個IP地址。

    2).運行配置腳本
    $ ./configure.pl lvs_nat.conf

    這將產生一個rc.lvs_xxx腳本(例如:rc.lvs_nat、rc.lvs_tun、rc.lvs_dr)以及mon_xxx.cf腳本。(稍后將rc.lvs_xxx放到/etc/rc.d或/etc/init.d中去,將mon_xxx.cf放在/etc/mon目錄下)。

    3).rc.lvs腳本選項
    a). 為負載均衡器與物理服務器增加以太網設備和路由器;
    b).使用fping檢查連接;
    c).運行ipchains(VS-NAT方式);
    d).激活ipforward;
    e).關閉ICMP重定向功能(VS-DR和VS-Tun方式);
    f).增加ipvsadm服務。

    4).繼續
    在物理服務器上運行:
    $ . ./rc.lvs_nat 或
    $sh rc.lvs_nat

    rc.lvs腳本能夠自動判斷是運行在負載均衡器(tests ?x /sbin/ipvsadm)還是物理服務器上(檢查ifconfig)。

    檢查ipvsadm、ifconfig ?a和netstat ?rn的輸出,檢查服務/IP地址是否正確。如果不正確的話,請重
    新編輯然后再運行一次。

    3.5.測試LVS

    檢查每一臺物理服務器上運行的服務,看它們的IP是不是LVS的虛擬IP—VIP(使用netstat ?an)。如果運行rc.lvs_xxx腳本沒有出錯的話,你從客戶端telnet到VIP(在本文中是192.168.1.110),你將會登錄到其中的一臺物理服務器上,并看到這臺物理服務器的登錄提示。

    在負載均衡器上查看ipvsadm的輸出,你會在23端口上看到一個與物理服務器的連接。而在物理服務器上執行:$ netstat -an | grep 23命令查看到相關信息??蛻舳薼ogout退出后,再次登錄虛擬IP時,你將會看到另一臺物理服務器的登錄提示符。

     

    4 VS-NAT模式


    VS-NAT是基于CISCO的負載均衡器:LocalDirector實現的。

    4.1.安裝VS-NAT

    根據下表設置客戶端、負載均衡器、物理服務器的IP地址:

    表21-2.客戶端、負載均衡器、物理服務器的IP地址


    機 器 IP地址
    客戶端 192.168.1.254
    負載均衡器的虛擬IP 192.168.1.110(LVS表現的IP)
    負載均衡器內部網卡 10.1.1.1
    物理服務器1 10.1.1.2
    物理服務器2 10.1.1.3
    物理服務器3 10.1.1.4
    …… ……
    物理服務器n 10.1.1.n+1
    物理服務器的默認
    網關 10.1.1.1

    對于VS-NAT方法來說,物理服務器必須位于與客戶機、LVS的虛擬IP地址不同的網段上,也就是說在物理服務器上不能直接PING通客戶機。
    由于負載均衡器有兩個IP地址,一個是LVS的虛擬IP地址,另一個IP地址是內部地址--所有物理服務器默認網關。當數據包從物理服務器發送到負載均衡器時,負載均衡器根據地址翻譯(NAT)規則將包轉發到客戶端。(由于負載均衡器是一個地址翻譯器,所以ICMP的重定向功能失效,PING無法應用)??梢圆捎肐P別名的方法,也可以使用雙網卡方法來實現這個。

    配置腳本將會配置IP偽裝。以下是在configure.pl腳本中的程序段:
    echo "turning on masquerading "
    #setup masquerading
    echo "1" >/proc/sys/net/ipv4/ip_forward
    echo "installing ipchain rules"
    /sbin/ipchains -A forward -j MASQ -s 10.1.1.0/24 -d 0.0.0.0/0
    echo "ipchain rules "
    /sbin/ipchains ?L
    所有與NAT有關的規則設置都在rc.lvs_nat文件中表現。

    4.2.配置VS-NAT

    在負載均衡器以及每一臺物理服務器上分別執行rc.lvs_xxx腳本程序,使用lvs_nat.conf這個模板來生成rc.lvs_nat配置文件。

    VS-NAT將會對端口重新映射,一個來自于80端口的請求,負載均衡器會將其發給物理服務器的8000端口。由于數據包的源地址和目標地址已經被重寫,所以無需對重新端口增加額外的開銷。很低的重寫數據包速度(60us/包)限制了VS-NAT的最大處理能力,而且VS-NAT的最大處理能力不是與增加的物理服務器成正比的。

    VS-NAT實現方法的最大優點是物理服務器可以是任何一種操作系統,無需為了完成LVS而作任何修改,而且可以實現一些在Linux上不存在服務。

    4.33.VS-NAT與Linux核心支持的NAT

    當然可以使用ipchains或ipfw構建基于Linux內核的NAT防火墻。而使用了基于2.0.36版內核的LVS補丁包后,常規的內核模塊(如ip_masq_ftp等)不再工作(而且不再需要裝載)。

     

    5.VS-DR模式


    5.1.總論

    VS-DR是基于IBM的NetDispathcer實現的。NetDispatcher位于WEB服務器的前端,對于客戶端來說就象一臺WEB服務器。NetDispatcher曾服務于奧運會、卡斯帕羅夫與深藍電腦的國際象棋比賽。

    這里有一個VS-DR的IP地址設置的實例。注意:物理服務器與VIP位于同一個網絡上。

    VS-DR模式在以下幾方面受到了限制
    1) 物理服務器和負載均衡器必須在同一個網段上(它們之間必須能使用arp協議),它們之間在數據鏈路層上傳遞數據包;
    2) 客戶端必須通過負載均衡器的VIP訪問集群;
    3) 物理服務器必須有到客戶端的路由(即使客戶端沒有到物理服務器的路由)。因為從物理服務器返回到客戶商的包,將直接發送,無須通過負載均衡器轉發。

    VS-DR模式下,客戶端通常與負載均衡器和物理服務器位于不同的網絡中,而且每一個物理服務器擁有自己對外的路由表。在下面這個簡單的例子中,所有的機器都在192.168.1.0這個網絡,物理服務器不需要設置默認路。網絡拓撲結構如下圖所示:


    IP分配如下表所示:


    表21-3 .IP分配


    機 器 IP 地 址
    客戶端 本機IP:CIP 192.168.1.254

    負載均衡器 本機IP:DIP 192.168.1.1
    虛擬IP:VIP 192.168.1.110(ARP與客戶端使用)

    物理服務器1 本機IP:RIP 192.168.1.2
    虛擬IP:VIP 192.168.1.110(不ARP)

    物理服務器2 本機IP:RIP 192.168.1.3
    虛擬IP:VIP 192.168.1.110(不ARP)

    物理服務器3 本機IP:RIP 192.168.1.4
    虛擬IP:VIP 192.168.1.110(不ARP)


    5.2.VS-DR良好的擴展性

    VS-NAT方法受限于經過負載均衡器的每一包都必須重寫,用這種方法最大的數據吞吐量受限于負載均衡器的環境。(如一臺Pentium機器,快速以太網,最大的數據吞吐量為80M/秒)而且增加物理服務器的數量并不能增加這個最大數據吞吐量。而使用VS-DR模式,速度限制則在每個物理服務器與Internet連接的包處理能力,而對負載均衡器的要求不大,因為其只需處理簡單的包。在VS-DR的模式下,能夠增加更多物理服務器以提高系統能力。


    6 VS-TUN模式


    6.1.總論

    VS-Tun是LVS獨創的的,它是基于VS-DR發展的。具有良好的可擴展性和服務吞吐量。

    使用VS-Tun方式的話,必須采Linux作為物理服務器,而負載均衡器將IP請求重新包裝成IPIP包后發給
    物理服務器。所以物理服務器必須能夠解IPIP包裝才能,現在只有Linux操作系統能處理IPIP包(IP隧道技
    術)。

    不同于VS-DR,VS-Tun方案允許物理服務器與負載均衡器在不同的網絡上,甚至允許所有的機器都在
    單獨的網絡上,那怕物理服務器位于不同的國家(例如:做一個項目的FTP站點鏡像)。在這種情況下物理
    服務器將產生源地址=虛擬IP地址,目標地址=客戶機IP地址的IP包。

    如果物理服務器與負載均衡器位于相同的網絡上,那么VS-DR和VS-Tun是等價的。VS-DR更具有靈活
    性,因為大多數操作系統都可以用來構建物理服務器。

    6.2. VS-Tun實例

    以下是一個VS-Tun的IP配置實例。VS-Tun提供的最大方便性就是不需要服務器與客戶端位于同一個網絡上,僅需要客戶端能尋徑(有路由)到負載均衡器,物理服務器能尋徑(有路由)到客戶機。(返回的包直接從物理服務器到客戶端,無須再經過負載均衡器)

    通常使用VS-Tun模式時,客戶端是與負載均衡器、物理服務器位于不同網絡上的,而且每一臺服務器
    有一個通往外界的路由。

    IP分配如下表所示:


    表21-4.IP分配


    機 器 IP 地 址
    客戶端 本機IP:CIP 192.168.1.254

    負載均衡器 本機IP:DIP 192.168.1.1
    虛擬IP:VIP 192.168.1.110(ARP與客戶端使用)

    物理服務器1 本機IP:RIP 192.168.1.2
    虛擬IP:VIP 192.168.1.110(隧道技術,不ARP)

    物理服務器2 本機IP:RIP 192.168.1.3
    虛擬IP:VIP 192.168.1.110(隧道技術,不ARP)

    物理服務器3 本機IP:RIP 192.168.1.4
    虛擬IP:VIP 192.168.1.110(隧道技術,不ARP)

    …… …… ……
    物理服務器n 本機IP:RIP 192.168.1.n+1
    虛擬IP:VIP 192.168.1.110(隧道技術,不ARP)


    6.3.配置VS-Tun

    1)編輯配置文件模板lvs_tun.conf后,進行配置:
    $ ./configure_lvs.pl lvs_nat.conf
    2)在物理服務器上運行:
    $ . ./etc/rc.d/rc.lvs_tun
    3)將配置文件放到/etc/rc.d或/etc/init.d目錄下。
    4)檢查ipvsadm、ifconfig ?a和netstat ?rn的輸出,檢查服務/IP地址是否正確,如果有誤,請修改后重新運行腳本。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>