1. 程式人生 > >跨園區容災,升級不停服:高可用負載均衡集群實踐

跨園區容災,升級不停服:高可用負載均衡集群實踐

vrrp 優化 數量 一個 域名 live 內容 tro 靈活

歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~

本文由騰訊雲中間件團隊發表於雲+技術周刊特別版

作者:方坤丁

對於雲計算行業來說,雲服務的可用性和可擴展性是的檢測其服務質量的重要標準,也是最受用戶關註的兩大難題。各雲計算廠商針對容災、升級等需求的解決方案,最能夠體現其底層架構的實力。騰訊雲基於基礎架構的優勢,為分期樂、微信紅包等平臺提供技術支持,可以完美滿足如下三點需求:

1. 高可用能力,容災能力強,升級不停服

2. 可擴展性強,功能豐富,性能超高

3. 避免重復造輪子,性價比之王

近期,針對一些客戶對騰訊雲產品可用性的問詢,騰訊雲基礎產品團隊對負載均衡產品的原理做出詳細闡述,並希望通過對騰訊負載均衡集群底層架構的實現的講解分析,揭示其強勁性能、高可用性的根源所在。

一、什麽是負載均衡

單臺web 服務器如 apache、nginx 往往受限於自身的可擴展硬件能力。在面對海量的 web 請求時,需要引入load balance將訪問流量均勻的分發到後端的web集群,實現接入層的水平擴展。

Tencent 所有業務的負載均衡都是基於內部 Tencent GateWay 實現的,運行在標準x86服務器上,優點包括:自主研發、代碼可控。Tencent GateWay 對外的版本為 Cloud load balance,是多機 active 部署的,通過 BGP 發布VIP、local adress 路由、同步 DNS 信息等,實現集群負載通過路由 OSPF 將流量分發到不同的服務器上。

Load balance 作為 IT 集群的出入口、咽喉要塞。開發商使用負載均衡器看中的無非是高可用能力、分發性能以及產品功能的豐富程度,咱先從高可用說起。

二、高可用能力

a. 單集群容災能力

集群容災,簡單來說就是一個集群中一臺服務器倒掉不會影響整個集群的服務能力。LVS是國內廠商常用的開源框架,常用Keepalived完成主備模式的容災。有3個主要缺點:

1、主備模式利用率低。一個集群同時只有一半的服務器在工作,另外一半的機器處於冷備狀態,主節點不可用之後的切換速度相對較慢;

2、橫向平行擴展能力差。LVS服務集群擴展後轉發效率大幅下降;

3、依賴的VRRP協議存在腦裂的風險,需引入第三方仲裁節點,在金融領域、跨園區容災領域備受挑戰。

CLB在設計之初就考慮到這個問題,采用自研的ospf動態路由協議來實現集群的容災,若一臺機器倒掉,ospf協議可以保證在10s以內把機器從集群中剔除。

CLB一個集群放在兩個接入交換機下,並且保證跨機架的容災,這樣保證在即便有單邊的交換機出故障或者單邊機架掉電時,本集群的服務不受影響。同事實現了集群內session連接定期同步。這樣在別的服務器接管故障機器的包時,client端的用戶體驗不受影響(如未登錄的賬戶,在電商購物車裏的未付款商品不丟失)

b. 跨園區容災能力

為了滿足金融核心客戶,24小時核心業務持續服務的要求。騰訊雲負載均衡已在各金融專區(region)部署了多可用區(zone)容災套件,從路由器、交換機和服務器以及布線是全冗余的,任意一個路由器、交換機或者服務器接口掛掉之後,流量會從冗余組件提供服務。

當client端請求,經過CLB代理,訪問到後端CVM時,負載均衡的源 ip、目的ip、轉發策略、會話保持機制,健康探測機制等業務配置。會實時的同步到另一個zone的集群。當主可用區的機房故障、不可用時,負載均衡仍然有能力在非常短的時間內(小於10s)切換到另外一個備可用區的機房恢復服務能力,而業界產品的切換時間一般在分鐘級別。當主可用區恢復時,負載均衡同樣會自動切換到主可用區的機房提供服務。目前包括webank、富途證券等金融開發商已啟用跨園區容災能力。

技術分享圖片

容災演練實測:

1、協議切換(模擬交換機、CLB集群任何一層故障導致整個機房外網LB不可用),切換時間ping丟包不超過1秒,但長鏈接會瞬斷,結果符合預期。

2、在高可用機房的LB外網完全癱瘓發生切換,恢復後不主動回切,過程中癱瘓機房的任何操作不應影響另外一邊,結果符合預期。

3、模擬(與CLB開發商溝通好以後)流量回切操作,流量回切時間ping丟包不超過1秒,但長鏈接發生瞬斷,結果符合預期。

技術分享圖片

技術分享圖片

c. 升級不停服

CLB內核升級、Linux 內核缺陷、安全漏洞等原因,免不了要做後端集群的重啟升級,如果服務器每年由於維護等原因重啟一次,1小時的恢復時間就已經達不到99.99%的可用性了。

目前CLB已能做到客戶無感知的,完成服務器升級。升級時會選取集群一半負載均衡器,停掉OSPF協議,實行“溫暖關機”。將其權重設置為0,從而保證數據包不會在經過這幾臺LB。另一半LB集群會接管預備關機LB的流量,集群內連接同步,負責接管的LB上具有全量的連接信息,連接不會中斷。升級完成後的LB將重新啟動ospf,加入集群,正常服務。

三、高可擴展性

a. 性能強勁

1)流量分發

騰訊雲負載均衡內部實現,利用了intel DPDK提供的高性能多核開發框架、hugepage內存管理及ring buffer共享隊列方案,CLB團隊將DPDK常見的邏輯設計框架run-to-completion與pipeline結合。極大提升了流量分發的效率。

技術分享圖片

2017年1月28日,微信公布了用戶在除夕當天收發微信紅包的數量:142億個,而其收發峰值也已達到76萬每秒。面對億級的用戶數及百億級的紅包,系統的性能至關重要。而承載新年紅包的手機QQ和微信都接入了騰訊雲負載均衡集群,得到了有效的性能保障。CLB單集群可承受的TCP最大並發連接數超過1.2億,處理峰值40Gb/s的流量,每秒處理包量(QPS)可達600萬。為廣大用戶提供了流暢、愉快的搶紅包體驗,實現了除夕夜系統零故障。

技術分享圖片

2)Https加速

CLB性能上最大的一個難題是如何提升HTTPS的效率。同樣的物理設備下cpu滿負載,nginx SSL完全握手的性能不到普通HTTP性能的10%,如果說HTTP的性能是QPS 1萬,HTTPS可能只有幾百。為什麽會這麽低呢?

1、主要是RSA算法,它對性能的影響占了75%左右;

2、ECC橢圓曲線如果使用最常用的ECDHE算法,這部分約占整體計算量的7%;

3、對稱加解密和MAC計算,它們對性能影響比較小,是微秒級別的。

有了這些分析結論,優化的方向就很明確了:

1、減少完全握手(采用分布式session cache、全局Session ticket、自定義session ticket)

2、RSA異步代理計算

3、對稱加密優化

技術分享圖片

技術分享圖片

經過以上努力CLB團隊通過異步代理、減少完全握手等方式,釋放了CPU負載,。經過優化後,https請求的訪問時延與http請求相差無幾。單集群的單臺雲服務器完全握手性能可達到65000QPS,長連接時單臺服務器性能可以達到300000QPS。完美的支撐了紅包業務對SSL卸載的性能要求

b. 均衡能力豐富

我們來看看另一個case。分期樂一家專註於大學生分期購物的在線商城及金融服務提供商,提供分期貸款和還款服務。原分期樂(fenqile.com)的電商門戶,有三十多個業務模塊,通過多個二級域名、公網IP來分隔業務模塊。門戶的日PV超過億次,峰值帶寬超過5GB。

隨著訪問量的增多,其自建的nginx負載均衡集群已無法承載海量的請求,頻繁出現丟包、SSL卸載慢等額問題。為了保證其業務在九月開學大促、雙十一大促中平穩運行,分期樂引導部分流量到雲端架構中,通過負載均衡進行業務整合:

技術分享圖片

1)Content base的流量轉發

為了實現業務分離,分期樂使用七層負載均衡獲取HTTP/HTTPS頭部信息,並根據企業業務的實際需要,將請求路由到不同的後端服務器集群,從而讓負載均衡基於內容進行路由轉發。此外,采用了細致到轉發組級別的健康檢查,具有更強靈活性,滿足更多業務場景。

分期樂業務架構中,通過自定義域名/URL,實現了基於內容的路由轉發。根據業務類型,分期樂配置了a.fenqile.com/image 和a.fenqile.com/text 兩個URL路徑。通過識別請求內容,將後綴帶有/image的請求轉發到後端服務器群組1,並將後綴帶有/text的請求轉發到後端服務器群組2,從而保證了流量分發到不同的服務器群組中,減輕單個節點的負載。原來以上配置都需要在自建的nginx location中配置完成,轉發請求時消耗大量的cpu資源,現在交給CLB就好了。

CLB同時提供多元化的重定向能力,可以滿足電商的兩種場景:A.瀏覽器發起的http請求,強制轉換為https請求,加密更可靠。B.電商中商品更替、庫存售罄、後端某服務器負載過高(限制連接數、請求)等場景,常見的做法是直接拉黑頁面,給client端返回404、503。但這種體驗太差了,CLB支持智能重定向,將超負載的請求,轉發到其它頁面,如門戶首頁。

2)專線接入

遷移上雲從不是一蹴而就的,騰訊雲強大的專線互聯能力,滿足客戶逐步從自建IDC將業務遷移上雲的能力:

a.分期樂首先逐步將業務遷移到雲端,例如mall.fenqile.com這個域名會同時部署在自建idc及騰訊雲負載均衡集群中。首先通過weight權重的配比,將30%的流量遷移到騰訊雲,70%的流量回IDC。在穩定運營後,再逐步增加騰訊雲端的權重,替換原有數據中心IDC的服務。

b.當業務流量增大時,clb負載均衡無性能瓶頸,需要註意的時候後端的apache、nginx接入層需要做到無狀態,並借用autoscaling能力實現彈性伸縮。

大促當天,CLB支持了海量的並發訪問,分期樂門戶的日PV超過億次,峰值帶寬超過5Gbps,支持了過億的交易額。

四、性價比之王

傳統的硬件負載均衡,以F5為例,其缺點非常明顯, 從商業角度來說,硬件負載均衡產品過於昂貴,高端產品動輒五十萬甚至數百萬的價格對於用戶是幾乎不可承受的負擔,如下圖所示:

技術分享圖片

從使用角度來說,硬件負載均衡是黑盒,有BUG需要聯系廠商等待解決,時間不可控、新特性叠代緩慢且需資深人員維護升級,也是變相增加昂貴的人力成本。

騰訊雲在2015年起,將內部的負載均衡服務,正式對外商業化服務,單實例1個月的開銷為30元(費用節省達99%以上)。您還有什麽理由購買硬件負載均衡,或使用開源方案造輪子呢?快來試用吧:)

相關推薦

騰訊雲負載均衡的使用

騰訊雲容器服務的滾動升級使用簡介

問答

有哪些常見的數據層容災架構?

相關閱讀

關於客戶“前沿數控”數據完整性受損的技術復盤

就算雲廠商水逆了,服務也不能倒

軟件領域沒有銀彈 —— 建立正確的雲計算認知

此文已由作者授權騰訊雲+社區發布,原文鏈接:https://cloud.tencent.com/developer/article/1004789?fromSource=waitui

歡迎大家前往騰訊雲+社區或關註雲加社區微信公眾號(QcloudCommunity),第一時間獲取更多海量技術實踐幹貨哦~

海量技術實踐經驗,盡在雲加社區! https://cloud.tencent.com/developer?fromSource=waitui

跨園區容災,升級不停服:高可用負載均衡集群實踐