近日,GitHub網(wǎng)站可靠性工程師、經(jīng)理skottler在githubengineering.com發(fā)表了一篇博客,介紹了Github數(shù)據(jù)中心升級(jí)的相關(guān)事宜。在過去的18個(gè)月里,他們對(duì)GitHub的物理基礎(chǔ)設(shè)施進(jìn)行了大量的投入。其目標(biāo)是改進(jìn)GitHub系統(tǒng)的冗余性和全局可用性。在這樣做的基礎(chǔ)上,他們將擴(kuò)展計(jì)算和存儲(chǔ)空間,以支持其不斷增長的用戶群。以下內(nèi)容來自skottler的博文:
概述
我們有四個(gè)設(shè)備,其中兩個(gè)是“中轉(zhuǎn)點(diǎn)”,我們稱之為“存在點(diǎn)”(points of presence ,POP),其中兩個(gè)是數(shù)據(jù)中心。先為大家說明一下我們的規(guī)模,我們已經(jīng)為GitHub.com的用戶存儲(chǔ)了PB級(jí)的Git數(shù)據(jù),并在傳輸、網(wǎng)絡(luò)交換和私有網(wǎng)絡(luò)接口上擁有大約100Gb / s的速度,以滿足每秒數(shù)千個(gè)請(qǐng)求。我們的網(wǎng)絡(luò)和設(shè)施是使用一個(gè) hub-and-spoke設(shè)計(jì)來建造的。我們?cè)谖餮艌D和弗吉尼亞北部地區(qū)運(yùn)營著我們自己的主干網(wǎng),通過受保護(hù)的光纖提供更穩(wěn)定的延遲和吞吐量。
POP是一些主要由網(wǎng)絡(luò)設(shè)備組成的機(jī)柜。他們被安置在具有高度集中的中轉(zhuǎn)供應(yīng)商和接入?yún)^(qū)域互聯(lián)網(wǎng)交換機(jī)的設(shè)施中。這些設(shè)施不存儲(chǔ)客戶數(shù)據(jù),而是專注于互聯(lián)網(wǎng)和主干網(wǎng)連接性,以及直接連接和Amazon Web服務(wù)的私有網(wǎng)絡(luò)接口。目前,我們?cè)诟ゼ醽喼荼辈坑幸粋€(gè)POP,在西雅圖的地鐵區(qū)有一個(gè),每個(gè)都獨(dú)立地連接到在各自地理區(qū)域的中轉(zhuǎn)供應(yīng)商和數(shù)據(jù)中心。
不過,這些連接好的POP有一些消極面,導(dǎo)致我們需要選擇單獨(dú)的數(shù)據(jù)中心來存儲(chǔ)客戶數(shù)據(jù)和服務(wù)請(qǐng)求。一方面,由于對(duì)各種各樣的交換選項(xiàng)的空間需求,我們使用的設(shè)施如POP更難以獲得空間。由于這種對(duì)空間的需求,經(jīng)常會(huì)有更少的電力供應(yīng),這使得我們無法部署高密度的存儲(chǔ)和計(jì)算柜。因此,數(shù)據(jù)中心在設(shè)施不太連通的獨(dú)立的圍籠里,我們利用POP和數(shù)據(jù)中心之間的metro wave和被動(dòng)式密集波分復(fù)用(DWDM)來連接它們。目前的POP是一對(duì)一的數(shù)據(jù)中心,所以我們?cè)诿绹箨懙拿總€(gè)海岸都有一個(gè)數(shù)據(jù)中心。
設(shè)施之內(nèi)
盡管POP和數(shù)據(jù)中心的圍籠擺放和部署的方式有些不同,但我們?nèi)匀挥幸惶钻P(guān)于如何建造我們的設(shè)施的共同原則。我們的目標(biāo)是使柜子類型盡可能地均勻,以增加可重復(fù)性。在POP中只有一種柜子,包括管理和生產(chǎn)邊界路由器、光學(xué)網(wǎng)絡(luò)設(shè)備和足夠的計(jì)算硬件來運(yùn)行核心服務(wù)。我們的數(shù)據(jù)中心有三種不同類型的柜子——網(wǎng)絡(luò)、計(jì)算和存儲(chǔ)。大部分的柜子都是用于計(jì)算和存儲(chǔ)的硬件,每一種都是在特定的柜子里,而不是混合在一起,允許該層獨(dú)立擴(kuò)展。我們關(guān)注的另一件事是,我們的基礎(chǔ)設(shè)施和數(shù)據(jù)中心提供商之間的交叉連接有明顯的分離。在POP中,我們使用預(yù)先標(biāo)注的和電纜連接的分界點(diǎn)來添加新的中轉(zhuǎn)、傳輸或直接連接供應(yīng)商,這是一個(gè)與補(bǔ)丁面板的單邊交互的問題。
數(shù)據(jù)中心是通過使用結(jié)構(gòu)化的布線來簡化增加新容量的。建造西海岸的數(shù)據(jù)中心時(shí),結(jié)構(gòu)的布線被部署在整個(gè)空間,包括尚未使用的機(jī)柜位置。每個(gè)存儲(chǔ)和計(jì)算柜都通過一個(gè)上方的補(bǔ)丁面板連接到結(jié)構(gòu)化的布線。每個(gè)柜側(cè)補(bǔ)丁面板都連接到一對(duì)匹配的面板上,它們位于一對(duì)網(wǎng)絡(luò)柜之間的兩個(gè)柱架上。在網(wǎng)絡(luò)柜中,將一個(gè)柜子連接到脊柱和聚合開關(guān),就需要修補(bǔ)從葉片開關(guān)和控制臺(tái)設(shè)備到頭頂面板的一系列連接,然后從兩柱架到網(wǎng)絡(luò)柜打補(bǔ)丁。這兩個(gè)網(wǎng)絡(luò)補(bǔ)丁布置是通過使用預(yù)先標(biāo)注的和錐形的光纖織機(jī)完成的,這有助于保持網(wǎng)絡(luò)柜的整潔,盡管它們的光纖密度很高。
▲圖片來源網(wǎng)絡(luò),與內(nèi)容無關(guān)
擴(kuò)展計(jì)算和存儲(chǔ)
我們與一個(gè)機(jī)柜集成商緊密合作,以處理機(jī)架和堆疊、電纜、驗(yàn)證和物流事務(wù)。當(dāng)一個(gè)關(guān)于在我們的一個(gè)數(shù)據(jù)中心擴(kuò)展計(jì)算和/或存儲(chǔ)能力的項(xiàng)目被啟動(dòng)時(shí),第一步要決定是使用我們已經(jīng)構(gòu)建的現(xiàn)有的機(jī)柜配置,還是設(shè)計(jì)一個(gè)新的。除非我們正在部署一種新型的機(jī)柜,或者對(duì)底架和sled的配置做出改變,這一過程包括從供應(yīng)商那里獲得報(bào)價(jià)和交貨時(shí)間,確保機(jī)柜布局符合我們的預(yù)期,然后下訂單。一旦所有的部件都采購?fù)瓿?,機(jī)架集成商就會(huì)建造機(jī)柜,最終把它們裝進(jìn)一個(gè)適合貨運(yùn)的集裝箱里。
在我們的一個(gè)設(shè)施到達(dá)后,機(jī)柜在數(shù)據(jù)中心的目標(biāo)位置部署。網(wǎng)絡(luò)配置是預(yù)先生成的,在機(jī)柜離開構(gòu)建站點(diǎn)的時(shí)候已經(jīng)在開關(guān)上了,所以需要打開一套新的柜子的所有東西為每一個(gè)打補(bǔ)丁,布置電源電路,并為它們內(nèi)部的硬件供電。從集成商的機(jī)柜布局?jǐn)?shù)據(jù)導(dǎo)入到我們的硬件管理系統(tǒng)gPanel,將序列號(hào)映射到機(jī)架單元和附件。gPanel通過無狀態(tài)映像提供硬件發(fā)現(xiàn),該映像在當(dāng)前未安裝的所有底架上運(yùn)行。在第一次啟動(dòng)時(shí),每個(gè)底架都進(jìn)入一個(gè)未知狀態(tài),然后通過狀態(tài)機(jī)來配置像iDRAC這樣的設(shè)備,確保BMC、BIOS和驅(qū)動(dòng)固件與我們?cè)谄渌胤缴a(chǎn)的版本匹配,然后驗(yàn)證機(jī)器的健康狀況。一旦這些步驟完成,這個(gè)盒子就會(huì)在就緒狀態(tài)下結(jié)束,并且可以通過gPanel響應(yīng)請(qǐng)求。
新存儲(chǔ)和計(jì)算柜的部署使用這種方法是高度可復(fù)制的,允許我們自信地在數(shù)據(jù)中心中擴(kuò)展我們的物理覆蓋區(qū)。在目前的情況下,這一過程允許我們?yōu)楣镜墓こ處焸兲峁┯布?,在同一天?nèi),他們的機(jī)柜預(yù)置好并供電。
這是我們最近添加到西雅圖數(shù)據(jù)中心的一個(gè)計(jì)算柜:
結(jié)論
我們對(duì)數(shù)據(jù)中心和網(wǎng)絡(luò)的改進(jìn)使我們能夠繼續(xù)自信地?cái)U(kuò)展我們的物理基礎(chǔ)設(shè)施。引入可重復(fù)的過程以增加新的容量,并將區(qū)域網(wǎng)絡(luò)邊緣從我們的計(jì)算和存儲(chǔ)系統(tǒng)中分離出來,這使我們能夠進(jìn)入基礎(chǔ)設(shè)施的下一階段增長。
原文鏈接:https://githubengineering.com/evolution-of-our-data-centers/