無論你是看新聞、下訂單、看視頻、下載文件,最終訪問的目的地都在數(shù)據(jù)中心里面。我們前面學了這么多的網(wǎng)絡協(xié)議和網(wǎng)絡相關的知識,你是不是很好奇,數(shù)據(jù)中心究竟長啥樣呢?
數(shù)據(jù)中心是一個大雜燴,幾乎要用到前面學過的所有知識。
前面講辦公室網(wǎng)絡的時候,我們知道辦公室里面有很多臺電腦。如果要訪問外網(wǎng),需要經(jīng)過一個叫網(wǎng)關的東西,而網(wǎng)關往往是一個路由器。
數(shù)據(jù)中心里面也有一大堆的電腦,但是它和咱們辦公室里面的筆記本或者臺式機不一樣。數(shù)據(jù)中心里面是服務器。服務器被放在一個個叫作機架(Rack)的架子上面。
數(shù)據(jù)中心的入口和出口也是路由器,由于在數(shù)據(jù)中心的邊界,就像在一個國家的邊境,稱為邊界路由器(Border Router)。為了高可用,邊界路由器會有多個。
一般家里只會連接一個運營商的網(wǎng)絡,而為了高可用,為了當一個運營商出問題的時候,還可以通過另外一個運營商來提供服務,所以數(shù)據(jù)中心的邊界路由器會連接多個運營商網(wǎng)絡。
既然是路由器,就需要跑路由協(xié)議,數(shù)據(jù)中心往往就是路由協(xié)議中的自治區(qū)域(AS)。數(shù)據(jù)中心里面的機器要想訪問外面的網(wǎng)站,數(shù)據(jù)中心里面也是有對外提供服務的機器,都可以通過BGP協(xié)議,獲取內外互通的路由信息。這就是我們常聽到的多線BGP的概念。
如果數(shù)據(jù)中心非常簡單,沒幾臺機器,那就像家里或者宿舍一樣,所有的服務器都直接連到路由器上就可以了。但是數(shù)據(jù)中心里面往往有非常多的機器,當塞滿一機架的時候,需要有交換機將這些服務器連接起來,可以互相通信。
這些交換機往往是放在機架頂端的,所以經(jīng)常稱為TOR(Top Of Rack)交換機。這一層的交換機常常稱為接入層(Access Layer)。注意這個接入層和原來講過的應用的接入層不是一個概念。
當一個機架放不下的時候,就需要多個機架,還需要有交換機將多個機架連接在一起。這些交換機對性能的要求更高,帶寬也更大。這些交換機稱為匯聚層交換機(Aggregation Layer)。
數(shù)據(jù)中心里面的每一個連接都是需要考慮高可用的。這里首先要考慮的是,如果一臺機器只有一個網(wǎng)卡,上面連著一個網(wǎng)線,接入到TOR交換機上。如果網(wǎng)卡壞了,或者不小心網(wǎng)線掉了,機器就上不去了。所以,需要至少兩個網(wǎng)卡、兩個網(wǎng)線插到TOR交換機上,但是兩個網(wǎng)卡要工作得像一張網(wǎng)卡一樣,這就是常說的網(wǎng)卡綁定(bond)。
這就需要服務器和交換機都支持一種協(xié)議LACP(Link Aggregation Control Protocol)。它們互相通信,將多個網(wǎng)卡聚合稱為一個網(wǎng)卡,多個網(wǎng)線聚合成一個網(wǎng)線,在網(wǎng)線之間可以進行負載均衡,也可以為了高可用作準備。
網(wǎng)卡有了高可用保證,但交換機還有問題。如果一個機架只有一個交換機,它掛了,那整個機架都不能上網(wǎng)了。因而TOR交換機也需要高可用,同理接入層和匯聚層的連接也需要高可用性,也不能單線連著。
最傳統(tǒng)的方法是,部署兩個接入交換機、兩個匯聚交換機。服務器和兩個接入交換機都連接,接入交換機和兩個匯聚都連接,當然這樣會形成環(huán),所以需要啟用STP協(xié)議,去除環(huán),但是這樣兩個匯聚就只能一主一備了。STP協(xié)議里我們學過,只有一條路會起作用。
網(wǎng)卡有了高可用保證,但交換機還有問題。如果一個機架只有一個交換機,它掛了,那整個機架都不能上網(wǎng)了。因而TOR交換機也需要高可用,同理接入層和匯聚層的連接也需要高可用性,也不能單線連著。
最傳統(tǒng)的方法是,部署兩個接入交換機、兩個匯聚交換機。服務器和兩個接入交換機都連接,接入交換機和兩個匯聚都連接,當然這樣會形成環(huán),所以需要啟用STP協(xié)議,去除環(huán),但是這樣兩個匯聚就只能一主一備了。STP協(xié)議里我們學過,只有一條路會起作用。
由于對帶寬要求更大,而且掛了影響也更大,所以兩個堆疊可能就不夠了,可以就會有更多的,比如四個堆疊為一個邏輯的交換機。
匯聚層將大量的計算節(jié)點相互連接在一起,形成一個集群。在這個集群里面,服務器之間通過二層互通,這個區(qū)域常稱為一個POD(Point Of Delivery),有時候也稱為一個可用區(qū)(Available Zone)。
當節(jié)點數(shù)目再多的時候,一個可用區(qū)放不下,需要將多個可用區(qū)連在一起,連接多個可用區(qū)的交換機稱為核心交換機。
核心交換機吞吐量更大,高可用要求更高,肯定需要堆疊,但是往往僅僅堆疊,不足以滿足吞吐量,因而還是需要部署多組核心交換機。核心和匯聚交換機之間為了高可用,也是全互連模式的。
這個時候還存在一個問題,出現(xiàn)環(huán)路怎么辦?
一種方式是,不同的可用區(qū)在不同的二層網(wǎng)絡,需要分配不同的網(wǎng)段。匯聚和核心之間通過三層網(wǎng)絡互通的,二層都不在一個廣播域里面,不會存在二層環(huán)路的問題。三層有環(huán)是沒有問題的,只要通過路由協(xié)議選擇最佳的路徑就可以了。那為啥二層不能有環(huán)路,而三層可以呢?你可以回憶一下二層環(huán)路的情況。
如圖,核心層和匯聚層之間通過內部的路由協(xié)議OSPF,找到最佳的路徑進行訪問,而且還可以通過ECMP等價路由,在多個路徑之間進行負載均衡和高可用。
但是隨著數(shù)據(jù)中心里面的機器越來越多,尤其是有了云計算、大數(shù)據(jù),集群規(guī)模非常大,而且都要求在一個二層網(wǎng)絡里面。這就需要二層互連從匯聚層上升為核心層,也即在核心以下,全部是二層互連,全部在一個廣播域里面,這就是常說的大二層。
如果大二層橫向流量不大,核心交換機數(shù)目不多,可以做堆疊,但是如果橫向流量很大,僅僅堆疊滿足不了,就需要部署多組核心交換機,而且要和匯聚層進行全互連。由于堆疊只解決一個核心交換機組內的無環(huán)問題,而組之間全互連,還需要其他機制進行解決。
如果是STP,那部署多組核心無法擴大橫向流量的能力,因為還是只有一組起作用。
于是大二層就引入了TRILL(Transparent Interconnection of Lots of Link),即多鏈接透明互聯(lián)協(xié)議。它的基本思想是,二層環(huán)有問題,三層環(huán)沒有問題,那就把三層的路由能力模擬在二層實現(xiàn)。
運行TRILL協(xié)議的交換機稱為RBridge,是具有路由轉發(fā)特性的網(wǎng)橋設備,只不過這個路由是根據(jù)MAC地址來的,不是根據(jù)IP來的。
Rbridage之間通過鏈路狀態(tài)協(xié)議運作。記得這個路由協(xié)議嗎?通過它可以學習整個大二層的拓撲,知道訪問哪個MAC應該從哪個網(wǎng)橋走;還可以計算最短的路徑,也可以通過等價的路由進行負載均衡和高可用性。
TRILL協(xié)議在原來的MAC頭外面加上自己的頭,以及外層的MAC頭。TRILL頭里面的Ingress RBridge,有點像IP頭里面的源IP地址,Egress RBridge是目標IP地址,這兩個地址是端到端的,在中間路由的時候,不會發(fā)生改變。而外層的MAC,可以有下一跳的Bridge,就像路由的下一跳,也是通過MAC地址來呈現(xiàn)的一樣。
如圖中所示的過程,有一個包要從主機A發(fā)送到主機B,中間要經(jīng)過RBridge 1、RBridge 2、RBridge X等等,直到RBridge 3。在RBridge 2收到的包里面,分內外兩層,內層就是傳統(tǒng)的主機A和主機B的MAC地址以及內層的VLAN。
在外層首先加上一個TRILL頭,里面描述這個包從RBridge 1進來的,要從RBridge 3出去,并且像三層的IP地址一樣有跳數(shù)。然后再外面,目的MAC是RBridge 2,源MAC是RBridge 1,以及外層的VLAN。
當RBridge 2收到這個包之后,首先看MAC是否是自己的MAC,如果是,要看自己是不是Egress RBridge,也即是不是最后一跳;如果不是,查看跳數(shù)是不是大于0,然后通過類似路由查找的方式找到下一跳RBridge X,然后將包發(fā)出去。
RBridge 2發(fā)出去的包,內層的信息是不變的,外層的TRILL頭里面。同樣,描述這個包從RBridge 1進來的,要從RBridge 3出去,但是跳數(shù)要減1。外層的目標MAC變成RBridge X,源MAC變成RBridge 2。
如此一直轉發(fā),直到RBridge 3,將外層解出來,發(fā)送內層的包給主機B。
這個過程是不是和IP路由很像?
對于大二層的廣播包,也需要通過分發(fā)樹的技術來實現(xiàn)。我們知道STP是將一個有環(huán)的圖,通過去掉邊形成一棵樹,而分發(fā)樹是一個有環(huán)的圖形成多棵樹,不同的樹有不同的VLAN,有的廣播包從VLAN A廣播,有的從VLAN B廣播,實現(xiàn)負載均衡和高可用。
核心交換機之外,就是邊界路由器了。至此從服務器到數(shù)據(jù)中心邊界的層次情況已經(jīng)清楚了。
在核心交換上面,往往會掛一些安全設備,例如入侵檢測、DDoS防護等等。這是整個數(shù)據(jù)中心的屏障,防止來自外來的攻擊。核心交換機上往往還有負載均衡器,原理前面的章節(jié)已經(jīng)說過了。
在有的數(shù)據(jù)中心里面,對于存儲設備,還會有一個存儲網(wǎng)絡,用來連接SAN和NAS。但是對于新的云計算來講,往往不使用傳統(tǒng)的SAN和NAS,而使用部署在x86機器上的軟件定義存儲,這樣存儲也是服務器了,而且可以和計算節(jié)點融合在一個機架上,從而更加有效率,也就沒有了單獨的存儲網(wǎng)絡了。
于是整個數(shù)據(jù)中心的網(wǎng)絡如下圖所示。
這是一個典型的三層網(wǎng)絡結構。這里的三層不是指IP層,而是指接入層、匯聚層、核心層三層。這種模式非常有利于外部流量請求到內部應用。這個類型的流量,是從外到內或者從內到外,對應到上面那張圖里,就是從上到下,從下到上,上北下南,所以稱為南北流量。
但是隨著云計算和大數(shù)據(jù)的發(fā)展,節(jié)點之間的交互越來越多,例如大數(shù)據(jù)計算經(jīng)常要在不同的節(jié)點將數(shù)據(jù)拷貝來拷貝去,這樣需要經(jīng)過交換機,使得數(shù)據(jù)從左到右,從右到左,左西右東,所以稱為東西流量。
為了解決東西流量的問題,演進出了葉脊網(wǎng)絡(Spine/Leaf)。
葉子交換機(leaf),直接連接物理服務器。L2/L3網(wǎng)絡的分界點在葉子交換機上,葉子交換機之上是三層網(wǎng)絡。
脊交換機(spine switch),相當于核心交換機。葉脊之間通過ECMP動態(tài)選擇多條路徑。脊交換機現(xiàn)在只是為葉子交換機提供一個彈性的L3路由網(wǎng)絡。南北流量可以不用直接從脊交換機發(fā)出,而是通過與leaf交換機并行的交換機,再接到邊界路由器出去。
傳統(tǒng)的三層網(wǎng)絡架構是垂直的結構,而葉脊網(wǎng)絡架構是扁平的結構,更易于水平擴展。
小結
好了,復雜的數(shù)據(jù)中心就講到這里了。我們來總結一下,你需要記住這三個重點。
數(shù)據(jù)中心分為三層。服務器連接到接入層,然后是匯聚層,再然后是核心層,最外面是邊界路由器和安全設備。
數(shù)據(jù)中心的所有鏈路都需要高可用性。服務器需要綁定網(wǎng)卡,交換機需要堆疊,三層設備可以通過等價路由,二層設備可以通過TRILL協(xié)議。
隨著云和大數(shù)據(jù)的發(fā)展,東西流量相對于南北流量越來越重要,因而演化為葉脊網(wǎng)絡結構。
最后,給你留兩個思考題:
1.對于數(shù)據(jù)中心來講,高可用是非常重要的,每個設備都要考慮高可用,那跨機房的高可用,你知道應該怎么做嗎?
2.前面說的瀏覽新聞、購物、下載、看視頻等行為,都是普通用戶通過公網(wǎng)訪問數(shù)據(jù)中心里面的資源。那IT管理員應該通過什么樣的方式訪問數(shù)據(jù)中心呢?