LVS学习笔记--概念
?? ?最近在學(xué)習(xí)南非螞蟻大大的博客上的一些文章,主要在學(xué)習(xí)LVS,現(xiàn)在就是將自己學(xué)習(xí)到的內(nèi)容記錄下來,做一個(gè)學(xué)習(xí)筆記與大家分享。
?? ?南非螞蟻大大的博客是http://ixdba.blog.51cto.com
?一、LVS概念
LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務(wù)器。這是一個(gè)由章文嵩博士發(fā)起的一個(gè)開源項(xiàng)目,它的官方網(wǎng)站是http://www.linuxvirtualserver.org/.現(xiàn)在LVS已經(jīng)是Linux內(nèi)核標(biāo)準(zhǔn)的一部分。
使用LVS可以達(dá)到的技術(shù)目標(biāo)是:通過LVS達(dá)到的負(fù)載均衡技術(shù)和Linux操作系統(tǒng)實(shí)現(xiàn)一個(gè)高性能高可用的Linux服務(wù)器群集,它具有良好的可靠性,可拓展性和可操作性。從而以低廉的成本實(shí)現(xiàn)最優(yōu)的性能。
LVS從1998年開始,發(fā)展到現(xiàn)在已經(jīng)是一個(gè)比較成熟的項(xiàng)目了。利用LVS技術(shù)可以實(shí)現(xiàn)高性能,高可壓縮的網(wǎng)路服務(wù),例如WWW服務(wù),FTP服務(wù),MAIL服務(wù)等。比較著名的就是www.linux.com以及www.real.com.
二、LVS的體系架構(gòu)
使用LVS架設(shè)的服務(wù)器集群系統(tǒng)有三個(gè)部分組成:最前端的負(fù)載均衡層(Loader Balancer),中間的服務(wù)器群組層,用Server Array表示,最底層的數(shù)據(jù)共享存儲層,用Shared Storage表示。在用戶看來所有的應(yīng)用都是透明的,用戶只是在使用一個(gè)虛擬服務(wù)器提供的高性能服務(wù)。
LVS的體系架構(gòu)如圖:
LVS的各個(gè)層次的詳細(xì)介紹:
Load Balancer層:位于整個(gè)集群系統(tǒng)的最前端,有一臺或者多臺負(fù)載調(diào)度器(Director Server)組成,LVS模塊就安裝在Director Server上,而Director的主要作用類似于一個(gè)路由器,它含有完成LVS功能所設(shè)定的路由表,通過這些路由表把用戶的請求分發(fā)給Server Array層的應(yīng)用服務(wù)器(Real Server)上。同時(shí),在Director Server上還要安裝對Real Server服務(wù)的監(jiān)控模塊Ldirectord,此模塊用于監(jiān)測各個(gè)Real Server服務(wù)的健康狀況。在Real Server不可用時(shí)把它從LVS路由表中剔除,恢復(fù)時(shí)重新加入。
Server Array層:由一組實(shí)際運(yùn)行應(yīng)用服務(wù)的機(jī)器組成,Real Server可以是WEB服務(wù)器、MAIL服務(wù)器、FTP服務(wù)器、DNS服務(wù)器、視頻服務(wù)器中的一個(gè)或者多個(gè),每個(gè)Real Server之間通過高速的LAN或分布在各地的WAN相連接。在實(shí)際的應(yīng)用中,Director Server也可以同時(shí)兼任Real Server的角色。
Shared Storage層:是為所有Real Server提供共享存儲空間和內(nèi)容一致性的存儲區(qū)域,在物理上,一般有磁盤陣列設(shè)備組成,為了提供內(nèi)容的一致性,一般可以通過NFS網(wǎng)絡(luò)文件系統(tǒng)共享數(shù)據(jù),但是NFS在繁忙的業(yè)務(wù)系統(tǒng)中,性能并不是很好,此時(shí)可以采用集群文件系統(tǒng),例如Red hat的GFS文件系統(tǒng),oracle提供的OCFS2文件系統(tǒng)等。
?
從整個(gè)LVS結(jié)構(gòu)可以看出,Director Server是整個(gè)LVS的核心,目前,用于Director Server的操作系統(tǒng)只能是Linux和FreeBSD,linux2.6內(nèi)核不用任何設(shè)置就可以支持LVS功能,而FreeBSD作為Director Server的應(yīng)用還不是很多,性能也不是很好。對于Real Server,幾乎可以是所有的系統(tǒng)平臺,Linux、windows、Solaris、AIX、BSD系列都能很好的支持。
?
三、 ?LVS集群的特點(diǎn)
3.1 ?IP負(fù)載均衡與負(fù)載調(diào)度算法
1.IP負(fù)載均衡技術(shù)
負(fù)載均衡技術(shù)有很多實(shí)現(xiàn)方案,有基于DNS域名輪流解析的方法、有基于客戶端調(diào)度訪問的方法、有基于應(yīng)用層系統(tǒng)負(fù)載的調(diào)度方法,還有基于IP地址的調(diào)度方法,在這些負(fù)載調(diào)度算法中,執(zhí)行效率最高的是IP負(fù)載均衡技術(shù)。
LVS的IP負(fù)載均衡技術(shù)是通過IPVS模塊來實(shí)現(xiàn)的,IPVS是LVS集群系統(tǒng)的核心軟件,它的主要作用是:安裝在Director Server上,同時(shí)在Director Server上虛擬出一個(gè)IP地址,用戶必須通過這個(gè)虛擬的IP地址訪問服務(wù)。這個(gè)虛擬IP一般稱為LVS的VIP,即Virtual IP。訪問的請求首先經(jīng)過VIP到達(dá)負(fù)載調(diào)度器,然后由負(fù)載調(diào)度器從Real Server列表中選取一個(gè)服務(wù)節(jié)點(diǎn)響應(yīng)用戶的請求。
當(dāng)用戶的請求到達(dá)負(fù)載調(diào)度器后,調(diào)度器如何將請求發(fā)送到提供服務(wù)的Real Server節(jié)點(diǎn),而Real Server節(jié)點(diǎn)如何返回?cái)?shù)據(jù)給用戶,是IPVS實(shí)現(xiàn)的重點(diǎn)技術(shù),IPVS實(shí)現(xiàn)負(fù)載均衡機(jī)制有三種,分別是NAT、TUN和DR,詳述如下:?
? VS/NAT: 即(Virtual Server via Network Address Translation)
也就是網(wǎng)絡(luò)地址翻譯技術(shù)實(shí)現(xiàn)虛擬服務(wù)器,當(dāng)用戶請求到達(dá)調(diào)度器時(shí),調(diào)度器將請求報(bào)文的目標(biāo)地址(即虛擬IP地址)改寫成選定的Real Server地址,同時(shí)報(bào)文的目標(biāo)端口也改成選定的Real Server的相應(yīng)端口,最后將報(bào)文請求發(fā)送到選定的Real Server。在服務(wù)器端得到數(shù)據(jù)后,Real Server返回?cái)?shù)據(jù)給用戶時(shí),需要再次經(jīng)過負(fù)載調(diào)度器將報(bào)文的源地址和源端口改成虛擬IP地址和相應(yīng)端口,然后把數(shù)據(jù)發(fā)送給用戶,完成整個(gè)負(fù)載調(diào)度過程。
可以看出,在NAT方式下,用戶請求和響應(yīng)報(bào)文都必須經(jīng)過Director Server地址重寫,當(dāng)用戶請求越來越多時(shí),調(diào)度器的處理能力將稱為瓶頸。
? VS/TUN :即(Virtual Server via IP Tunneling)?
也就是IP隧道技術(shù)實(shí)現(xiàn)虛擬服務(wù)器。它的連接調(diào)度和管理與VS/NAT方式一樣,只是它的報(bào)文轉(zhuǎn)發(fā)方法不同,VS/TUN方式中,調(diào)度器采用IP隧道技術(shù)將用戶請求轉(zhuǎn)發(fā)到某個(gè)Real Server,而這個(gè)Real Server將直接響應(yīng)用戶的請求,不再經(jīng)過前端調(diào)度器,此外,對Real Server的地域位置沒有要求,可以和Director Server位于同一個(gè)網(wǎng)段,也可以是獨(dú)立的一個(gè)網(wǎng)絡(luò)。因此,在TUN方式中,調(diào)度器將只處理用戶的報(bào)文請求,集群系統(tǒng)的吞吐量大大提高。
? VS/DR: 即(Virtual Server via Direct Routing)?
也就是用直接路由技術(shù)實(shí)現(xiàn)虛擬服務(wù)器。它的連接調(diào)度和管理與VS/NAT和VS/TUN中的一樣,但它的報(bào)文轉(zhuǎn)發(fā)方法又有不同,VS/DR通過改寫請求報(bào)文的MAC地址,將請求發(fā)送到Real Server,而Real Server將響應(yīng)直接返回給客戶,免去了VS/TUN中的IP隧道開銷。這種方式是三種負(fù)載調(diào)度機(jī)制中性能最高最好的,但是必須要求Director Server與Real Server都有一塊網(wǎng)卡連在同一物理網(wǎng)段上。
2.負(fù)載調(diào)度算法
上面我們談到,負(fù)載調(diào)度器是根據(jù)各個(gè)服務(wù)器的負(fù)載情況,動態(tài)地選擇一臺Real Server響應(yīng)用戶請求,那么動態(tài)選擇是如何實(shí)現(xiàn)呢,其實(shí)也就是我們這里要說的負(fù)載調(diào)度算法,根據(jù)不同的網(wǎng)絡(luò)服務(wù)需求和服務(wù)器配置,IPVS實(shí)現(xiàn)了如下八種負(fù)載調(diào)度算法,這里我們詳細(xì)講述最常用的四種調(diào)度算法,剩余的四種調(diào)度算法請參考其它資料。
? 輪叫調(diào)度(Round Robin)
“輪叫”調(diào)度也叫1:1調(diào)度,調(diào)度器通過“輪叫”調(diào)度算法將外部用戶請求按順序1:1的分配到集群中的每個(gè)Real Server上,這種算法平等地對待每一臺Real Server,而不管服務(wù)器上實(shí)際的負(fù)載狀況和連接狀態(tài)。?
? 加權(quán)輪叫調(diào)度(Weighted Round Robin)?
“加權(quán)輪叫”調(diào)度算法是根據(jù)Real Server的不同處理能力來調(diào)度訪問請求。可以對每臺Real Server設(shè)置不同的調(diào)度權(quán)值,對于性能相對較好的Real Server可以設(shè)置較高的權(quán)值,而對于處理能力較弱的Real Server,可以設(shè)置較低的權(quán)值,這樣保證了處理能力強(qiáng)的服務(wù)器處理更多的訪問流量。充分合理的利用了服務(wù)器資源。同時(shí),調(diào)度器還可以自動查詢Real Server的負(fù)載情況,并動態(tài)地調(diào)整其權(quán)值。?
? 最少鏈接調(diào)度(Least Connections)?
“最少連接”調(diào)度算法動態(tài)地將網(wǎng)絡(luò)請求調(diào)度到已建立的鏈接數(shù)最少的服務(wù)器上。如果集群系統(tǒng)的真實(shí)服務(wù)器具有相近的系統(tǒng)性能,采用“最小連接”調(diào)度算法可以較好地均衡負(fù)載。?
? 加權(quán)最少鏈接調(diào)度(Weighted Least Connections)?
“加權(quán)最少鏈接調(diào)度”是“最少連接調(diào)度”的超集,每個(gè)服務(wù)節(jié)點(diǎn)可以用相應(yīng)的權(quán)值表示其處理能力,而系統(tǒng)管理員可以動態(tài)的設(shè)置相應(yīng)的權(quán)值,缺省權(quán)值為1,加權(quán)最小連接調(diào)度在分配新連接請求時(shí)盡可能使服務(wù)節(jié)點(diǎn)的已建立連接數(shù)和其權(quán)值成正比。
其它四種調(diào)度算法分別為:基于局部性的最少鏈接(Locality-Based Least Connections)、帶復(fù)制的基于局部性最少鏈接(Locality-Based Least Connections with Replication)、目標(biāo)地址散列(Destination Hashing)和源地址散列(Source Hashing),對于這四種調(diào)度算法的含義,本文不再講述,如果想深入了解這其余四種調(diào)度策略的話,可以登陸LVS中文站點(diǎn)zh.linuxvirtualserver.org,查閱更詳細(xì)的信息。
3.2 高可用性
LVS是一個(gè)基于內(nèi)核級別的應(yīng)用軟件,因此具有很高的處理性能,用LVS構(gòu)架的負(fù)載均衡集群系統(tǒng)具有優(yōu)秀的處理能力,每個(gè)服務(wù)節(jié)點(diǎn)的故障不會影響整個(gè)系統(tǒng)的正常使用,同時(shí)又實(shí)現(xiàn)負(fù)載的合理均衡,使應(yīng)用具有超高負(fù)荷的服務(wù)能力,可支持上百萬個(gè)并發(fā)連接請求。如配置百兆網(wǎng)卡,采用VS/TUN或VS/DR調(diào)度技術(shù),整個(gè)集群系統(tǒng)的吞吐量可高達(dá)1Gbits/s;如配置千兆網(wǎng)卡,則系統(tǒng)的最大吞吐量可接近10Gbits/s。
3.3 高可靠性
LVS負(fù)載均衡集群軟件已經(jīng)在企業(yè)、學(xué)校等行業(yè)得到了很好的普及應(yīng)用,國內(nèi)外很多大型的、關(guān)鍵性的web站點(diǎn)也都采用了LVS集群軟件,所以它的可靠性在實(shí)踐中得到了很好的證實(shí)。有很多以LVS做的負(fù)載均衡系統(tǒng),運(yùn)行很長時(shí)間,從未做過重新啟動。這些都說明了LVS的高穩(wěn)定性和高可靠性。
3.4 適用環(huán)境
LVS對前端Director Server目前僅支持Linux和FreeBSD系統(tǒng),但是支持大多數(shù)的TCP和UDP協(xié)議,支持TCP協(xié)議的應(yīng)用有:HTTP,HTTPS ,FTP,SMTP,,POP3,IMAP4,PROXY,LDAP,SSMTP等等。支持UDP協(xié)議的應(yīng)用有:DNS,NTP,ICP,視頻、音頻流播放協(xié)議等。
LVS對Real Server的操作系統(tǒng)沒有任何限制,Real Server可運(yùn)行在任何支持TCP/IP的操作系統(tǒng)上,包括Linux,各種Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS和Windows等。
3.5 開源軟件?
LVS集群軟件是按GPL(GNU Public License)許可證發(fā)行的自由軟件,因此,使用者可以得到軟件的源代碼,并且可以根據(jù)自己的需要進(jìn)行各種修改,但是修改必須是以GPL方式發(fā)行。
?
?
?
轉(zhuǎn)載于:https://blog.51cto.com/menthe/570730
總結(jié)
以上是生活随笔為你收集整理的LVS学习笔记--概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SL 飞机游戏
- 下一篇: 网站服务器基本防范配置