freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

負(fù)載均衡開源代碼分析-閱讀頁

2025-07-07 02:40本頁面
  

【正文】 定時器每隔1秒啟動連接回收程序來回收那些超時的連接。用三個時間大轉(zhuǎn)盤,第一個轉(zhuǎn)盤有1024個刻度,定時在1024秒鐘之內(nèi)的連接都掛接在第一個轉(zhuǎn)盤的各個刻度上;第二個轉(zhuǎn)盤有256個刻度,定時在[210,218)區(qū)間的落在第二個轉(zhuǎn)盤上;第三個轉(zhuǎn)盤有256個刻度,定時在[218,226)區(qū)間的落在第三個轉(zhuǎn)盤上。若指針正好轉(zhuǎn)了一圈,則對第二個轉(zhuǎn)盤當(dāng)前指針上的連接進行操作,根據(jù)他們的定時遷移到第一個轉(zhuǎn)盤上,再將指針順時針轉(zhuǎn)一格。使用這種慢定時器極大地提高了過期連接的回收問題。 統(tǒng)計數(shù)據(jù)模塊:Statistic Data用于記錄IPVS的統(tǒng)計信息 IP虛擬服務(wù)管理模塊:IPVSADM 相關(guān)組件1. IP虛擬服務(wù)器軟件:內(nèi)核IPVS代碼。3. KTCPVS七層交換軟件:內(nèi)核線程。VALinux()向客戶提供基于LVS的服務(wù)器集群系統(tǒng),并且提供相關(guān)的服務(wù)和支持。 Hash表216。 ICMP處理216。 鎖的處理和優(yōu)化216。 本地結(jié)點216。 防衛(wèi)策略216。選擇Hash表優(yōu)先Tree等復(fù)雜數(shù)據(jù)結(jié)構(gòu)的原因是Hash表的插入和刪除的復(fù)雜度為O(1),而Tree的復(fù)雜度為O(log(n))。當(dāng)對象在Hash表中均勻分布和Hash表的桶個數(shù)與對象個數(shù)一樣多時,Hash表的查找復(fù)雜度可以接近O(1)。連接Hash函數(shù)的選擇要考慮到兩個因素,一個是盡可能地降低Hash表的沖突率,另
一個是Hash函數(shù)的計算不是很復(fù)雜。所以,我們選擇客戶的來計算HashKey。
defineIP_VS_TAB_BITSCONFIG_IP_VS_TAB_BITSdefineIP_VS_TAB_SIZE(1IP_VS_TAB_BITS)defineIP_VS_TAB_MASK(IP_VS_TAB_SIZE1)inlineunsignedip_vs_hash_key(unsignedproto,unsignedaddr,unsignedport){ return(proto^addr^(addrIP_VS_TAB_BITS)^port)amp。}為了評價Hash函數(shù)的效率,我們從一個運行IPVS的真實站點上取當(dāng)前連接的樣本,它一共含有35652個并發(fā)連接。我們對素數(shù)乘法Hash函數(shù)進行分析,素數(shù)乘法Hash函數(shù)是通過乘以素數(shù)使得Hash鍵值達到較均勻的分布。IP_VS_TAB_MASK??梢?,現(xiàn)在IPVS中使用的移位異或Hash函數(shù)還比較高效。 垃圾回收為了將不再被使用的連接單元回收,我們在連接上設(shè)置一個定時器,當(dāng)連接超時,將該連接回收。因為連接的回收并不需要很精確,我們可以讓系統(tǒng)的定時器每隔1秒啟動連接回收程序來回收那些超時的連接。用三個時間
大轉(zhuǎn)盤,第一個轉(zhuǎn)盤有1024個刻度,定時在1024秒鐘之內(nèi)的連接都掛接在第一個轉(zhuǎn)盤的各個刻
度上;第二個轉(zhuǎn)盤有256個刻度,定時在[210,218)區(qū)間的落在第二個轉(zhuǎn)盤上;第三個轉(zhuǎn)盤有256
個刻度,定時在[218,226)區(qū)間的落在第三個轉(zhuǎn)盤上。若指針正好轉(zhuǎn)了一圈,則對第二個轉(zhuǎn)盤當(dāng)前指針上的連接進行操
作,根據(jù)他們的定時遷移到第一個轉(zhuǎn)盤上,再將指針順時針轉(zhuǎn)一格。使用這種慢定時器極大地提高了過期連接的回收問題。 ICMP處理負(fù)載調(diào)度器需要實現(xiàn)虛擬服務(wù)的ICMP處理,這樣進來的虛擬服務(wù)ICMP報文會被改寫或者轉(zhuǎn)發(fā)
給正確的后端服務(wù)器,出去的ICMP報文也會被正確地改寫和發(fā)送給客戶。ICMP消息可以發(fā)現(xiàn)在客戶和服務(wù)器間的MTU(MaximumTransferUnit)值。例如響應(yīng)報文的MTU為1500個字節(jié),在服務(wù)器到客戶的路徑中有一段線路的MTU值為512個字節(jié),這時路由器會向報文的源地址(即虛擬服務(wù)的地址)發(fā)送一個需要分段為512個字節(jié)的ICMP消息。這樣,服務(wù)器就會將原有的報文分段成512個字節(jié)進行發(fā)送,客戶得到服務(wù)的響應(yīng)。當(dāng)虛擬服務(wù)設(shè)置時,會將相應(yīng)的模塊調(diào)到內(nèi)核中。 鎖的處理和優(yōu)化在系統(tǒng)中虛擬服務(wù)規(guī)則的讀和寫需要鎖來保證處理的一致性。連接的Hash表是系統(tǒng)使用最頻繁的資源,任何一個報文到達
都需要查找連接Hash表。為此,我們引入有n個元素的鎖數(shù)組,每個鎖分別控制1/n的連接Hash表,增加鎖的粒度,降低鎖的沖
突率。在系統(tǒng)中n的缺省值為16。但是,有時由于功能或者性能方面的原因,一些來自同一用戶的不
同連接必須被分配到同一臺服務(wù)器上。在FTP使用中,客戶需要建立一個控制連接與服務(wù)器交互命令,建立其他數(shù)據(jù)連接來傳輸大量的數(shù)據(jù)。IPVS調(diào)度器可以檢查報文的內(nèi)容,可以獲得客戶通知FTP服務(wù)器它所監(jiān)聽的端口,然后在調(diào)度器的連接Hash表中建立一個相應(yīng)的連接,這樣服務(wù)器主動建立的連接可以經(jīng)過調(diào)度器。在VS/TUN或VS/DR下,IPVS調(diào)度器是在從客戶到服務(wù)器的半連接上,服務(wù)器將響應(yīng)報文直接發(fā)給客戶,IPVS調(diào)度器不可能獲得服務(wù)器告訴客戶它所監(jiān)聽的數(shù)據(jù)端口。當(dāng)一個SSL連接
請求建立時,一個SSL的鍵值(SSLKey)必須要在服務(wù)器和客戶進行選擇和交換,然后數(shù)據(jù)的
傳送都要經(jīng)過這個鍵值進行加密,來保證數(shù)據(jù)的安全性。如果IPVS調(diào)度器將以后的連接調(diào)度到其他服務(wù)器,這會導(dǎo)致連接的失敗。使用兩個模板來表示客戶和服務(wù)器之間的持久服務(wù),模板〈protocol,client_ip,0,virtual_ip,virtual_port,dest_ip,dest_port〉表示來自同一客戶client_ip到虛擬服務(wù)〈virtual_ip,virtual_port〉的任何連接都會被轉(zhuǎn)發(fā)到目標(biāo)服務(wù)器〈dest_ip,dest_port〉,模板〈protocol,client_ip,0,virtual_ip,0dest_ip,0〉表示來自同一客戶client_ip到虛擬服務(wù)器virtual_ip的任何連接都會被轉(zhuǎn)發(fā)到目標(biāo)服務(wù)器dest_ip,前者用于單一的持久服務(wù),后者用于所有端口的持久服務(wù)。在這個模板沒有過期前,所有來自這個客戶到相應(yīng)服務(wù)的任何連接會被發(fā)送到同一臺服務(wù)器。這個特征可以保證當(dāng)使用多個代理服務(wù)器的客戶訪問集群時,所有的連接會被發(fā)送到同一服務(wù)器。 本地結(jié)點本地結(jié)點(LocalNode)功能是讓調(diào)度器本身也能處理請求,在調(diào)度時就相當(dāng)一個本地結(jié)點一樣,在實現(xiàn)時就是根據(jù)配置將部分連接轉(zhuǎn)交給在用戶空間的服務(wù)進程,由服務(wù)進程處理完請求將結(jié)果返回給客戶。在分布式服務(wù)器中,我們可以利用IPVS調(diào)度的本地結(jié)點功能,在每臺服務(wù)器上加載IPVS調(diào)度模塊,在一般情況下,利用本地結(jié)點功能服務(wù)器處理到達的請求,當(dāng)管理程序發(fā)現(xiàn)服務(wù)器超載時,管理程序?qū)⑵渌?wù)器加入調(diào)度序列中,將部分請求調(diào)度到其他負(fù)載較輕的服務(wù)器上執(zhí)行。 數(shù)據(jù)統(tǒng)計在IPVS虛擬服務(wù)使用情況的統(tǒng)計上,我們實現(xiàn)了如下計數(shù)器:調(diào)度器所處理報文的總數(shù)調(diào)度器所處理連接的總數(shù)調(diào)度器中所有并發(fā)連接的數(shù)目每個虛擬服務(wù)處理連接的總數(shù)每個服務(wù)器所有并發(fā)連接的數(shù)目連接處理速率:在單位時間內(nèi),我們可以根據(jù)調(diào)度器所處理報文總數(shù)之差得出調(diào)度器的報文處理速率,根據(jù)調(diào)度器所處理連接總數(shù)之差得出調(diào)度器的連接處理速率。 防衛(wèi)策略IPVS調(diào)度器本身可以利用Linux內(nèi)核報文過濾功能設(shè)置成一個防火墻,只許可虛擬服務(wù)的報文進入,丟掉其他報文。但是,一般SYNFlooding攻擊調(diào)度器是非常困難的,假設(shè)系統(tǒng)有128Mbytes可用內(nèi)存,則系統(tǒng)可以容納一百萬個并發(fā)連接,每個處理接受SYN連接的超時(Timeout)為60秒,SYNFlooding主機需要生成16,666Packets/Second的流量,這往往需要分布式SYNFlooding工具,由許多個SYNFlooding主機同時來攻擊調(diào)度器。它們是
隨機丟掉連接、在調(diào)度報文前丟掉1/rate的報文、使用更安全的TCP狀態(tài)轉(zhuǎn)換和更短的超時。1和2表示自動狀態(tài),當(dāng)系統(tǒng)的有效內(nèi)存低于設(shè)置的閥值時,該防衛(wèi)策略被激活,開關(guān)從1狀態(tài)遷移到2狀態(tài);當(dāng)系統(tǒng)的有效內(nèi)存高于設(shè)置的閥值時,該防衛(wèi)策略被關(guān)掉,開關(guān)從2狀態(tài)遷移到1狀態(tài)。 調(diào)度器間的狀態(tài)同步盡管IPVS虛擬服務(wù)器軟件已被證明相當(dāng)魯棒,但調(diào)度器有可能因為其他原因而失效,如機器的硬件故障和網(wǎng)絡(luò)線路故障等。在現(xiàn)在的解決方案中,當(dāng)主調(diào)度器失效時,調(diào)度器上所有已建立連接的狀態(tài)信息將丟失,已有的連接會中斷,客戶需要向重新連接,從調(diào)度器才會將新連接調(diào)度到各個服務(wù)器上。為此,我們考慮一種高效機制將主調(diào)度器的狀態(tài)信息及時地復(fù)制到從調(diào)度器,當(dāng)從調(diào)度器接管時,絕大部分已建立的連接會持續(xù)下去。其結(jié)構(gòu)如圖所示在主從調(diào)度器的操作系統(tǒng)內(nèi)核中分別有兩個內(nèi)核線程ConnSyncd,主調(diào)度器上的ConnSyncd每隔1/10秒鐘喚醒一次從更新隊列中將更新信息讀出,將更新信息發(fā)給從調(diào)度器上的ConnSyncd,然后在從調(diào)度器內(nèi)核中生成相應(yīng)的狀態(tài)信息。主從調(diào)度器間狀態(tài)復(fù)制的代碼正在編寫中。 內(nèi)核中基于內(nèi)容的請求分發(fā)KTCPVSIPVS基本上是一種高效的Layer4交換機,它提供負(fù)載平衡的功能。此后通過查發(fā)報文的IP和TCP報文頭地址,保證此連接的后繼報文被轉(zhuǎn)發(fā)到相同的服務(wù)器。但是在有一些應(yīng)用中后端的服務(wù)器可能功能不一,有的是提供HTML文檔的Web服務(wù)器,有的是提供圖片的Web服務(wù)器,有的是提供CGI的Web服務(wù)器。由于用戶空間TCPGateway的開銷太大,導(dǎo)致其伸縮能力有限。在Linux操作系統(tǒng)的內(nèi)核中,我們實現(xiàn)了Layer7交換,稱之為KTCPVS(KernelTCPVirtualServer)。 什么是基于內(nèi)容的請求分發(fā)根據(jù)應(yīng)用層(Layer7)的信息調(diào)度TCP負(fù)載不是很容易實現(xiàn),對于所有的TCP服務(wù),應(yīng)用層信
息必須等到TCP連接建立(三次握手協(xié)議)以后才能獲得。來自客戶的TCP連接必須在交換機上被接受,建立在客戶與交換機之間TCP連接,來獲得應(yīng)用的請求信息?,F(xiàn)有兩種方法實現(xiàn)基于內(nèi)容的調(diào)度。另一種是TCP遷移(TCP Migration),將客戶到交換機TCP連接的交換機端遷移到服務(wù)器,這樣客戶與服務(wù)器就可以建立直接的TCP連接,但請求報文還需要經(jīng)過交換機調(diào)度到服務(wù)器,響應(yīng)報文直接返回給客戶。TCP遷移需要修改交換機的TCP/IP協(xié)議棧,同時需要修改所有后端服務(wù)器的TCP/IP協(xié)議棧,才能實現(xiàn)將TCP連接的一端從一臺機器及其遷移到另一臺上。但是,他們沒有提供任何其他文檔或研究報告描述他們的TCPHandoff協(xié)議和實現(xiàn)。雖然在交換機獲得客戶請求后,TCP遷移方法比較高效,但是該方法實現(xiàn)工作量大,要修改交換機和后端服務(wù)器的操作系統(tǒng),不具有一般性。TCP網(wǎng)關(guān)方法不需要更改服務(wù)器的操作系統(tǒng),服務(wù)器只要支持TCP/IP即可,它具有很好的通用性。對于一個請求報文和對應(yīng)的響應(yīng)報文,都需要四次內(nèi)核與用戶空間的切換,切換和內(nèi)存復(fù)制的開銷是非常高的,所以用戶空間TCPGateway的伸縮能力很有限,一般來說一個用戶空間TCPGateway只能調(diào)度三、四臺服務(wù)器,當(dāng)連接的速率到達每秒1000個連接時,TCPGateway本身會成為瓶頸。雖然Layer7交換比Layer4交換處理復(fù)雜,但Layer7交換帶來以下好處:相同頁面的請求被發(fā)送到同一臺的服務(wù)器,所請求的頁面很有可能會被服務(wù)器緩存,可以提高單臺服務(wù)器的主存Cache使用效率。Layer7交換可以充分利用訪問的局部性,將相同類型的請求發(fā)送到同一臺服務(wù)器,使得每個后端服務(wù)器收到的請求相似性好,有利于進一步提高單臺服務(wù)器的主存Cache使用效率,從而在有限的硬件配置下提高系統(tǒng)的整體性能。KTCPVS交換機和后端服務(wù)器通過LAN/WAN互聯(lián)。所以,KTCPVS集群的結(jié)構(gòu)對客戶是透明的,客戶訪問集群提供的網(wǎng)絡(luò)服務(wù)就像訪問一臺高性能、高可用的服務(wù)器一樣,故我們也稱之為虛擬服務(wù)器。 KTCPVS實現(xiàn),我們用內(nèi)核線程(Kernelthread)實現(xiàn)Layer7交換服務(wù)程序,并把所有的程序封裝在可裝卸的KTCPVS模塊?;趦?nèi)容調(diào)度的模塊被做成可裝卸的模塊(LoadableModule),不同的網(wǎng)絡(luò)服務(wù)可以使用不同的基于內(nèi)容調(diào)度模塊,如HTTP和RTSP等。可以通過tcpvsadm命令使得KTCPVS主線程生成多個子線程監(jiān)聽在某個端口。所有的請求和響應(yīng)數(shù)據(jù)處理都是在操作系統(tǒng)的內(nèi)核中進行的,所以沒有用戶空間與核心空間的切換開銷和內(nèi)存復(fù)制的開銷,其處理開銷比用戶空間的TCPGateway小很多。在服務(wù)器故障處理上,我們可以一種或者組合多種方法來檢測服務(wù)器或者網(wǎng)絡(luò)服務(wù)是否可用。二是資源監(jiān)測器定時地向每個服務(wù)進程發(fā)請求,若不能返回結(jié)果則說明該服務(wù)進程發(fā)生故障,資源監(jiān)測器通知調(diào)度器將該服務(wù)進程調(diào)度從KTCPVS調(diào)度列表中刪除。通過檢測節(jié)點或服務(wù)進程故障和正確地重置系統(tǒng),可以將部分結(jié)點或軟件故障對用戶屏蔽掉,從而實現(xiàn)系統(tǒng)的高可用性。 KTCPVS的負(fù)載均衡調(diào)度KTCPVS的負(fù)載均衡調(diào)度是以TCP連接為粒度的。在調(diào)度算法上,我們先實現(xiàn)了加權(quán)最小連接調(diào)度(WeightedLeastConnectionScheduling),因為該算法都較容易實現(xiàn),便于調(diào)試和測試。同時,在實際的性能測試中,這些調(diào)度算法可以用作比較?;诰植啃缘淖钚∵B接調(diào)度是假設(shè)后端服務(wù)器都是相同的,在后端服務(wù)器的負(fù)載基本平衡情況下,盡可能將相同的請求分到同一臺服務(wù)器,以提高后端服務(wù)器的訪問局部性,從而提高后端服務(wù)器的Cache命中率。216。 基于局部性的最小連接調(diào)度216。主要包括如下幾個核心步驟: 獲取支持LVS的內(nèi)核源代碼如果讀者需要使用LVS。目前主流的Linux內(nèi)核已經(jīng)支持LVS,只需要直接使用,不需要進行內(nèi)核的下載和更新工作。 下載軟件wget 解壓縮tar zxvf cd 建立編譯時必須的一個軟鏈接ln s/usr/src/kernels/編譯安裝make amp。 make install確認(rèn)安裝成功whereis ipvsadm to/usr/include/net下 cp libipvs/ s/usr/src/kernels/: INCLUDE = I/usr/src/linux/include I..I.
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1