新浪微博付穩(wěn):DCP混合云平臺(tái)的架構(gòu)設(shè)計(jì)以及業(yè)務(wù)Docker化中的實(shí)踐經(jīng)驗(yàn)

51CTO
謝海平
【51CTO記者 謝海平 北京報(bào)道】隨著公有云的逐漸成熟,Docker技術(shù)的興起,各大企業(yè)紛紛升級(jí)企業(yè)IT架構(gòu)。新浪微博幾億+的用戶量,熱點(diǎn)事件給其帶來數(shù)倍流量瞬間暴增,如何不影響用戶體驗(yàn),又不增加巨大的服務(wù)器成...

51CTO記者 謝海平 北京報(bào)道隨著公有云的逐漸成熟,Docker技術(shù)的興起,各大企業(yè)紛紛升級(jí)企業(yè)IT架構(gòu)。新浪微博幾億+的用戶量,熱點(diǎn)事件給其帶來數(shù)倍流量瞬間暴增,如何不影響用戶體驗(yàn),又不增加巨大的服務(wù)器成本投入對(duì)技術(shù)是一個(gè)挑戰(zhàn)?;贒ocker的DCP混合云就在這樣的挑戰(zhàn)下應(yīng)運(yùn)而生,既解決了流量的瞬間暴增,同時(shí)又節(jié)約了大量的成本投入。
                                                   

【講師簡(jiǎn)介】付穩(wěn):新浪微博技術(shù)專家,14年初加入微博,混合云DCP項(xiàng)目技術(shù)負(fù)責(zé)人,借助公有云彈性計(jì)算資源平臺(tái)應(yīng)對(duì)爆發(fā)式峰值流量,基于Docker、Swarm等容器云技術(shù)體系實(shí)現(xiàn)分鐘級(jí)千臺(tái)規(guī)模機(jī)器創(chuàng)建及服務(wù)部署自動(dòng)化運(yùn)維體系。參與微博混合云、Feed混合云多機(jī)房部署改造、微博春晚保障工作、Feed性能優(yōu)化、HBase改造等重量級(jí)架構(gòu)改造項(xiàng)目,對(duì)高可用架構(gòu)、混合云平臺(tái)建設(shè)、多機(jī)房部署、應(yīng)用性能跟蹤及分析、業(yè)務(wù)技術(shù)保障等方面有深入研究。

51CTO新浪微博為什么會(huì)選擇采用混合云架構(gòu)的方式來做部署?Docker又為何成為首選?

付穩(wěn):每年的元旦、春晚、紅包飛等會(huì)為微博帶來巨大的流量挑戰(zhàn),這些業(yè)務(wù)場(chǎng)景的主要特點(diǎn)是:瞬間峰值高、持續(xù)時(shí)間短。每一次峰值事件的互動(dòng)時(shí)間在3小時(shí)左右,而明星事件、紅包飛等業(yè)務(wù),經(jīng)常會(huì)遇到高達(dá)多倍的瞬間峰值。微博IT的傳統(tǒng)應(yīng)對(duì)手段,主要是“靠提前申請(qǐng)足夠的設(shè)備保證冗余、降級(jí)非核心及周邊的業(yè)務(wù)”這兩種,除了需要提前預(yù)知相關(guān)IT成本外,還有業(yè)務(wù)負(fù)載飽和度不一、擴(kuò)縮容流程繁瑣且周期長(zhǎng)等問題。由此我們開始深入研究云計(jì)算相關(guān)技術(shù)以及如何利用公共云應(yīng)對(duì)流量瞬時(shí)高峰,這就是微博采用混合云架構(gòu)的起因。同時(shí),我們也調(diào)研了更多的業(yè)界實(shí)際案例如“12306搶票”“小米秒殺”,結(jié)果發(fā)現(xiàn)原有私有云比較困難的問題實(shí)際在公有云上比較容易解決,混合云也正在成為云計(jì)算的主要模式和發(fā)展方向,于是我們選擇基于 Docker 借助公有云彈性計(jì)算能力、改造原有多機(jī)房架構(gòu),構(gòu)建混合云架構(gòu)方式來做部署。

更快速的交付和部署、更高效的虛擬化、更輕松的遷移和擴(kuò)展、更簡(jiǎn)單的管理是我們選擇Docker主要原因。

51CTO:對(duì)于您談到的原有私有云比較困難的問題在公有云上可以比較容易解決,能談?wù)劸唧w的做法么?

付穩(wěn):我們內(nèi)網(wǎng)至少有上千臺(tái)服務(wù)器,當(dāng)訪問量在正常范圍時(shí),這些內(nèi)網(wǎng)的服務(wù)器足以支撐。但當(dāng)流量增加至數(shù)倍時(shí),對(duì)于微博來說,需在十幾分鐘內(nèi)完成上千臺(tái)服務(wù)節(jié)點(diǎn)擴(kuò)容。如果僅為應(yīng)對(duì)流量高峰而常備一兩千臺(tái)空閑服務(wù)器,這對(duì)公司來說成本巨大浪費(fèi)。如果利用公有云彈性資源優(yōu)勢(shì)按需彈性調(diào)度,同時(shí)改造原有運(yùn)維體系實(shí)現(xiàn)分鐘級(jí)私有云、公有云彈性擴(kuò)縮容,這樣就可以做到在成本可控前提下提供很好峰值流量應(yīng)對(duì)能力。

微博基于云計(jì)算等新技術(shù)設(shè)計(jì)與實(shí)現(xiàn)了新一代基于Docker的混合云平臺(tái)DCP(Docker Container Platform)。DCP目前已經(jīng)具備20分鐘內(nèi)彈性擴(kuò)容千臺(tái)服務(wù)器規(guī)模,所謂20分鐘內(nèi)彈性擴(kuò)容千臺(tái)服務(wù)器規(guī)模,即公有云要滿足10分鐘內(nèi)完成上千臺(tái)服務(wù)器的創(chuàng)建與交付,同時(shí),微博DCP平臺(tái)則在接下來的10分鐘內(nèi)完成服務(wù)器的初始化、服務(wù)調(diào)度、上線等全流程,包括操作系統(tǒng)的安裝、Docker及運(yùn)維軟件環(huán)境的安裝、各種授權(quán)、服務(wù)的啟動(dòng)、流量的引入、上線等,這些全部在20分鐘內(nèi)完成。峰值來臨迅速調(diào)度部署云服務(wù)器為新浪微博的流量峰值分?jǐn)偭髁?,可以很好的解決私有云短時(shí)間無法迅速擴(kuò)容服務(wù)器的問題。公有云的按量彈性需求十分貼合新浪微博的需求,也可以降低大量成本。

51CTO:DCP混合云架構(gòu)您可以簡(jiǎn)單介紹下么?

付穩(wěn):DCP項(xiàng)目的整個(gè)技術(shù)體系也是逐漸演變過來的。當(dāng)Docker容器興起的時(shí)候,我們就做了基于Docker的私有云。而當(dāng)微博現(xiàn)有的服務(wù)器難以支撐流量峰值時(shí),我們就構(gòu)造了基于Docker的DCP混合云架構(gòu)。這個(gè)項(xiàng)目我們把它分成不同的模塊,每一塊都有專門小組在負(fù)責(zé),持續(xù)進(jìn)行迭代。

DCP混合云架構(gòu)主要分為三層。最底層是物理主機(jī)資源,可以實(shí)現(xiàn)機(jī)器資源的管理和創(chuàng)建、機(jī)器初始化及成本核算等功能。

中間資源調(diào)度層,負(fù)責(zé)容器的資源調(diào)度。通過新浪自研Dispatch基于任務(wù)模板形式進(jìn)行容器資源調(diào)度。

上層是服務(wù)編排層,主要包含基本運(yùn)維操作。比如集群、服務(wù)池的管理、配置分發(fā)、滾動(dòng)發(fā)布等。

整個(gè)混合云架構(gòu)依賴分布式鏡像中心、服務(wù)發(fā)現(xiàn)、監(jiān)控中心、容量評(píng)估等基礎(chǔ)設(shè)施模塊。

51CTO:企業(yè)的IT架構(gòu)不是一成不變的,從最初的文字到現(xiàn)在的視頻、直播,業(yè)務(wù)上云過程中DCP做了哪些調(diào)整?經(jīng)過了怎樣的挑戰(zhàn)?

付穩(wěn):從最初的文字到現(xiàn)在的視頻、直播,業(yè)務(wù)上云過程中DCP逐步發(fā)展成為公司層面基礎(chǔ)平臺(tái),面對(duì)業(yè)務(wù)使用方增多同時(shí)帶來彈性調(diào)度規(guī)模及業(yè)務(wù)需求也是不斷增加。在一定程度借助公有云的優(yōu)勢(shì),我們與阿里云的合作也在逐漸加深。原來的合作只用阿里云的ECS層面,現(xiàn)在擴(kuò)展到CDN、視頻直播服務(wù)、安全濾網(wǎng)、OCR圖片鑒黃、大數(shù)據(jù)服務(wù)等方面。

技術(shù)上我們進(jìn)行了架構(gòu)的拆解,同時(shí)也劃分了不同的項(xiàng)目組。有的項(xiàng)目組負(fù)責(zé)IaaS主機(jī)層,有的項(xiàng)目組負(fù)責(zé)鏡像倉(cāng)庫(kù)的層面,有的項(xiàng)目組負(fù)責(zé)彈性調(diào)度,有的項(xiàng)目組負(fù)責(zé)服務(wù)發(fā)現(xiàn)。每個(gè)項(xiàng)目組都會(huì)遇到自己的問題,但是每個(gè)項(xiàng)目組有個(gè)目標(biāo)制和分配制的概念,各項(xiàng)目組重要的問題會(huì)拿出來一起討論協(xié)商出方案進(jìn)行解決。

在應(yīng)對(duì)流量峰值時(shí),單單依靠管理員進(jìn)行人工操作是遠(yuǎn)遠(yuǎn)不夠的,因此“無人值守”自動(dòng)化擴(kuò)縮容顯得十分必要。要實(shí)現(xiàn)“無人值守”的擴(kuò)縮容,首先內(nèi)部的工具系統(tǒng)需要實(shí)現(xiàn)自動(dòng)化,各系統(tǒng)之間通過API打通,實(shí)現(xiàn)全部系統(tǒng)間的聯(lián)動(dòng)。

運(yùn)維自動(dòng)化包含業(yè)務(wù)指標(biāo)和容量指標(biāo)監(jiān)控,將產(chǎn)生的數(shù)據(jù)提供給容量決策系統(tǒng),在容量決策系統(tǒng)的決策下,實(shí)現(xiàn)從運(yùn)維自動(dòng)化進(jìn)化為無人值守的擴(kuò)縮容。

軟件質(zhì)量是我們?cè)谶@個(gè)過程中發(fā)現(xiàn)的最重要問題,運(yùn)維系統(tǒng)為了保證成功率,我們需要在不同彈性擴(kuò)容階段有失敗的重試等等各種各樣的策略。保證成功率后隨著規(guī)模越來越大,擴(kuò)容次數(shù)由月為單位變?yōu)橥惶焱粋€(gè)時(shí)間段多次發(fā)布,擴(kuò)容規(guī)模由幾十臺(tái)至百臺(tái)甚至千臺(tái)級(jí)別。如何在這么短的時(shí)間內(nèi)做到性能上的絕對(duì)保障,也是一個(gè)很大的挑戰(zhàn)。

51CTO:新浪微博采用了怎樣的部署來實(shí)現(xiàn)混合云的安全?

付穩(wěn):最開始做Docker的時(shí)候,首先新浪內(nèi)網(wǎng)有一套自己完整的安全解決方案。私有云上用OpenStack做虛擬化,把安全性做的很好;公有云上有安全組,網(wǎng)絡(luò)基于公有云VPC網(wǎng)絡(luò)來規(guī)避安全風(fēng)險(xiǎn);內(nèi)網(wǎng)和公網(wǎng)之間還有一套嚴(yán)格的安全隔離體系。

51CTO: DCP未來的發(fā)展方向是什么?

付穩(wěn):混合云DCP項(xiàng)目已經(jīng)完成一套完備的基于Docker的全自動(dòng)化運(yùn)維平臺(tái)的建設(shè),具備20分鐘擴(kuò)容部署千臺(tái)公有云服務(wù)器的能力,并完成了微博主要業(yè)務(wù)的改造覆蓋。在2017年春晚保障中,在不到一天的時(shí)間內(nèi)完成了近5000臺(tái)服務(wù)器的創(chuàng)新和部署上線,幫助微博實(shí)現(xiàn)了在新的流量峰值的情況下整體服務(wù)無降級(jí)的成績(jī)。

未來我們將在內(nèi)網(wǎng)私有云虛擬化、在線離線資源整合、DCP平臺(tái)支持機(jī)器學(xué)習(xí)、OpenDCP開源等方面進(jìn)行體系化建設(shè)。

為打造DCP技術(shù)品牌建設(shè),現(xiàn)在的DCP主要功能已通過OpenDCP開源。

OpenDCP是基于Docker技術(shù)的混合云管理平臺(tái),全自動(dòng)化實(shí)現(xiàn)機(jī)器創(chuàng)建、環(huán)境初始化、容器編排、服務(wù)發(fā)現(xiàn)一體化擴(kuò)容能力。涵蓋運(yùn)維配置管理、發(fā)布、變更環(huán)節(jié),實(shí)現(xiàn)敏捷發(fā)布的全自動(dòng)運(yùn)維體系。功能覆蓋鏡像市場(chǎng)、多云對(duì)接、服務(wù)編排、服務(wù)發(fā)現(xiàn)等云資源管理主要環(huán)節(jié)。支持金山云、阿里云等主流云廠商及用戶私有云,支持Nginx、SLB等服務(wù)發(fā)現(xiàn)方式,支持Java、PHP、C/C++、Go等主流語言。今年開始我們會(huì)進(jìn)行OpenDCP開源推廣及持續(xù)建設(shè),接收業(yè)界與開源社區(qū)的反饋需求,打磨好OpenDCP開源產(chǎn)品。希望把OpenDCP做的更易用、更通用,推廣到業(yè)界更大范圍來使用,也歡迎大家來一起建設(shè)OpenDCP。

THEEND