天天看點

跨園區容災,更新不停服:高可用負載均衡叢集實踐

作者:方坤丁

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

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 叢集的出入口、咽喉要塞。開發商使用負載均衡器看中的無非是高可用能力、分發性能以及産品功能的豐富程度,咱先從高可用說起。

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

1、主備模式使用率低。一個叢集同時隻有一半的伺服器在工作,另外一半的機器處于冷備狀态,主節點不可用之後的切換速度相對較慢;

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

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

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

CLB一個叢集放在兩個接入交換機下,并且保證跨機架的容災,這樣保證在即便有單邊的交換機出故障或者單邊機架掉電時,本叢集的服務不受影響。同僚實作了叢集内session連接配接定期同步。這樣在别的伺服器接管故障機器的包時,client端的使用者體驗不受影響(如未登入的賬戶,在電商購物車裡的未付款商品不丢失)

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

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

跨園區容災,更新不停服:高可用負載均衡叢集實踐

容災演練實測:

1、協定切換(模拟交換機、CLB叢集任何一層故障導緻整個機房外網LB不可用),切換時間ping丢包不超過1秒,但長連結會瞬斷,結果符合預期。

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

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

跨園區容災,更新不停服:高可用負載均衡叢集實踐
跨園區容災,更新不停服:高可用負載均衡叢集實踐

CLB核心更新、Linux 核心缺陷、安全漏洞等原因,免不了要做後端叢集的重新開機更新,如果伺服器每年由于維護等原因重新開機一次,1小時的恢複時間就已經達不到99.99%的可用性了。

目前CLB已能做到客戶無感覺的,完成伺服器更新。更新時會選取叢集一半負載均衡器,停掉OSPF協定,實行“溫暖關機”。将其權重設定為0,進而保證資料包不會在經過這幾台LB。另一半LB叢集會接管預備關機LB的流量,叢集内連接配接同步,負責接管的LB上具有全量的連接配接資訊,連接配接不會中斷。更新完成後的LB将重新啟動ospf,加入叢集,正常服務。

騰訊雲負載均衡内部實作,利用了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萬。為廣大使用者提供了流暢、愉快的搶紅包體驗,實作了除夕夜系統零故障。

跨園區容災,更新不停服:高可用負載均衡叢集實踐

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解除安裝的性能要求

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

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

跨園區容災,更新不停服:高可用負載均衡叢集實踐

為了實作業務分離,分期樂使用七層負載均衡擷取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支援智能重定向,将超負載的請求,轉發到其它頁面,如門戶首頁。

遷移上雲從不是一蹴而就的,騰訊雲強大的專線互聯能力,滿足客戶逐漸從自建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%以上)。您還有什麼理由購買硬體負載均衡,或使用開源方案造輪子呢?快來試用吧:)

相關推薦

騰訊雲負載均衡的使用

騰訊雲容器服務的滾動更新使用簡介