昨天,腾讯百万节点规模管控系统(TSC)诞生了!
2018-07-04,隨著時(shí)鐘的滴答,在10:30:33這一秒,騰訊第一個(gè)百萬(wàn)規(guī)模管控系統(tǒng)-Tencent System Controller(TSC)誕生了,這絕對(duì)是一個(gè)劃時(shí)代的開端,一個(gè)新紀(jì)元的開始!
海量服務(wù)器管控系統(tǒng),一般人心中是這樣理解的,規(guī)模至多幾萬(wàn)臺(tái),全部以Master/Slave模式并行部署,所有node上面跑著一樣的進(jìn)程,進(jìn)程之間有著復(fù)雜的控制和協(xié)調(diào)機(jī)制,支持node的有限伸縮(scalable)。
但這一次,我們真的要重新定義海量服務(wù)器管控系統(tǒng)的理念,各位客官請(qǐng)聽我娓娓道來(lái)。
一、多層立體分布式
普通的分布式系統(tǒng)如hadoop皆基于C/S兩層架構(gòu),并且總是要求網(wǎng)絡(luò)扁平,在100萬(wàn)集群節(jié)點(diǎn)數(shù)、跨IDC等復(fù)雜環(huán)境下難以勝任。
?
當(dāng)服務(wù)器數(shù)規(guī)模達(dá)到100萬(wàn)時(shí),顯然不能用常規(guī)的master-worker兩層設(shè)計(jì)思想,必須使用master-zone_master-workor-worker_descendant[1-N代]的多層級(jí)管理設(shè)計(jì),還需要融合worker的級(jí)聯(lián)管理能力。
使用這種類似“中央-省-縣-鎮(zhèn)-村”行政區(qū)域的管理模式帶來(lái)一系列好處,zone_master大多數(shù)事務(wù)是自治的,自行管理和決策,只是很重要的信息才上報(bào)給master;反之master也只給zone_master下達(dá)任務(wù)描述等很關(guān)鍵的信息,任務(wù)執(zhí)行后,各zone_master只需要向master報(bào)告總體的任務(wù)執(zhí)行情況即可,這樣設(shè)計(jì)可以大幅減少網(wǎng)絡(luò)通信傳輸,提升了整個(gè)系統(tǒng)控制能力。
二、百萬(wàn)服務(wù)器管控系統(tǒng)架構(gòu)
對(duì)于普通C/S集群,在tcp server端我們用普通的NIO Server(java)、epoll/IOCP server(C/C++)即可輕松勝任。
但是對(duì)于百萬(wàn)node并且都是活動(dòng)連接的集群,上述架構(gòu)明顯不能勝任。因此我們必須采取分治法+協(xié)程的策略對(duì)百萬(wàn)級(jí)別的連接進(jìn)行統(tǒng)一管理和調(diào)度。
1.??Zone-Master反向連接
TSC系統(tǒng)不同于一般集群系統(tǒng),是zone-master反向連接worker的,這樣做的好處如下:
(a)?.響應(yīng)及時(shí)。對(duì)于新任務(wù)可以直接發(fā)起一個(gè)新連接進(jìn)行處理,而不需要在已有的連接中反復(fù)協(xié)議交互。
(b)?.worker部署方便。worker是被動(dòng)接受連接,不需要配置server ip,所有worker安裝目錄和配置都是一樣的。
(c)?.穩(wěn)定性高。系統(tǒng)連接只處理標(biāo)準(zhǔn)的心跳信息及全局狀態(tài)維護(hù),用戶任務(wù)都是在實(shí)時(shí)發(fā)起的新連接中處理,天然的信道分離使得程序邏輯處理簡(jiǎn)單,系統(tǒng)穩(wěn)定性高。
2.??多進(jìn)程+epoll協(xié)程模式
分治法是處理復(fù)雜問題最樸素的哲學(xué)思想,對(duì)于一個(gè)100萬(wàn)節(jié)點(diǎn)的集群,為了系統(tǒng)能高速響應(yīng),我們采取多機(jī)并行+每機(jī)并發(fā)多進(jìn)程?+每進(jìn)程并發(fā)協(xié)程的三重維度并行模式來(lái)處理,每個(gè)任務(wù)都可以被拆分在多個(gè)zone-master上跑,每個(gè)zone-master都采用多進(jìn)程+epoll協(xié)程的模式對(duì)海量連接進(jìn)行管理。
這種設(shè)計(jì)有如下優(yōu)點(diǎn):
(a)?.穩(wěn)定性高。在zone master上每個(gè)任務(wù)都是一個(gè)新的處理進(jìn)程,進(jìn)程里再使用epoll+協(xié)程進(jìn)行多個(gè)連接的狀態(tài)管理。一個(gè)任務(wù)進(jìn)程的異常掛掉并不會(huì)影響其他任務(wù)進(jìn)程,更不會(huì)影響整個(gè)系統(tǒng)的集群管理。
(b).高并發(fā)快速連接能力。由于任務(wù)被分而治之處理,并且頂層master會(huì)根據(jù)地域的親和值將不同的連接分發(fā)到最近的zone-master,然后zone-master再在進(jìn)程內(nèi)使用epoll+協(xié)程進(jìn)行并發(fā)連接,使得系統(tǒng)最終性能異常高。經(jīng)實(shí)測(cè),如果4萬(wàn)個(gè)worker狀態(tài)都很好,對(duì)4萬(wàn)個(gè)worker全部執(zhí)行一個(gè)集群任務(wù),可在10秒內(nèi)完成,這對(duì)傳統(tǒng)C/S集群來(lái)說(shuō)簡(jiǎn)直是逆天的節(jié)奏。
(c).可伸縮性強(qiáng)。當(dāng)zone-master處理能力不足時(shí),隨時(shí)可以擴(kuò)容機(jī)器,并能將其他的zone-master所管理的節(jié)點(diǎn)遷移到新的zone-master,以減輕原來(lái)zone-master的負(fù)擔(dān)。
3.??Worker級(jí)聯(lián)管理
每個(gè)worker機(jī)器上都有proxy和worker兩個(gè)進(jìn)程,proxy只負(fù)責(zé)安全校驗(yàn)以及轉(zhuǎn)發(fā)數(shù)據(jù)包,可以轉(zhuǎn)發(fā)給自己的worker進(jìn)程,也可以轉(zhuǎn)發(fā)給別的worker進(jìn)程,并支持無(wú)限層轉(zhuǎn)發(fā)。
明顯地,該架構(gòu)使得系統(tǒng)能輕易地支持類似樹形的復(fù)雜網(wǎng)絡(luò),并能穿透各種安全屏障及橋頭堡機(jī)器。
TSC支持任意網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的組網(wǎng),包括但不限于:
(a)?.內(nèi)外網(wǎng)混合組網(wǎng)
公司早期(2010-2012)內(nèi)網(wǎng)跨城專線帶寬很小且非常昂貴,tsc支持公網(wǎng)連接南北城市組網(wǎng),傳輸海量文件為公司節(jié)省了大量成本。
(b)?.自營(yíng)/合作機(jī)房混合組網(wǎng)
SNG有二十多萬(wàn)的合作機(jī)房機(jī)器,由于安全需要,合作機(jī)房和自營(yíng)機(jī)房在網(wǎng)絡(luò)上是隔離的,但現(xiàn)實(shí)中SNG存在大量的跨“自營(yíng)機(jī)房-合作機(jī)房”文件及腳本傳輸執(zhí)行的需求,tsc很好地滿足了SNG的該類管控需求。
(c)?.普通區(qū)/devnet(開發(fā)網(wǎng))混合組網(wǎng)
由于公司的安全策略,默認(rèn)情況下devnet是隔離的。但對(duì)于發(fā)布系統(tǒng)、編譯系統(tǒng)、持續(xù)集成系統(tǒng)來(lái)說(shuō),對(duì)devnet的自動(dòng)化操作需求非常迫切,tsc很好地滿足了該類平臺(tái)的需求。
(d)?.VPC多LAN重復(fù)組網(wǎng)
伴隨著公司業(yè)務(wù)高速發(fā)展,某些BG需要和第三方公司合作,需要對(duì)第三方公司的機(jī)器進(jìn)行管理,比如發(fā)布、監(jiān)控等。第三方公司的機(jī)器位于自己獨(dú)立的內(nèi)網(wǎng)中,IP和公司的運(yùn)營(yíng)大網(wǎng)IP有重復(fù)和交疊。為了支持這種應(yīng)用場(chǎng)景,TSC除了IP尋址外,還增加了基于uid(唯一標(biāo)識(shí))尋址的功能,這就可以在原有騰訊運(yùn)營(yíng)的大網(wǎng)集群基礎(chǔ)上輕松橋接公司外的VPC私有網(wǎng)絡(luò)。
(e)?.基于上述4種結(jié)構(gòu)的聯(lián)合組網(wǎng)
基于各種歷史原因和現(xiàn)實(shí)需求,目前tsc的組網(wǎng)模式實(shí)際上為上述4種模式的混合體。用戶下發(fā)tsc任務(wù)時(shí),不用關(guān)心網(wǎng)絡(luò)細(xì)節(jié),只需要輸入ip或者uid即可,中間的路徑計(jì)算及路由過程完全由系統(tǒng)自動(dòng)現(xiàn)實(shí),因此用戶體驗(yàn)相當(dāng)好。
4.??海量拓?fù)涔芾?/span>
大型互聯(lián)網(wǎng)企業(yè)IDC管理網(wǎng)絡(luò)(全局視點(diǎn))是一個(gè)超級(jí)復(fù)雜、內(nèi)外網(wǎng)混合、多種安全策略應(yīng)用、需多次穿透代理等的立體式網(wǎng)狀網(wǎng)絡(luò)。
IP路由技術(shù)不能解決本系統(tǒng)所面臨的困境,我們必須在軟件應(yīng)用層面想辦法解決這個(gè)問題。
設(shè)計(jì)上可以使用DB持久化存儲(chǔ)網(wǎng)絡(luò)拓?fù)潢P(guān)系,并使用讀cache緩存網(wǎng)絡(luò)拓?fù)潢P(guān)系提高性能。同時(shí)采用預(yù)先申明路由策略與自動(dòng)路由信息探測(cè)相結(jié)合的方法管理網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。Master負(fù)載均衡時(shí)以預(yù)先申明路由信息為主,同時(shí)考慮實(shí)時(shí)路由信息權(quán)值進(jìn)行下發(fā)任務(wù)。
這種動(dòng)靜結(jié)合的方式能很好地解決超復(fù)雜的樹形網(wǎng)絡(luò)集群的管理及路由分發(fā)問題,同時(shí)又使得系統(tǒng)拓?fù)涮幱诮^對(duì)的可控狀態(tài),不會(huì)引發(fā)泛洪、雪崩等非中心化集群系統(tǒng)可能存在的風(fēng)險(xiǎn)。
三、多維度安全性
TSC安全架構(gòu)圖
1.??強(qiáng)鑒權(quán)
Worker上的任何操作必須經(jīng)過本地OS的權(quán)限系統(tǒng)驗(yàn)證,權(quán)限控制與ssh類似(特殊的固定無(wú)危險(xiǎn)的豁免腳本除外)。Linux默認(rèn)會(huì)開啟pam增強(qiáng)鑒權(quán),Windows使用LogOnUser API鑒權(quán)。系統(tǒng)還支持插件式自定義鑒權(quán),譬如ssl公鑰鑒權(quán)。
2.??全通道ssl加密
Master、Zone-master、Workor、Worker_descendant所有節(jié)點(diǎn)通信均采用ssl加密,故TSC系統(tǒng)在通過公網(wǎng)轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí)沒有安全風(fēng)險(xiǎn),在內(nèi)網(wǎng)中也沒有被監(jiān)聽和篡改的風(fēng)險(xiǎn)。
3.??強(qiáng)化證書身份校驗(yàn)
為了防止節(jié)點(diǎn)被偽造,系統(tǒng)中的所有節(jié)點(diǎn)相互通信都會(huì)檢查對(duì)端證書。證書不同于常規(guī)僅綁定url的證書,而是使用強(qiáng)化的證書域驗(yàn)證,證書域(Common Name)分為 系統(tǒng)、角色、IP,如tsys_master_172.16.5.39,此證書僅能用于tsys業(yè)務(wù)master模塊而且IP必須為172.16.5.39,這種強(qiáng)化證書身份檢驗(yàn)使得黑客根本無(wú)法偽造搭建系統(tǒng)節(jié)點(diǎn)。
4.??多重手段保證安全
除了整個(gè)外層通道的SSL加密,我們還對(duì)密碼等敏感字段進(jìn)行了高強(qiáng)度的二次加密,并且融合了PAM/LDAP用戶驗(yàn)證、協(xié)議用戶認(rèn)證、sha512腳本驗(yàn)證等多重安全手段保障系統(tǒng)安全。
TSC還支持加密密碼零保存、協(xié)議用戶驗(yàn)證、服務(wù)器鑒定、防重放攻擊、全程審計(jì)等諸多安全特性。
四、無(wú)限伸縮能力
TSC的頂層調(diào)度層(master)采用set概念設(shè)計(jì),每個(gè)set內(nèi)都有獨(dú)立的執(zhí)行單元,部署在獨(dú)立的物理機(jī)器上;多個(gè)set之間共享路由信息,在任務(wù)的分發(fā)、調(diào)度上,各個(gè)set的行為結(jié)果都是一致的,故可以看成是分布式系統(tǒng)的最終一致性。
執(zhí)行層會(huì)同時(shí)連接多個(gè)set,接受任意set的任務(wù)指令,并將指令最終送達(dá)Worker或者Worker_descendant執(zhí)行。
當(dāng)系統(tǒng)處理能力遇到瓶頸時(shí),直接擴(kuò)容一個(gè)新的set即可,由于全局路由信息量較小,而且是1:N模式同步,因此系統(tǒng)理論上是支持無(wú)限伸縮的。
總結(jié)
以上是生活随笔為你收集整理的昨天,腾讯百万节点规模管控系统(TSC)诞生了!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 首发 | 腾讯把需求和代码统一的内幕
- 下一篇: 腾讯GaiaStack容器平台负责人罗韩