Facebook最近簡單介紹了它在Iowa州Altoona建設的新數據中心的高度模塊化和可擴展網絡。這個社交網絡巨頭一直很開放地對外展示它的數據中心網絡建設方法,因為它正在嘗試圍繞其開放計算項目打造一個網絡設備與軟件生態(tài)系統(tǒng)。Facebook的目標是創(chuàng)建一個基于分散硬件和軟件的數據中心交換市場,降低運營成本和難度。根據開放計算網絡項目的問題,Facebook推出了一個原型交換機(Wedge)及FBOSS(基于Linux的網絡操作系統(tǒng))。
雖然Wedge和開放計算都無法在現階段的Facebook立即發(fā)揮重要作用,但是可以想象到它們在將來的前景。FacebookAltoona數據中心網絡通過簡單性和創(chuàng)新架構方法實現其可擴展性和模塊化。它僅僅使用BGP和Equal Cost Multi-Path(ECMP)路由來保持拓撲簡單性和供應商獨立性,而且它采用一種大規(guī)模葉脊網絡,其中每一層在設計上都可以獨立擴展。
Facebook可以通過計算Pod和頂級機架(ToR)交換機的形式橫向擴展葉子層。網絡擁有多個并行運行的獨立脊干交換機“平面”。此外,它還可以給網絡設計引入“邊界Pod”來擴展外部連接。每一個邊界Pod都包含多個機架的高帶寬交換機,它們負責將脊干層連接到外部網絡。Facebook的網絡設計允許根據需要獨立增加脊干容量、服務器訪問容量或邊界容量。
而且,Altoona網絡有一個內部開發(fā)的BGP控制器,當特定的應用程序和服務器需要使用一條專用網絡路徑時,它可以重載標準BGP路由。這個網絡有一個大規(guī)模編制器,它帶有準確定義的網絡配置,并且可以自動將配置下發(fā)到各個交換機上。最后,這個公司還開發(fā)了一個管理平臺,它能夠自動診斷和修復網絡問題。我希望更多地了解Facebook在Altoona數據中心的網絡設計,因此我采訪了設計數據中心的Facebook工程師Alexey Andreyev。
您能談談Facebook Altoona網絡的設計目標是什么嗎?
Alexey Andreyev:我們在嘗試解決擴展性問題和消除過載網絡的限制——在數據中心實現支持任何擴展需求的容量,而且能夠在一種非常簡單統(tǒng)一的框架中向不同的維度擴展。當我們需要擴大容量時,只需要增加脊干交換機。當我們需要更多連接時,只需要增加邊界Pod。這是一個非常結構化和可預測框架,我們可以用它實現無限擴展的容量目標。我們希望能夠更輕松地處理網絡,而不會因為拓撲或復雜性增加而受到限制。
像這種運營上的簡單性是如何實現的?
Andreyev:關鍵的一點是我們用這個軟件方法去創(chuàng)建一個結構,然后由它來完成自動管理。我們會配置數據中心;但是我們不會配置各個組件。組件配置主要由我們的系統(tǒng)在上層設置中創(chuàng)建的。我們定義好數據中心的結構,以及構成數據中心的特定結構拓撲形狀因數。所有必要的特定配置,如各個設備配置、組件配置、關于連接設備數量的端口映射及路由策略解析等,所有這些都源自于高級設置,它們會被解析為特定的平臺設置。
這種解析又是如何做到的?
Andreyev:我們定義了一個非常簡單可用設備轉換方法。我們會檢查所有網絡服務,預期的路由狀態(tài)、預期的拓撲及拓撲的屬性。我們用這些信息為每一個組件創(chuàng)建出完全抽象且與供應商無關的邏輯視圖。然后,我們將它們轉換為一個特定的實現。例如,一個交換機有X個端口,而這些端口對應X個地址,而不是一些固定的路由。這是非常普遍的方法,然后當我們生成這個邏輯視圖之后,我們只需要將解析為任何真實的組件。
您是通過什么方式將這種高層次策略下發(fā)到交換機上的?
Andreyev:我們會使用適合特定組件的方法。我們在我們知識庫中部署了專門為這些組件準備的配置。我們有一些機制可以在大量組件上調度這些操作。我們的最終目標之一是盡可能保持簡單。我們的自動化和擴展層次都是非常分散的,這樣我們就可以根據需要更換任何組件,而不需要對軟件執(zhí)行大修改。因此我們可以非常快速地應用新的組件。
這種與供應商無關的方法是如何與許多數據中心運營商的目標有什么關系,特別對于開放網絡用戶組成員來說?這種方法如何轉變和應用到更大范圍的數據中心行業(yè)?
Andreyev:一個重要的要求是保持簡單,一個組件只有最少必要的功能,而且也只有功能部署及組件操作的最少必要步驟。例如,對于任何的組件,我們都定義一個操作(步驟),輕松地從服務器提取組件或者將它輕松地放回服務,或者只是部署配置,等等。我們找到了各種不同類型事物的共性部分。而且它越是簡單,共性就越多。這就是為什么我們提出這個方法的原因所在。這相對簡單一些,我們認為所有人都可以從中受益。