自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大多數(shù)程序員并不知道,負(fù)載均衡器LVS是個(gè)啥?

云計(jì)算 虛擬化
針對(duì)高可伸縮、高可用網(wǎng)絡(luò)服務(wù)的需求,我們給出了基于IP層和基于內(nèi)容請(qǐng)求分發(fā)的負(fù)載平衡調(diào)度解決方法,并在Linux內(nèi)核中實(shí)現(xiàn)了這些方法,將一組服務(wù)器構(gòu)成一個(gè)實(shí)現(xiàn)可伸縮的、高可用網(wǎng)絡(luò)服務(wù)的虛擬服務(wù)器。

 1. Linux Virtual Server項(xiàng)目

針對(duì)高可伸縮、高可用網(wǎng)絡(luò)服務(wù)的需求,我們給出了基于IP層和基于內(nèi)容請(qǐng)求分發(fā)的負(fù)載平衡調(diào)度解決方法,并在Linux內(nèi)核中實(shí)現(xiàn)了這些方法,將一組服務(wù)器構(gòu)成一個(gè)實(shí)現(xiàn)可伸縮的、高可用網(wǎng)絡(luò)服務(wù)的虛擬服務(wù)器。

[[278786]]

虛擬服務(wù)器的體系結(jié)構(gòu)如圖2所示,一組服務(wù)器通過高速的局域網(wǎng)或者地理分布的廣域網(wǎng)相互連接,在它們的前端有一個(gè)負(fù)載調(diào)度器(Load Balancer)。負(fù)載調(diào)度器能無縫地將網(wǎng)絡(luò)請(qǐng)求調(diào)度到真實(shí)服務(wù)器上,從而使得服務(wù)器集群的結(jié)構(gòu)對(duì)客戶是透明的,客戶訪問集群系統(tǒng)提供的網(wǎng)絡(luò)服務(wù)就像訪 問一臺(tái)高性能、高可用的服務(wù)器一樣??蛻舫绦虿皇芊?wù)器集群的影響不需作任何修改。系統(tǒng)的伸縮性通過在服務(wù)機(jī)群中透明地加入和刪除一個(gè)節(jié)點(diǎn)來達(dá)到,通過檢 測(cè)節(jié)點(diǎn)或服務(wù)進(jìn)程故障和正確地重置系統(tǒng)達(dá)到高可用性。由于我們的負(fù)載調(diào)度技術(shù)是在Linux內(nèi)核中實(shí)現(xiàn)的,我們稱之為Linux虛擬服務(wù)器(Linux Virtual Server)。

 

大多數(shù)程序員并不知道,負(fù)載均衡器LVS是個(gè)啥?

 

圖2:虛擬服務(wù)器的結(jié)構(gòu)

在1998年5月,我成立了Linux Virtual Server的自由軟件項(xiàng)目,進(jìn)行Linux服務(wù)器集群的開發(fā)工作。同時(shí),Linux Virtual Server項(xiàng)目是國內(nèi)最早出現(xiàn)的自由軟件項(xiàng)目之一。

Linux Virtual Server項(xiàng)目的目標(biāo) :使用集群技術(shù)和Linux操作系統(tǒng)實(shí)現(xiàn)一個(gè)高性能、高可用的服務(wù)器,它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。

目前,LVS項(xiàng)目已提供了一個(gè)實(shí)現(xiàn)可伸縮網(wǎng)絡(luò)服務(wù)的Linux Virtual Server框架,如圖3所示。在LVS框架中,提供了含有三種IP負(fù)載均衡技術(shù)的IP虛擬服務(wù)器軟件IPVS、基于內(nèi)容請(qǐng)求分發(fā)的內(nèi)核Layer-7交 換機(jī)KTCPVS和集群管理軟件??梢岳肔VS框架實(shí)現(xiàn)高可伸縮的、高可用的Web、Cache、Mail和Media等網(wǎng)絡(luò)服務(wù);在此基礎(chǔ)上,可以開 發(fā)支持龐大用戶數(shù)的、高可伸縮的、高可用的電子商務(wù)應(yīng)用。

 

大多數(shù)程序員并不知道,負(fù)載均衡器LVS是個(gè)啥?

 

圖3:Linux虛擬服務(wù)器框架

3.1 IP虛擬服務(wù)器軟件IPVS

在調(diào)度器的實(shí)現(xiàn)技術(shù)中,IP負(fù)載均衡技術(shù)是效率最高的。在已有的IP負(fù)載均衡技術(shù)中有通過網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation)將一組服務(wù)器構(gòu)成一個(gè)高性能的、高可用的虛擬服務(wù)器,我們稱之為VS/NAT技術(shù)(Virtual Server via Network Address Translation),大多數(shù)商品化的IP負(fù)載均衡調(diào)度器產(chǎn)品都是使用此方法,如Cisco的LocalDirector、F5的Big/IP和 Alteon的ACEDirector。在分析VS/NAT的缺點(diǎn)和網(wǎng)絡(luò)服務(wù)的非對(duì)稱性的基礎(chǔ)上,我們提出通過IP隧道實(shí)現(xiàn)虛擬服務(wù)器的方法VS/TUN (Virtual Server via IP Tunneling),和通過直接路由實(shí)現(xiàn)虛擬服務(wù)器的方法VS/DR(Virtual Server via Direct Routing),它們可以極大地提高系統(tǒng)的伸縮性。所以,IPVS軟件實(shí)現(xiàn)了這三種IP負(fù)載均衡技術(shù),它們的大致原理如下(我們將在其他章節(jié)對(duì)其工作原 理進(jìn)行詳細(xì)描述),

Virtual Server via Network Address Translation(VS/NAT)

通過網(wǎng)絡(luò)地址轉(zhuǎn)換,調(diào)度器重寫請(qǐng)求報(bào)文的目標(biāo)地址,根據(jù)預(yù)設(shè)的調(diào)度算法,將請(qǐng)求分派給后端的真實(shí)服務(wù)器;真實(shí)服務(wù)器的響應(yīng)報(bào)文通過調(diào)度器時(shí),報(bào)文的源地址被重寫,再返回給客戶,完成整個(gè)負(fù)載調(diào)度過程。

Virtual Server via IP Tunneling(VS/TUN)

采用NAT技術(shù)時(shí),由于請(qǐng)求和響應(yīng)報(bào)文都必須經(jīng)過調(diào)度器地址重寫,當(dāng)客戶請(qǐng)求越來越多時(shí),調(diào)度器的處理能力將成為瓶頸。為了解決這個(gè)問題,調(diào)度器把請(qǐng)求報(bào) 文通過IP隧道轉(zhuǎn)發(fā)至真實(shí)服務(wù)器,而真實(shí)服務(wù)器將響應(yīng)直接返回給客戶,所以調(diào)度器只處理請(qǐng)求報(bào)文。由于一般網(wǎng)絡(luò)服務(wù)應(yīng)答比請(qǐng)求報(bào)文大許多,采用 VS/TUN技術(shù)后,集群系統(tǒng)的最大吞吐量可以提高10倍。

Virtual Server via Direct Routing(VS/DR)

VS/DR通過改寫請(qǐng)求報(bào)文的MAC地址,將請(qǐng)求發(fā)送到真實(shí)服務(wù)器,而真實(shí)服務(wù)器將響應(yīng)直接返回給客戶。同VS/TUN技術(shù)一樣,VS/DR技術(shù)可極大地 提高集群系統(tǒng)的伸縮性。這種方法沒有IP隧道的開銷,對(duì)集群中的真實(shí)服務(wù)器也沒有必須支持IP隧道協(xié)議的要求,但是要求調(diào)度器與真實(shí)服務(wù)器都有一塊網(wǎng)卡連 在同一物理網(wǎng)段上。

針對(duì)不同的網(wǎng)絡(luò)服務(wù)需求和服務(wù)器配置,IPVS調(diào)度器實(shí)現(xiàn)了如下八種負(fù)載調(diào)度算法:

輪叫(Round Robin)

調(diào)度器通過"輪叫"調(diào)度算法將外部請(qǐng)求按順序輪流分配到集群中的真實(shí)服務(wù)器上,它均等地對(duì)待每一臺(tái)服務(wù)器,而不管服務(wù)器上實(shí)際的連接數(shù)和系統(tǒng)負(fù)載。

加權(quán)輪叫(Weighted Round Robin)

調(diào)度器通過"加權(quán)輪叫"調(diào)度算法根據(jù)真實(shí)服務(wù)器的不同處理能力來調(diào)度訪問請(qǐng)求。這樣可以保證處理能力強(qiáng)的服務(wù)器處理更多的訪問流量。調(diào)度器可以自動(dòng)問詢真實(shí)服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。

最少鏈接(Least Connections)

調(diào)度器通過"最少連接"調(diào)度算法動(dòng)態(tài)地將網(wǎng)絡(luò)請(qǐng)求調(diào)度到已建立的鏈接數(shù)最少的服務(wù)器上。如果集群系統(tǒng)的真實(shí)服務(wù)器具有相近的系統(tǒng)性能,采用"最小連接"調(diào)度算法可以較好地均衡負(fù)載。

加權(quán)最少鏈接(Weighted Least Connections)

在集群系統(tǒng)中的服務(wù)器性能差異較大的情況下,調(diào)度器采用"加權(quán)最少鏈接"調(diào)度算法優(yōu)化負(fù)載均衡性能,具有較高權(quán)值的服務(wù)器將承受較大比例的活動(dòng)連接負(fù)載。調(diào)度器可以自動(dòng)問詢真實(shí)服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。

基于局部性的最少鏈接(Locality-Based Least Connections)

"基于局部性的最少鏈接" 調(diào)度算法是針對(duì)目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)。該算法根據(jù)請(qǐng)求的目標(biāo)IP地址找出該目標(biāo)IP地址最近使用的服務(wù)器,若該服務(wù)器 是可用的且沒有超載,將請(qǐng)求發(fā)送到該服務(wù)器;若服務(wù)器不存在,或者該服務(wù)器超載且有服務(wù)器處于一半的工作負(fù)載,則用"最少鏈接"的原則選出一個(gè)可用的服務(wù) 器,將請(qǐng)求發(fā)送到該服務(wù)器。

帶復(fù)制的基于局部性最少鏈接(Locality-Based Least Connections with Replication)

"帶復(fù)制的基于局部性最少鏈接"調(diào)度算法也是針對(duì)目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)。它與LBLC算法的不同之處是它要維護(hù)從一個(gè) 目標(biāo)IP地址到一組服務(wù)器的映射,而LBLC算法維護(hù)從一個(gè)目標(biāo)IP地址到一臺(tái)服務(wù)器的映射。該算法根據(jù)請(qǐng)求的目標(biāo)IP地址找出該目標(biāo)IP地址對(duì)應(yīng)的服務(wù) 器組,按"最小連接"原則從服務(wù)器組中選出一臺(tái)服務(wù)器,若服務(wù)器沒有超載,將請(qǐng)求發(fā)送到該服務(wù)器,若服務(wù)器超載;則按"最小連接"原則從這個(gè)集群中選出一 臺(tái)服務(wù)器,將該服務(wù)器加入到服務(wù)器組中,將請(qǐng)求發(fā)送到該服務(wù)器。同時(shí),當(dāng)該服務(wù)器組有一段時(shí)間沒有被修改,將最忙的服務(wù)器從服務(wù)器組中刪除,以降低復(fù)制的 程度。

目標(biāo)地址散列(Destination Hashing)

"目標(biāo)地址散列"調(diào)度算法根據(jù)請(qǐng)求的目標(biāo)IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請(qǐng)求發(fā)送到該服務(wù)器,否則返回空。

源地址散列(Source Hashing)

"源地址散列"調(diào)度算法根據(jù)請(qǐng)求的源IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請(qǐng)求發(fā)送到該服務(wù)器,否則返回空。

3.2 內(nèi)核Layer-7交換機(jī)KTCPVS

在基于IP負(fù)載調(diào)度技術(shù)中,當(dāng)一個(gè)TCP連接的初始SYN報(bào)文到達(dá)時(shí),調(diào)度器就選擇一臺(tái)服務(wù)器,將報(bào)文轉(zhuǎn)發(fā)給它。此后通過查發(fā)報(bào)文的IP和TCP報(bào)文頭地 址,保證此連接的后繼報(bào)文被轉(zhuǎn)發(fā)到該服務(wù)器。這樣,IPVS無法檢查到請(qǐng)求的內(nèi)容再選擇服務(wù)器,這就要求后端服務(wù)器組提供相同的服務(wù),不管請(qǐng)求被發(fā)送到哪 一臺(tái)服務(wù)器,返回結(jié)果都是一樣的。但是,在有些應(yīng)用中后端服務(wù)器功能不一,有的提供HTML文檔,有的提供圖片,有的提供CGI,這就需要基于內(nèi)容的調(diào)度 (Content-Based Scheduling)。

由于用戶空間TCP Gateway的開銷太大,我們提出在操作系統(tǒng)的內(nèi)核中實(shí)現(xiàn)Layer-7交換方法,來避免用戶空間與核心空間的切換和內(nèi)存復(fù)制的開銷。在Linux操作系統(tǒng)的內(nèi)核中,我們實(shí)現(xiàn)了Layer-7交換,稱之為KTCPVS(Kernel TCP Virtual Server)。目前,KTCPVS已經(jīng)能對(duì)HTTP請(qǐng)求進(jìn)行基于內(nèi)容的調(diào)度,但它還不很成熟,在其調(diào)度算法和各種協(xié)議的功能支持等方面,有大量的工作需要做。

雖然應(yīng)用層交換處理復(fù)雜,它的伸縮性有限,但應(yīng)用層交換帶來以下好處:

  • 相同頁面的請(qǐng)求被發(fā)送到同一服務(wù)器,可以提高單臺(tái)服務(wù)器的Cache命中率。
  • 一些研究[5]表明WEB訪問流中存在局部性。Layer-7交換可以充分利用訪問的局部性,將相同類型的請(qǐng)求發(fā)送到同一臺(tái)服務(wù)器,使得每臺(tái)服務(wù)器收到的請(qǐng)求具有更好的相似性,可進(jìn)一步提高單臺(tái)服務(wù)器的Cache命中率。
  • 后端服務(wù)器可運(yùn)行不同類型的服務(wù),如文檔服務(wù),圖片服務(wù),CGI服務(wù)和數(shù)據(jù)庫服務(wù)等。

2. LVS集群的特點(diǎn)

LVS集群的特點(diǎn)可以歸結(jié)如下:

功能

有實(shí)現(xiàn)三種IP負(fù)載均衡技術(shù)和八種連接調(diào)度算法的IPVS軟件。在IPVS內(nèi)部實(shí)現(xiàn)上,采用了高效的Hash函數(shù)和垃圾回收機(jī)制,能正確處理所調(diào)度報(bào)文相 關(guān)的ICMP消息(有些商品化的系統(tǒng)反而不能)。虛擬服務(wù)的設(shè)置數(shù)目沒有限制,每個(gè)虛擬服務(wù)有自己的服務(wù)器集。它支持持久的虛擬服務(wù)(如HTTP Cookie和HTTPS等需要該功能的支持),并提供詳盡的統(tǒng)計(jì)數(shù)據(jù),如連接的處理速率和報(bào)文的流量等。針對(duì)大規(guī)模拒絕服務(wù)(Deny of Service)攻擊,實(shí)現(xiàn)了三種防衛(wèi)策略。

有基于內(nèi)容請(qǐng)求分發(fā)的應(yīng)用層交換軟件KTCPVS,它也是在Linux內(nèi)核中實(shí)現(xiàn)。有相關(guān)的集群管理軟件對(duì)資源進(jìn)行監(jiān)測(cè),能及時(shí)將故障屏蔽,實(shí)現(xiàn)系統(tǒng)的高可用性。主、從調(diào)度器能周期性地進(jìn)行狀態(tài)同步,從而實(shí)現(xiàn)更高的可用性。

適用性

后端服務(wù)器可運(yùn)行任何支持TCP/IP的操作系統(tǒng),包括Linux,各種Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS和Windows NT/2000等。

負(fù)載調(diào)度器能夠支持絕大多數(shù)的TCP和UDP協(xié)議:

協(xié)議內(nèi) 容TCPHTTP,F(xiàn)TP,PROXY,SMTP,POP3,IMAP4,DNS,LDAP,HTTPS,SSMTP等UDPDNS,NTP,ICP,視頻、音頻流播放協(xié)議等無需對(duì)客戶機(jī)和服務(wù)器作任何修改,可適用大多數(shù)Internet服務(wù)。

性能

LVS服務(wù)器集群系統(tǒng)具有良好的伸縮性,可支持幾百萬個(gè)并發(fā)連接。配置100M網(wǎng)卡,采用VS/TUN或VS/DR調(diào)度技術(shù),集群系統(tǒng)的吞吐量可高達(dá)1Gbits/s;如配置千兆網(wǎng)卡,則系統(tǒng)的最大吞吐量可接近10Gbits/s。

可靠性

LVS服務(wù)器集群軟件已經(jīng)在很多大型的、關(guān)鍵性的站點(diǎn)得到很好的應(yīng)用,所以它的可靠性在真實(shí)應(yīng)用得到很好的證實(shí)。有很多調(diào)度器運(yùn)行一年多,未作一次重啟動(dòng)。

軟件許可證

LVS集群軟件是按GPL(GNU Public License)許可證發(fā)行的自由軟件,這意味著你可以得到軟件的源代碼,有權(quán)對(duì)其進(jìn)行修改,但必須保證你的修改也是以GPL方式發(fā)行。

 

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2021-03-01 19:13:45

YAML程序員數(shù)據(jù)

2010-04-22 10:46:40

Lvs負(fù)載均衡故障負(fù)載均衡器

2019-10-09 10:21:20

負(fù)載均衡架構(gòu)開發(fā)

2024-06-04 08:09:00

kubernetesHPA擴(kuò)縮容

2010-04-20 10:46:59

什么是負(fù)載均衡器

2023-02-27 15:44:17

Java開發(fā)技巧

2010-05-06 10:14:31

負(fù)載均衡器

2023-01-17 16:25:18

前端開發(fā)JSON

2017-05-19 14:45:01

OVN負(fù)載均衡器路由器

2022-07-14 08:53:48

MetalLBkubernetes

2023-03-30 13:32:51

負(fù)載均衡器HDFS

2024-02-22 10:11:00

負(fù)載均衡器反向代理

2023-02-13 16:39:45

Kubernetes容器負(fù)載均衡器

2016-09-13 17:14:30

2024-07-17 14:12:07

開源工具開發(fā)管理模板

2011-10-25 10:51:39

軟件級(jí)負(fù)載均衡器負(fù)載均衡LVS

2022-03-23 20:49:13

微信移動(dòng)應(yīng)用

2010-05-10 18:22:51

負(fù)載均衡器

2024-06-18 08:14:21

2018-05-08 15:30:46

程序員代碼框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)