現(xiàn)在越來越多的用戶購買了負(fù)載均衡設(shè)備,但是在交流中發(fā)現(xiàn)很多人對負(fù)載均衡的一些指標(biāo)和作用理解的并不是那么確切,這里闡述一下個人的一些理解。
1. 吞吐量
各廠家對負(fù)載均衡設(shè)備的每個型號都有標(biāo)稱的吞吐量,客戶購買了設(shè)備后,肯定是希望設(shè)備在實際環(huán)境中能夠達(dá)到標(biāo)稱的吞吐量。但這基本上是不可能的,原因很簡單,設(shè)備的任何指標(biāo)都是在最優(yōu)的條件下測出的該設(shè)備所能發(fā)揮出的最大性能,就吞吐量來說,各廠家都是通過相同大小的大包來測的(傳輸一個大包自然比傳輸多個小包需要設(shè)備處理的次數(shù)少),而實際環(huán)境中,各種大小的包都有,所以實際的吞吐量肯定要打個折扣。
那么是否會有廠家宣稱的吞吐量就是實際混合環(huán)境的吞吐量呢? 這基本不可能,第一,性能測試工具很難模擬出真實環(huán)境的流量,測出的值仍然跟實際不符,第二, 與商業(yè)利益不符,沒有任何一個廠家會有指標(biāo)的最大值不說,而卻宣稱一個較小的值。
那么是否真有人在實際環(huán)境中測出設(shè)備的真實性能跟宣稱性能差不多呢? 這是可能的,個人分析原因也是兩方面:第一,配置的應(yīng)用比較單一,例如負(fù)載均衡設(shè)備配置的是簡單的四層處理,而且服務(wù)器內(nèi)容就是一些靜態(tài)網(wǎng)頁。第二,跟產(chǎn)品設(shè)計的架構(gòu)有關(guān),例如本人以前看過某廠商的一款產(chǎn)品,主板跟交換板之間是通過一根1G的網(wǎng)線相連,雖然CPU處理的能力可能是大于1Gbps的,但是根據(jù)木板理論,該款設(shè)備的性能肯定不可能大于1Gbps,由于CPU可能還有空閑處理能力,即使對于實際環(huán)境的混合流量,CPU的處理結(jié)果還是能夠達(dá)到1G,瓶頸在于那根網(wǎng)線到底能否達(dá)到1G的傳輸能力,所以實際環(huán)境中我們才看到設(shè)備達(dá)到了宣稱的性能。 雖然是這樣,但是從產(chǎn)品設(shè)計角度來說,性能瓶頸應(yīng)該是來自于核心處理器的處理能力而不應(yīng)該是來自于交換帶寬的限制,這樣的設(shè)備其實是有設(shè)計缺陷的,所以只能當(dāng)作1G吞吐量的設(shè)備來賣。
2. bypass
這里說的bypass是指硬件bypass,而不是有些人說的某些流量bypass到某條路由,那種只能成為策略轉(zhuǎn)發(fā),不能用bypass字眼。 首先明確范圍,硬件bypass只能用于網(wǎng)絡(luò)中處于二層不參與三層路由的設(shè)備,例如我們看到的很多的流程設(shè)備,在網(wǎng)絡(luò)中僅僅配一個管理地址,而設(shè)備卻是二層串接在網(wǎng)絡(luò)中,對流經(jīng)的流量做帶寬管理,由于不參與三層路由交換,所以流控設(shè)備可以做到在設(shè)備壞掉或斷電的情況下把自己當(dāng)作網(wǎng)線一樣透傳流量。
負(fù)載均衡設(shè)備不存在bypass一說,因為負(fù)載均衡設(shè)備涉及到路由交換以及地址的訪問,舉個例子,服務(wù)器在負(fù)載均衡設(shè)備上映射的地址是1.1.1.1,所有用戶訪問的都是1.1.1.1,當(dāng)負(fù)載均衡設(shè)備斷電或壞掉,1.1.1.1這個地址在路由上就不存在了,即使bypass,用戶也訪問不到目的地址。同樣對于所有參與路由交換的設(shè)備來說,設(shè)備斷電或壞掉,那一段的路由判斷和轉(zhuǎn)發(fā)都沒了,訪問自然都斷了,這不關(guān)與二層是否能連通。所以我們可以總結(jié),網(wǎng)絡(luò)中任何參與的是三層以上協(xié)議的設(shè)備,都不可能bypass,請正確引用bypass這個概念。
3. VIP與Real Server配置數(shù)量無限
看到有些廠家的指標(biāo)中寫到可配置的VIP和Real Server配置數(shù)量無限,這世界上無限的東西很多,但絕對不可能是人造出來的,人的認(rèn)識是有限的,技術(shù)是有限的,這個大前提就決定了人造不出可以無限使用的東西。其實我們理解,那個指標(biāo)的正確意思是配置的數(shù)量無限制,無限制不代表沒有上限,但是某些客戶的招標(biāo)書中明確寫了要求某某的配置數(shù)量達(dá)到多少,你寫個無限制顯然無法讓人看出是否滿足了客戶要求,于是偷換概念寫成無限,無限當(dāng)然大于任何要求的指標(biāo),于是瞞天過海, 某些客戶還真被蒙混過去,甚至不求甚解地問,某某的指標(biāo)是無限的,你們能達(dá)到多少?資源的分配要根據(jù)實際能夠配置的東西來調(diào)度,也就是你預(yù)先要有個數(shù),沒有限制,那就代表可以隨便配,隨便配帶來的后果可能就不那么隨便了,你家里目前只有夠3個人吃的飯,你不問問你媽是否夠吃就帶了10個人來吃,客人走后你媽肯定要訓(xùn)斥你一頓。所以對于某些該有確定值卻沒有而亂稱無限的,是不負(fù)責(zé)任的一種做法。
4. 負(fù)載均衡就是要提高訪問速度
常有客戶買負(fù)載均衡設(shè)備之前要測試一下負(fù)載均衡的處理能力,測試的結(jié)果是比較一下通過負(fù)載均衡設(shè)備訪問服務(wù)器的平均響應(yīng)速度是否比直接訪問服務(wù)器的平均響應(yīng)速度快。個人認(rèn)為想法是好的,做法卻是錯的。負(fù)載均衡要做的是單臺服務(wù)器的處理能力不夠,再加幾臺服務(wù)器通過負(fù)載均衡設(shè)備來提高你的系統(tǒng)的整體處理能力。這個處理能力不能以響應(yīng)速度來衡量和對比。道理很簡單,我們用最簡單的訪問過程來對比說明。
1) 客戶->服務(wù)器
2) 客戶->負(fù)載均衡設(shè)備->服務(wù)器
假設(shè)服務(wù)器都空閑,客戶發(fā)包給服務(wù)器的時間為1,服務(wù)器返回包給客戶的時間為1,那么客戶直接訪問服務(wù)器的響應(yīng)速度為1+1=2。有了負(fù)載均衡設(shè)備后,多了一個環(huán)節(jié),還要加上負(fù)載均衡設(shè)備的處理和轉(zhuǎn)發(fā)時間,可能這個值來回加起來為0.1,那么客戶訪問響應(yīng)速度1+1+0.1=2.1, 這些值僅僅是個例子,實際上的處理時間應(yīng)該是微秒級。不管怎樣,在服務(wù)器同能空閑的情況下,多加一臺設(shè)備,對于處理速度應(yīng)該會有些許的影響,而不是說提高了,當(dāng)然說這種影響在大家處理時間都是微秒那樣的數(shù)量級下是微乎其微的。所以即使要這樣測試,也是要看二者的結(jié)果是否基本一致,而不是要看速度是否提高了。正確的做法是我先測出原來單臺服務(wù)器最大能并發(fā)處理多少用戶多少連接數(shù),例如2000個并發(fā)連接,超出這個值服務(wù)器就性能不夠了,同時得出在這個情況下的平均響應(yīng)速度,然后增加服務(wù)器,加大并發(fā)連接,看在做負(fù)載均衡的情況下總體處理能力是否隨著服務(wù)器的增加而成倍增加,并且響應(yīng)速度也基本保持一致。
那么負(fù)載均衡設(shè)備是否能夠提高響應(yīng)速度呢? 通過一些優(yōu)化功能還是可以實現(xiàn)的,例如連接優(yōu)化,HTTP壓縮,SSL加速,內(nèi)容緩存等,針對不同的用戶需求和環(huán)境,的確是可以達(dá)到優(yōu)化和加速效果的,但這跟某些用戶希望簡單的負(fù)載分發(fā)就提高響應(yīng)速度是不同的,需要區(qū)分來理解。
當(dāng)然如果說你在用負(fù)載均衡設(shè)備前由于服務(wù)器負(fù)載過大,訪問很慢,而用負(fù)載均衡設(shè)備對多臺服務(wù)器做了負(fù)載均衡,訪問又變快了,從而說用了負(fù)載均衡設(shè)備提高了訪問速度,那就對了,這正是我們要做的。