對(duì)計(jì)算機(jī)網(wǎng)絡(luò)或者Kubernetes 網(wǎng)絡(luò)稍有了解的工程師都應(yīng)該聽(tīng)說(shuō)過(guò)延展網(wǎng)絡(luò)(Overlay Network),Overlay 網(wǎng)絡(luò)其實(shí)并不是一門(mén)新技術(shù),它是指構(gòu)建在另一個(gè)網(wǎng)絡(luò)上的計(jì)算機(jī)網(wǎng)絡(luò),這是一種網(wǎng)絡(luò)虛擬化技術(shù)的形式,近年來(lái)云計(jì)算虛擬化技術(shù)的演進(jìn)促進(jìn)了網(wǎng)絡(luò)虛擬化技術(shù)的應(yīng)用。
因?yàn)?Overlay 網(wǎng)絡(luò)是建立在另一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)之上的虛擬網(wǎng)絡(luò),所以它不能獨(dú)立出現(xiàn),Overlay 底層依賴的網(wǎng)絡(luò)就是 Underlay 網(wǎng)絡(luò),這兩個(gè)概念也經(jīng)常成對(duì)出現(xiàn)。
Underlay 網(wǎng)絡(luò)是專門(mén)用來(lái)承載用戶IP 流量的基礎(chǔ)架構(gòu)層,它與Overlay 網(wǎng)絡(luò)之間的關(guān)系有點(diǎn)類似物理機(jī)和虛擬機(jī)。Underlay 網(wǎng)絡(luò)和物理機(jī)都是真正存在的實(shí)體,它們分別對(duì)應(yīng)著真實(shí)存在的網(wǎng)絡(luò)設(shè)備和計(jì)算設(shè)備,而Overlay 網(wǎng)絡(luò)和虛擬機(jī)都是依托在下層實(shí)體使用軟件虛擬出來(lái)的層級(jí)。
一、虛擬機(jī)遷移
Kuberentes 目前已經(jīng)是容器編排領(lǐng)域的事實(shí)標(biāo)準(zhǔn)了,雖然很多傳統(tǒng)行業(yè)仍然在使用物理機(jī)部署服務(wù),但是越來(lái)越多的計(jì)算任務(wù)在未來(lái)都會(huì)運(yùn)行在虛擬機(jī)上。虛擬機(jī)遷移是將虛擬機(jī)從一個(gè)物理硬件設(shè)備移到另一個(gè)設(shè)備的過(guò)程,因?yàn)槿粘5母戮S護(hù),集群中的大規(guī)模虛擬機(jī)遷移是比較常見(jiàn)的事情,上千臺(tái)物理機(jī)組成的大集群使得集群內(nèi)的資源調(diào)度變得更加容易,我們可以通過(guò)虛擬機(jī)遷移來(lái)提高資源的利用率、容忍虛擬機(jī)的錯(cuò)誤并提高節(jié)點(diǎn)的可移植性。
當(dāng)虛擬機(jī)所在的宿主機(jī)因?yàn)榫S護(hù)或者其他原因宕機(jī)時(shí),當(dāng)前實(shí)例就需要遷移到其他的宿主機(jī)上,為了保證業(yè)務(wù)不中斷,我們需要保證遷移過(guò)程中的IP 地址不變,因?yàn)?Overlay 是在網(wǎng)絡(luò)層實(shí)現(xiàn)二層網(wǎng)絡(luò),所以多個(gè)物理機(jī)之間只要網(wǎng)絡(luò)層可達(dá)就能組建虛擬的局域網(wǎng),虛擬機(jī)或者容器遷移后仍然處于同一個(gè)二層網(wǎng)絡(luò),也就不需要改變IP 地址。
遷移后的虛擬機(jī)與其他的虛擬機(jī)雖然位于不同的數(shù)據(jù)中心,但是由于上述兩個(gè)數(shù)據(jù)中心之間可以通過(guò)IP 協(xié)議連通,所以遷移后的虛擬機(jī)仍然可以通過(guò) Overlay 網(wǎng)絡(luò)與原集群的虛擬機(jī)組成二層網(wǎng)絡(luò),集群內(nèi)部的主機(jī)也完全不清楚底層的網(wǎng)絡(luò)架構(gòu),它們只知道不同虛擬機(jī)之間是可以連通的。
二、虛擬機(jī)規(guī)模
目前,Kuberentes 官方支持的最大集群為5000 節(jié)點(diǎn),如果這5000 個(gè)節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)都僅僅包含一個(gè)容器,這對(duì)于內(nèi)部的網(wǎng)絡(luò)設(shè)備其實(shí)沒(méi)有太大的壓力,但是在實(shí)際情況下5000 節(jié)點(diǎn)的集群中都包含幾萬(wàn)甚至幾十萬(wàn)個(gè)容器,當(dāng)某個(gè)容器向集群中發(fā)送ARP 請(qǐng)求,集群中的全部容器都會(huì)收到ARP 請(qǐng)求,這時(shí)會(huì)帶來(lái)極高的網(wǎng)絡(luò)負(fù)載。
在使用VxLAN 搭建的Overlay 網(wǎng)絡(luò)中,網(wǎng)絡(luò)會(huì)將虛擬機(jī)發(fā)送的數(shù)據(jù)重新封裝成IP 數(shù)據(jù)包,這樣網(wǎng)絡(luò)只需要知道不同VTEP 的MAC 地址,由此可以將MAC 地址表項(xiàng)中的幾十萬(wàn)條數(shù)據(jù)降低到幾千條,ARP 請(qǐng)求也只會(huì)在集群中的VTEP 之間擴(kuò)散,遠(yuǎn)端的VTEP 將數(shù)據(jù)拆包后也僅會(huì)在本地廣播,不會(huì)影響其他的VTEP,雖然這對(duì)于集群中的網(wǎng)絡(luò)設(shè)備仍然有較高的要求,但是已經(jīng)極大地降低了核心網(wǎng)絡(luò)設(shè)備的壓力。
Overlay 網(wǎng)絡(luò)其實(shí)與軟件定義網(wǎng)絡(luò)(Software-defined networking、SDN)密切相關(guān),而SDN 引入了數(shù)據(jù)平面和控制平面,其中數(shù)據(jù)平面負(fù)責(zé)轉(zhuǎn)發(fā)數(shù)據(jù),而控制平面負(fù)責(zé)計(jì)算并分發(fā)轉(zhuǎn)發(fā)表。VxLAN 的 RFC7348 中只定義了數(shù)據(jù)平面的內(nèi)容,由該技術(shù)組成的網(wǎng)絡(luò)可以通過(guò)傳統(tǒng)的自學(xué)習(xí)模式學(xué)習(xí)網(wǎng)絡(luò)中的 MAC 與ARP 表項(xiàng),但是在大規(guī)模的集群中,我們?nèi)匀恍枰肟刂破矫娣职l(fā)路由轉(zhuǎn)發(fā)表。
三、網(wǎng)絡(luò)隔離
大規(guī)模的數(shù)據(jù)中心往往都會(huì)對(duì)外提供云計(jì)算服務(wù),同一個(gè)物理集群可能會(huì)被拆分成多個(gè)小塊分配給不同的租戶(Tenant),因?yàn)槎泳W(wǎng)絡(luò)的數(shù)據(jù)幀可能會(huì)進(jìn)行廣播,所以出于安全的考慮這些不同的租戶之間需要進(jìn)行網(wǎng)絡(luò)隔離,避免租戶之間的流量互相影響甚至惡意攻擊。傳統(tǒng)的網(wǎng)絡(luò)隔離會(huì)使用虛擬局域網(wǎng)技術(shù)(Virtual LAN、VLAN),VLAN 會(huì)使用12 比特表示虛擬網(wǎng)絡(luò)ID,虛擬網(wǎng)絡(luò)的上限是4096 個(gè)。
4096 個(gè)虛擬網(wǎng)絡(luò)對(duì)于大規(guī)模的數(shù)據(jù)中心來(lái)說(shuō)遠(yuǎn)遠(yuǎn)不夠,VxLAN 會(huì)使用24 比特的VNI 表示虛擬網(wǎng)絡(luò)個(gè)數(shù),總共可以表示16,777,216 個(gè)虛擬網(wǎng)絡(luò),這也就能滿足數(shù)據(jù)中心多租戶網(wǎng)絡(luò)隔離的需求了。
更多的虛擬網(wǎng)絡(luò)其實(shí)是VxLAN 帶來(lái)的好處,它不應(yīng)該成為使用VxLAN 的決定性因素。VLAN 協(xié)議的擴(kuò)展協(xié)議IEEE 802.1ad 允許我們?cè)谝蕴W(wǎng)幀中加入兩個(gè)802.1Q 的協(xié)議頭,兩個(gè)VLAN ID 組成的24 比特也可以表示16,777,216 個(gè)虛擬網(wǎng)絡(luò),所以想要解決網(wǎng)絡(luò)隔離不是使用 VxLAN 或者Overlay 網(wǎng)絡(luò)的充分條件。
四、總結(jié)
目前的數(shù)據(jù)中心包含多個(gè)集群以及海量的物理機(jī),Overlay 網(wǎng)絡(luò)是虛擬機(jī)和底層網(wǎng)絡(luò)設(shè)備之間的中間層,通過(guò)Overlay 網(wǎng)絡(luò)這一個(gè)中間層,我們可以解決虛擬機(jī)的遷移問(wèn)題、降低二層核心網(wǎng)絡(luò)設(shè)備的壓力并提供更大規(guī)模的虛擬網(wǎng)絡(luò)數(shù)量。
在使用VxLAN 構(gòu)成二層網(wǎng)絡(luò)中,虛擬機(jī)在不同集群、不同可用區(qū)和不同數(shù)據(jù)中心遷移后,仍然可以保證二層網(wǎng)絡(luò)的可靠性,這能夠幫助我們保證線上業(yè)務(wù)的可用性、提升集群的資源利用率、容忍虛擬機(jī)和節(jié)點(diǎn)的故障。
集群中虛擬機(jī)的規(guī)??赡苁俏锢頇C(jī)是幾十倍,與物理機(jī)構(gòu)成的傳統(tǒng)集群相比,虛擬機(jī)構(gòu)成的集群包含的MAC 地址數(shù)量龐大,網(wǎng)絡(luò)設(shè)備很難承擔(dān)如此大規(guī)模的二層網(wǎng)絡(luò)請(qǐng)求,Overlay 網(wǎng)絡(luò)通過(guò)IP封包和控制平面可以減少集群中的MAC 地址表項(xiàng)和ARP 請(qǐng)求。
VxLAN 的協(xié)議頭使用24 位的VNI 表示虛擬網(wǎng)絡(luò),總共可以表示1600 萬(wàn)的虛擬網(wǎng)絡(luò),我們可以為不同的虛擬網(wǎng)絡(luò)單獨(dú)分配網(wǎng)絡(luò)帶寬,滿足多租戶的網(wǎng)絡(luò)隔離需求。
需要注意的是,Overlay 網(wǎng)絡(luò)只是一種在物理網(wǎng)絡(luò)上的虛擬網(wǎng)絡(luò),使用該技術(shù)并不能直接解決集群中的規(guī)模性等問(wèn)題,而VxLAN 也不是組建Overlay 網(wǎng)絡(luò)的唯一方法,在不同場(chǎng)景中我們可以考慮使用不同的技術(shù),例如:NVGRE、GRE 等。
電腦知識(shí)與技術(shù)·經(jīng)驗(yàn)技巧2020年7期