1 前言騰訊云負(fù)載均衡(Cloud LoadBalancer),簡稱CLB, 負(fù)載均衡通過設(shè)置虛擬服務(wù)地址(VIP)將來自客戶端的請求按照指定方式分發(fā)到其關(guān)聯(lián)的多臺后端云服務(wù)器,服務(wù)器將請求的響應(yīng)返回給負(fù)載均衡器,負(fù)載均衡再將響應(yīng)發(fā)送到用戶,這樣就向互聯(lián)網(wǎng)用戶隱藏了內(nèi)網(wǎng)結(jié)構(gòu),阻止了用戶直接訪問后端云服務(wù)器,使得服務(wù)器更加安全,可以阻止對核心網(wǎng)絡(luò)棧和運(yùn)行在其它端口服務(wù)的攻擊。通過其作用可以看出負(fù)載均衡作為整個(gè)服務(wù)的網(wǎng)關(guān)入口,那么保證其服務(wù)在高性能的前提下既穩(wěn)定又可靠顯得至關(guān)重要。本文為大家介紹一下騰訊云公網(wǎng)負(fù)載均衡高可靠,高性能的背后做了哪些事。
2 騰訊云負(fù)載均衡基礎(chǔ)架構(gòu) 2.1 多級容災(zāi)的架構(gòu),實(shí)現(xiàn)高可靠首先對負(fù)載均衡對流量轉(zhuǎn)發(fā)有個(gè)大致的認(rèn)識,如圖1客戶端發(fā)起請求來訪問負(fù)載均衡提供的公網(wǎng)VIP,CLB再根據(jù)指定的方式通過內(nèi)網(wǎng)轉(zhuǎn)發(fā)給后端的服務(wù)器。
在CLB的技術(shù)架構(gòu)圖出來前,大家可以想象一下,對于轉(zhuǎn)發(fā)設(shè)備最關(guān)鍵的要有交換機(jī)和路由器,以及真正的轉(zhuǎn)發(fā)機(jī)器,那么交換機(jī)和路由器如何部署才能有更高的可靠性呢,轉(zhuǎn)發(fā)機(jī)器以怎樣的結(jié)構(gòu)組合才能帶來高性能呢,簡單的串行網(wǎng)絡(luò)架構(gòu)必然存在單點(diǎn)故障,其作為關(guān)鍵路徑在出現(xiàn)故障時(shí),對整個(gè)服務(wù)來講是致命的,所以多交換機(jī)部署,轉(zhuǎn)發(fā)機(jī)器集群方式部署勢在必行。如圖2左所示,在單機(jī)房得交換機(jī)和轉(zhuǎn)發(fā)機(jī)器的部署情況如下,其中LD為轉(zhuǎn)發(fā)機(jī)器,以下4臺機(jī)器為一個(gè)集群,從圖中可以看到,當(dāng)某個(gè)設(shè)備發(fā)生故障,通過OSPF路由協(xié)議來快速偵測故障設(shè)備,進(jìn)而秒級剔除相關(guān)設(shè)備,一個(gè)集群中多個(gè)LD對長連接進(jìn)行同步,當(dāng)其中LD掛了之后,請求落在另外一臺LD上,對于用戶來講請求還是無損。從架構(gòu)上也可以看出交換機(jī)層面的容災(zāi),而不同的交換機(jī)部署在不同的機(jī)架位,實(shí)現(xiàn)了機(jī)架層面的容災(zāi),當(dāng)LD發(fā)生故障時(shí),快速剔除故障轉(zhuǎn)發(fā)機(jī)器,并能夠自動(dòng)添加備用的機(jī)器,快速的補(bǔ)齊性能損耗。
從單機(jī)房的介紹來看,還未有多機(jī)房的容災(zāi)能力,該能力對于云廠商來講也是必不可少的,IDC A 和IDC B會配置相同的VIP等相關(guān)信息,BGP A 和BGP B出口通過配置不同的COST 值來確定主備,當(dāng)某個(gè)IDC 出現(xiàn)了故障,那么自動(dòng)調(diào)整COST值進(jìn)行切換,可以在秒級實(shí)現(xiàn)不同IDC間容災(zāi)能力。以上即為多級容災(zāi)的架構(gòu)。
從架構(gòu)上實(shí)現(xiàn)了高可靠。
2.1 數(shù)據(jù)流轉(zhuǎn)發(fā)方式,滿足多種網(wǎng)絡(luò)結(jié)構(gòu)公網(wǎng)負(fù)載均衡當(dāng)前支持的協(xié)議主要有TCP、UDP、HTTP、HTTPS,對于四層和七層的協(xié)議,轉(zhuǎn)發(fā)的方式和結(jié)構(gòu)不一樣,騰訊云的云主機(jī)從之前的基礎(chǔ)網(wǎng)絡(luò)逐步向私有網(wǎng)絡(luò)過渡,為了滿足多種網(wǎng)絡(luò)結(jié)構(gòu),CLB的數(shù)據(jù)轉(zhuǎn)發(fā)方式如圖3所示:
對于HTTP、HTTPS協(xié)議的支持情況,四層集群下面還會有一層七層集群,基于NGINX開源項(xiàng)目來做的七層轉(zhuǎn)發(fā),具體與后端CVM的通信方式一致,對于物理網(wǎng)絡(luò)的機(jī)器,轉(zhuǎn)發(fā)到母機(jī)的數(shù)據(jù)包格式是IPIP包,經(jīng)母機(jī)上的KO進(jìn)行解包,并將解封的IP包轉(zhuǎn)給后端的CVM,對于私有網(wǎng)絡(luò)的CVM,封包格式為GRE包,對應(yīng)的母機(jī)上依賴于VPC.KO來解包,從CVM上可以觀察到收到的IP包的中SourceIP 段無論是四層還是七層都是真實(shí)的來源IP,其實(shí)就是在封包的時(shí)候,將真實(shí)的客戶端IP封裝到了IPIP包或者GRE包中,從而滿足用戶獲取真實(shí)來源IP的訴求。
3 五大關(guān)鍵功能 3.1 強(qiáng)大過載保護(hù)功能,保證數(shù)據(jù)整體安全當(dāng)前集群本身的性能在未引入DPDK版本之前 ,單機(jī)的可以達(dá)到160萬PPS,連接數(shù)1.2個(gè)億,入帶寬可以到達(dá)10Gbps,當(dāng)真實(shí)數(shù)據(jù)超過最大能力之后,為了不發(fā)生雪崩故障,集群的自我保護(hù)能力就顯得極為重要,最小程度上減小對客戶帶來的影響。如圖,內(nèi)核中的管理模塊tvsadm會周期的去拉取統(tǒng)計(jì)數(shù)據(jù),當(dāng)全局統(tǒng)計(jì)數(shù)據(jù)接近了警戒高水位(后臺配置例如不能超過最大性能的70%),那么此時(shí)就會開啟QOS能力,給規(guī)則設(shè)定一個(gè)配額,然后根據(jù)令牌桶算法進(jìn)行配額限速,將整理的數(shù)據(jù)保持在安全范圍之內(nèi),直到整體數(shù)據(jù)趨于安全。
3.2 抗DDoS大規(guī)模攻擊,強(qiáng)力保護(hù)后端安全當(dāng)有大量synflood攻擊時(shí),由于后端母機(jī)的連接池資源有限制,而且后端CVM本身的性能也不固定,所以在有大量DDoS攻擊時(shí)不能直接透傳給后端服務(wù)器,此時(shí)CLB會暫時(shí)代理TCP連接,知道三次握手真正完成客戶端發(fā)來數(shù)據(jù)后,才與后端CVM進(jìn)行真正的交互。
而CLB本身資源也是有限制的,此時(shí)就不能全部代理半連接的握手,具體方式即通過LRU淘汰機(jī)制來實(shí)現(xiàn)半連接隊(duì)列的維護(hù)?赡苡幸粋(gè)疑問,當(dāng)有更大量的DDoS攻擊來了之后,將如何應(yīng)對呢?這個(gè)時(shí)候公司級抗DDoS攻擊平臺此時(shí)就會大顯身手了,大禹系統(tǒng),對DDoS攻擊進(jìn)行識別清洗,當(dāng)過大對平臺造成影響時(shí)會封堵該VIP。維護(hù)半連接隊(duì)列的算法流程如下圖所示:
3.3 高性能的HTTPS,提升活動(dòng)運(yùn)營及防攻擊能力 HTTPS為什么訪問比較慢為什么消耗CPU呢?因?yàn)樗苤,HTTPS的重,體現(xiàn)在如下幾方面:
1. 大量的計(jì)算。SSL的每一個(gè)字節(jié)都涉及到較為復(fù)雜的計(jì)算。
2. TLS協(xié)議的封裝和解析。HTTPS所有數(shù)據(jù)都是按照TLS record格式進(jìn)行封裝的。所有的數(shù)據(jù)都需要經(jīng)過如下步驟才能發(fā)送和讀。
3. 協(xié)議的網(wǎng)絡(luò)交互。從TLS的握手過程可以看出,即使這個(gè)過程不需要進(jìn)行任何計(jì)算,TLS的握手也需要至少1個(gè)以上的網(wǎng)絡(luò)交互。
HTTPS在計(jì)算方面的影響,包括計(jì)算原理和計(jì)算性能的優(yōu)化?傮w來說,HTTPS主要有如下計(jì)算環(huán)節(jié):a.非對稱密鑰交換。比如RSA, Diffie-Hellman, ECDHE.這類算法的主要作用就是根據(jù)客戶端和服務(wù)端不對稱的信息,經(jīng)過高強(qiáng)度的密鑰生成算法,生成對稱密鑰,用于加解密后續(xù)應(yīng)用消息。 b.對稱加解密。服務(wù)端使用密鑰A對響應(yīng)內(nèi)容進(jìn)行加密,客戶端使用密鑰A對該加密內(nèi)容進(jìn)行解密。反之亦然。c.消息一致性驗(yàn)證。每一段加密的內(nèi)容都會附加一個(gè)MAC消息,即消息認(rèn)證碼。簡單地說就是對內(nèi)容進(jìn)行的安全哈希計(jì)算。接收方需要校驗(yàn)MAC碼。d.證書簽名校驗(yàn)。這個(gè)階段主要發(fā)生在客戶端校驗(yàn)服務(wù)端證書身份時(shí)。
HTTPS協(xié)議中最消耗CPU計(jì)算資源的就是密鑰交換過程中的RSA計(jì)算。也是我們優(yōu)化的最主要對象。具體方式a. 算法分離。將最消耗CPU計(jì)算的過程分離出來,不使用本地CPU來計(jì)算。b.并行計(jì)算。使用SSL硬件加速卡或者空閑CPU并行計(jì)算,提升計(jì)算效率。c.異步代理。算法分離和計(jì)算的過程是異步的,不需要同步等待SSL加速計(jì)算的結(jié)果返回。
通過異步代理完成RSA的私鑰計(jì)算。ssl完全握手性能由18000qps提升到了63000qps,提升了~3.5倍。節(jié)省了接入機(jī)器成本,提升了業(yè)務(wù)的活動(dòng)運(yùn)營及防攻擊能力。
3.4 DPDK版本優(yōu)化,負(fù)載均衡整體性能飛躍 DPDK全稱為Date plane development kit,是一個(gè)用來進(jìn)行包數(shù)據(jù)處理加速的軟件庫。與傳統(tǒng)的數(shù)據(jù)包處理相比,DPDK具有以下特點(diǎn):
1) 輪詢:在包處理時(shí)避免中斷上下文切換的開銷,
2) 用戶態(tài)驅(qū)動(dòng):規(guī)避不必要的內(nèi)存拷貝和系統(tǒng)調(diào)用,便于快速迭代優(yōu)化
3) 親和性與獨(dú)占:特定任務(wù)可以被指定只在某個(gè)核上工作,避免線程在不同核間頻繁切換,保證更多的cache命中
4) 降低訪存開銷:利用內(nèi)存大頁HUGEPAGE降低TLB miss,利用內(nèi)存多通道交錯(cuò)訪問提高內(nèi)存訪問有效帶寬
5) 軟件調(diào)優(yōu):cache行對齊,預(yù)取數(shù)據(jù),多元數(shù)據(jù)批量操作
經(jīng)過這樣的優(yōu)化后負(fù)載均衡整體的性能參數(shù)有了質(zhì)的飛躍,如下圖
3.5與騰訊天御合作,實(shí)現(xiàn)百萬級黑名單功能
某公司接入騰訊云,其中一個(gè)需求是防惡意刷票,對惡意用戶的請求進(jìn)行屏蔽,其業(yè)務(wù)架構(gòu)如圖:請求從cdn節(jié)點(diǎn)到負(fù)載均衡后,真實(shí)的客戶端IP會在HTTP協(xié)議的頭部中攜帶,此時(shí)負(fù)載均衡從七層協(xié)議的頭部中獲取真實(shí)客戶端IP,進(jìn)而實(shí)施攔截。對于一個(gè)規(guī)則來講,負(fù)載均衡的設(shè)置黑名單的數(shù)量級在百萬級別,通過與騰訊天御系統(tǒng)合作,后端CVM拿到真實(shí)客戶端IP后,轉(zhuǎn)給天御,天御系統(tǒng)進(jìn)行模型訓(xùn)練,判斷ip是否是惡意請求,進(jìn)而將黑名單寫入負(fù)載均衡,從而實(shí)現(xiàn)百萬級黑名單的功能。
4 總結(jié)本文介紹了騰訊云負(fù)載均衡的高可靠、高性能的背后一些技術(shù)細(xì)節(jié),在滿足用戶需求的基礎(chǔ)上提供更加讓用戶滿意的負(fù)載均衡是團(tuán)隊(duì)一直不變的信念。后續(xù)提供更多的技術(shù)細(xì)節(jié)與大家分享。
文章內(nèi)容僅供閱讀,不構(gòu)成投資建議,請謹(jǐn)慎對待。投資者據(jù)此操作,風(fēng)險(xiǎn)自擔(dān)。
2024年的Adobe MAX 2024發(fā)布會上,Adobe推出了最新版本的Adobe Creative Cloud。
奧維云網(wǎng)(AVC)推總數(shù)據(jù)顯示,2024年1-9月明火炊具線上零售額94.2億元,同比增加3.1%,其中抖音渠道表現(xiàn)優(yōu)異,同比有14%的漲幅,傳統(tǒng)電商略有下滑,同比降低2.3%。
“以前都要去窗口辦,一套流程下來都要半個(gè)月了,現(xiàn)在方便多了!”打開“重慶公積金”微信小程序,按照提示流程提交相關(guān)材料,僅幾秒鐘,重慶市民曾某的賬戶就打進(jìn)了21600元。
華碩ProArt創(chuàng)藝27 Pro PA279CRV顯示器,憑借其優(yōu)秀的性能配置和精準(zhǔn)的色彩呈現(xiàn)能力,為您的創(chuàng)作工作帶來實(shí)質(zhì)性的幫助,雙十一期間低至2799元,性價(jià)比很高,簡直是創(chuàng)作者們的首選。
9月14日,2024全球工業(yè)互聯(lián)網(wǎng)大會——工業(yè)互聯(lián)網(wǎng)標(biāo)識解析專題論壇在沈陽成功舉辦。