昨天,騰訊百萬節點規模管控系統(TSC)誕生了!

2018-07-04,隨著時鐘的滴答,在10:30:33這一秒,騰訊第一個百萬規模管控系統-Tencent System Controller(TSC)誕生了,這絕對是一個劃時代的開端,一個新紀元的開始!

海量服務器管控系統,一般人心中是這樣理解的,規模至多幾萬臺,全部以Master/Slave模式並行部署,所有node上面跑著一樣的進程,進程之間有著複雜的控制和協調機制,支持node的有限伸縮(scalable)。

但這一次,我們真的要重新定義海量服務器管控系統的理念,各位客官請聽我娓娓道來。

一、多層立體分佈式

普通的分佈式系統如hadoop皆基於C/S兩層架構,並且總是要求網絡扁平,在100萬集群節點數、跨IDC等複雜環境下難以勝任。

昨天,騰訊百萬節點規模管控系統(TSC)誕生了!

當服務器數規模達到100萬時,顯然不能用常規的master-worker兩層設計思想,必須使用master-zone_master-workor-worker_descendant[1-N代]的多層級管理設計,還需要融合worker的級聯管理能力。

使用這種類似“中央-省-縣-鎮-村”行政區域的管理模式帶來一系列好處,zone_master大多數事務是自治的,自行管理和決策,只是很重要的信息才上報給master;反之master也只給zone_master下達任務描述等很關鍵的信息,任務執行後,各zone_master只需要向master報告總體的任務執行情況即可,這樣設計可以大幅減少網絡通信傳輸,提升了整個系統控制能力。

二、百萬服務器管控系統架構

昨天,騰訊百萬節點規模管控系統(TSC)誕生了!

對於普通C/S集群,在tcp server端我們用普通的NIO Server(java)、epoll/IOCP server(C/C++)即可輕鬆勝任。

但是對於百萬node並且都是活動連接的集群,上述架構明顯不能勝任。因此我們必須採取分治法+協程的策略對百萬級別的連接進行統一管理和調度。

昨天,騰訊百萬節點規模管控系統(TSC)誕生了!

1. Zone-Master反向連接

TSC系統不同於一般集群系統,是zone-master反向連接worker的,這樣做的好處如下:

(a) .響應及時。對於新任務可以直接發起一個新連接進行處理,而不需要在已有的連接中反覆協議交互。

(b) .worker部署方便。worker是被動接受連接,不需要配置server ip,所有worker安裝目錄和配置都是一樣的。

(c) .穩定性高。系統連接只處理標準的心跳信息及全局狀態維護,用戶任務都是在實時發起的新連接中處理,天然的信道分離使得程序邏輯處理簡單,系統穩定性高。

2. 多進程+epoll協程模式

分治法是處理複雜問題最樸素的哲學思想,對於一個100萬節點的集群,為了系統能高速響應,我們採取多機並行+每機併發多進程 +每進程併發協程的三重維度並行模式來處理,每個任務都可以被拆分在多個zone-master上跑,每個zone-master都採用多進程+epoll協程的模式對海量連接進行管理。

這種設計有如下優點:

(a) .穩定性高。在zone master上每個任務都是一個新的處理進程,進程裡再使用epoll+協程進行多個連接的狀態管理。一個任務進程的異常掛掉並不會影響其他任務進程,更不會影響整個系統的集群管理。

(b).高併發快速連接能力。由於任務被分而治之處理,並且頂層master會根據地域的親和值將不同的連接分發到最近的zone-master,然後zone-master再在進程內使用epoll+協程進行併發連接,使得系統最終性能異常高。經實測,如果4萬個worker狀態都很好,對4萬個worker全部執行一個集群任務,可在10秒內完成,這對傳統C/S集群來說簡直是逆天的節奏。

(c).可伸縮性強。當zone-master處理能力不足時,隨時可以擴容機器,並能將其他的zone-master所管理的節點遷移到新的zone-master,以減輕原來zone-master的負擔。

3. Worker級聯管理

昨天,騰訊百萬節點規模管控系統(TSC)誕生了!

每個worker機器上都有proxy和worker兩個進程,proxy只負責安全校驗以及轉發數據包,可以轉發給自己的worker進程,也可以轉發給別的worker進程,並支持無限層轉發。

明顯地,該架構使得系統能輕易地支持類似樹形的複雜網絡,並能穿透各種安全屏障及橋頭堡機器。

TSC支持任意網絡拓撲結構的組網,包括但不限於:

(a) .內外網混合組網

公司早期(2010-2012)內網跨城專線帶寬很小且非常昂貴,tsc支持公網連接南北城市組網,傳輸海量文件為公司節省了大量成本。

(b) .自營/合作機房混合組網

SNG有二十多萬的合作機房機器,由於安全需要,合作機房和自營機房在網絡上是隔離的,但現實中SNG存在大量的跨“自營機房-合作機房”文件及腳本傳輸執行的需求,tsc很好地滿足了SNG的該類管控需求。

(c) .普通區/devnet(開發網)混合組網

由於公司的安全策略,默認情況下devnet是隔離的。但對於發佈系統、編譯系統、持續集成系統來說,對devnet的自動化操作需求非常迫切,tsc很好地滿足了該類平臺的需求。

(d) .VPC多LAN重複組網

伴隨著公司業務高速發展,某些BG需要和第三方公司合作,需要對第三方公司的機器進行管理,比如發佈、監控等。第三方公司的機器位於自己獨立的內網中,IP和公司的運營大網IP有重複和交疊。為了支持這種應用場景,TSC除了IP尋址外,還增加了基於uid(唯一標識)尋址的功能,這就可以在原有騰訊運營的大網集群基礎上輕鬆橋接公司外的VPC私有網絡。

(e) .基於上述4種結構的聯合組網

基於各種歷史原因和現實需求,目前tsc的組網模式實際上為上述4種模式的混合體。用戶下發tsc任務時,不用關心網絡細節,只需要輸入ip或者uid即可,中間的路徑計算及路由過程完全由系統自動現實,因此用戶體驗相當好。

4. 海量拓撲管理

大型互聯網企業IDC管理網絡(全局視點)是一個超級複雜、內外網混合、多種安全策略應用、需多次穿透代理等的立體式網狀網絡。

IP路由技術不能解決本系統所面臨的困境,我們必須在軟件應用層面想辦法解決這個問題。

設計上可以使用DB持久化存儲網絡拓撲關係,並使用讀cache緩存網絡拓撲關係提高性能。同時採用預先申明路由策略與自動路由信息探測相結合的方法管理網絡拓撲結構。Master負載均衡時以預先申明路由信息為主,同時考慮實時路由信息權值進行下發任務。

這種動靜結合的方式能很好地解決超複雜的樹形網絡集群的管理及路由分發問題,同時又使得系統拓撲處於絕對的可控狀態,不會引發泛洪、雪崩等非中心化集群系統可能存在的風險。

三、多維度安全性

昨天,騰訊百萬節點規模管控系統(TSC)誕生了!

TSC安全架構圖

1. 強鑑權

Worker上的任何操作必須經過本地OS的權限系統驗證,權限控制與ssh類似(特殊的固定無危險的豁免腳本除外)。Linux默認會開啟pam增強鑑權,Windows使用LogOnUser API鑑權。系統還支持插件式自定義鑑權,譬如ssl公鑰鑑權。

2. 全通道ssl加密

Master、Zone-master、Workor、Worker_descendant所有節點通信均採用ssl加密,故TSC系統在通過公網轉發數據包時沒有安全風險,在內網中也沒有被監聽和篡改的風險。

3. 強化證書身份校驗

為了防止節點被偽造,系統中的所有節點相互通信都會檢查對端證書。證書不同於常規僅綁定url的證書,而是使用強化的證書域驗證,證書域(Common Name)分為 系統、角色、IP,如tsys_master_172.16.5.39,此證書僅能用於tsys業務master模塊而且IP必須為172.16.5.39,這種強化證書身份檢驗使得黑客根本無法偽造搭建系統節點。

4. 多重手段保證安全

除了整個外層通道的SSL加密,我們還對密碼等敏感字段進行了高強度的二次加密,並且融合了PAM/LDAP用戶驗證、協議用戶認證、sha512腳本驗證等多重安全手段保障系統安全。

TSC還支持加密密碼零保存、協議用戶驗證、服務器鑑定、防重放攻擊、全程審計等諸多安全特性。

四、無限伸縮能力

昨天,騰訊百萬節點規模管控系統(TSC)誕生了!

TSC的頂層調度層(master)採用set概念設計,每個set內都有獨立的執行單元,部署在獨立的物理機器上;多個set之間共享路由信息,在任務的分發、調度上,各個set的行為結果都是一致的,故可以看成是分佈式系統的最終一致性。

執行層會同時連接多個set,接受任意set的任務指令,並將指令最終送達Worker或者Worker_descendant執行。

當系統處理能力遇到瓶頸時,直接擴容一個新的set即可,由於全局路由信息量較小,而且是1:N模式同步,因此係統理論上是支持無限伸縮的。


分享到:


相關文章: