數(shù)據(jù)中心容器網(wǎng)絡(luò)技術(shù)

責任編輯:cres

作者:harbor

2019-03-29 10:57:54

來源:企業(yè)網(wǎng)D1Net

原創(chuàng)

容器技術(shù)很火,經(jīng)常為人所提及,尤其是開源容器工具docker,已在不少數(shù)據(jù)中心里有廣泛應用。容器主要是對軟件和其依賴環(huán)境的標準化打包,將應用之間相互隔離,并能運行在很多主流操作系統(tǒng)上。

容器技術(shù)很火,經(jīng)常為人所提及,尤其是開源容器工具docker,已在不少數(shù)據(jù)中心里有廣泛應用。容器主要是對軟件和其依賴環(huán)境的標準化打包,將應用之間相互隔離,并能運行在很多主流操作系統(tǒng)上。這樣看來容器和虛擬機技術(shù)很類似,容器是APP層面的隔離,而虛擬化是物理資源層面的隔離,容器解決了虛擬技術(shù)的不少痛點問題,很多時候容器可以和虛擬機結(jié)合在一起使用,這也是目前數(shù)據(jù)中心主流的做法。容器的到來給數(shù)據(jù)中心網(wǎng)絡(luò)提出了一些新的挑戰(zhàn),為了適配容器,網(wǎng)絡(luò)部分也需要隨之調(diào)整,所以圍繞容器產(chǎn)生了很多不同的網(wǎng)絡(luò)解決方案,本文主要來介紹一下幾種容器網(wǎng)絡(luò)方案技術(shù)。
 
Callico
 
Callico容器網(wǎng)絡(luò)和其他虛擬網(wǎng)絡(luò)最大的不同是,它沒有采用overlay網(wǎng)絡(luò)做報文轉(zhuǎn)發(fā),提供了純?nèi)龑泳W(wǎng)絡(luò)模型。三層通信模型表示每個容器都通過IP直接通信,中間通過路由轉(zhuǎn)發(fā)找到對方,容器所在節(jié)點類似于傳統(tǒng)路由器,提供了路由查找功能,要想路由工作能夠正常,每個容器所在的主機節(jié)點必須有某種方法知道整個集群的路由信息,Callico采用 BGP路由協(xié)議,全稱是 Border Gateway Protocol。通過BGP,使得全網(wǎng)所有的Node和網(wǎng)絡(luò)設(shè)備都記錄到全網(wǎng)路由,可以看到這種方式會產(chǎn)生很多的無效路由,對網(wǎng)絡(luò)設(shè)備路由規(guī)格要求較大,整網(wǎng)不能有路由規(guī)格低的設(shè)備。BGP是一種成熟的網(wǎng)絡(luò)路由協(xié)議,在傳統(tǒng)網(wǎng)絡(luò)中就有廣泛使用,如此網(wǎng)絡(luò)部分天然就可以對Callico進行支持,只不過對網(wǎng)絡(luò)路由規(guī)格要求高一些。另外,Callico實現(xiàn)了從源容器經(jīng)過源宿主機,經(jīng)過數(shù)據(jù)中心路由,然后到達目的宿主機,最后分配到目的容器過程,整個過程中始終都是根據(jù)BGP協(xié)議進行路由轉(zhuǎn)發(fā),并沒有進行封包,解包過程,這樣轉(zhuǎn)發(fā)效率就會快得多。所以,往往技術(shù)越簡化,執(zhí)行效率越高效,這是Callico容器網(wǎng)絡(luò)的技術(shù)優(yōu)勢。
 
Flannel
 
Flannel是CoreOS提出用于解決容器集群跨主機通訊的網(wǎng)絡(luò)解決方案。Flannel實質(zhì)上是一種覆蓋網(wǎng)絡(luò)Overlay network,也就是將TCP數(shù)據(jù)包裝在另一種網(wǎng)絡(luò)包里面進行路由轉(zhuǎn)發(fā)和通信,目前已支持UDP、VXLAN、AWS VPC、GCE路由等數(shù)據(jù)轉(zhuǎn)發(fā)方式,其中以VXLAN技術(shù)最為流行,很多數(shù)據(jù)中心在考慮引入容器時,也考慮將網(wǎng)絡(luò)切換到Flannel的VXLAN網(wǎng)絡(luò)中來。Flannel為每個主機分配一個subnet,容器從此subnet中分配IP,這些IP可在主機間路由,容器間無需NAT和端口映射就可以跨主機通訊。Flannel讓集群中不同節(jié)點主機創(chuàng)建容器時都具有全集群唯一虛擬IP地址,并連通主機節(jié)點網(wǎng)絡(luò)。Flannel可為集群中所有節(jié)點重新規(guī)劃IP地址使用規(guī)則,從而使得不同節(jié)點上的容器能夠獲得“同屬一個內(nèi)網(wǎng)”且“不重復的”的IP地址,讓不同節(jié)點上的容器能夠直接通過內(nèi)網(wǎng)IP通信,網(wǎng)絡(luò)封裝部分對容器是不可見的。源主機服務(wù)將原本數(shù)據(jù)內(nèi)容UDP封裝后根據(jù)自己的路由表投遞給目的節(jié)點,數(shù)據(jù)到達以后被解包,然后直接進入目的節(jié)點虛擬網(wǎng)卡,然后直接達到目的主機容器虛擬網(wǎng)卡,實現(xiàn)網(wǎng)絡(luò)通信目的。Flannel雖然對網(wǎng)絡(luò)要求較高,要引入封裝技術(shù),轉(zhuǎn)發(fā)效率也受到影響,但是卻可以平滑過渡到SDN網(wǎng)絡(luò),VXLAN技術(shù)可以和SDN很好地結(jié)合起來,值得整個網(wǎng)絡(luò)實現(xiàn)自動化部署,智能化運維和管理,這也是網(wǎng)絡(luò)技術(shù)發(fā)展的方向。所以,F(xiàn)lannel舍棄了傳統(tǒng)網(wǎng)絡(luò),完全新建一套覆蓋網(wǎng)絡(luò)來支持容器,較適合于新建數(shù)據(jù)中心網(wǎng)絡(luò)部署。
 
Weave
 
Weave實質(zhì)上也是覆蓋網(wǎng)絡(luò),Weave可以把不同主機上容器互相連接的網(wǎng)絡(luò)虛擬成一個類似于本地網(wǎng)絡(luò)的網(wǎng)絡(luò),不同主機之間都使用自己的私有IP地址,當容器分布在多個不同的主機上時,通過Weave可以簡化這些容器之間的通信。Weave網(wǎng)絡(luò)中的容器使用標準的端口提供服務(wù)(如MySQL默認使用3306),管理微服務(wù)是十分直接簡單的。每個容器都可以通過域名來與另外的容器通信,也可以直接通信而無需使用NAT,也不需要使用端口映射或者復雜的聯(lián)接。部署Weave容器網(wǎng)絡(luò)最大的好處是無需修改你的應用代碼。Weave通過在容器集群的每個主機上啟動虛擬路由器,將主機作為路由器,形成互聯(lián)互通的網(wǎng)絡(luò)拓撲,在此基礎(chǔ)上,實現(xiàn)容器的跨主機通信。要部署Weave需要確保主機Linux內(nèi)核版本在3.8以上,Docker1.10以上,主機間訪問如果有防火墻,則防火墻必須彼此放行TCP 6783 和UDP 6783/6784這些端口號,這些是Weave控制和數(shù)據(jù)端口,主機名不能相同,Weave要通過主機名識別子網(wǎng)。Weave網(wǎng)絡(luò)類似于主機Overlay技術(shù),直接在主機上進行報文流量的封裝,從而實現(xiàn)主機到主機的跨Underlay三層網(wǎng)絡(luò)的互訪,這是和Flannel網(wǎng)絡(luò)的最大區(qū)別,F(xiàn)lannel是一種網(wǎng)絡(luò)Overlay方案。
 
三種容器網(wǎng)絡(luò)方案,適用于不同的應用場景,就看數(shù)據(jù)中心如何選擇了,從難易度上來講,Callico最簡單,其次Flannel,Weave最復雜,從網(wǎng)絡(luò)技術(shù)來看,Weave和Flannel都是網(wǎng)絡(luò)封裝技術(shù),區(qū)別在于封裝的位置在網(wǎng)絡(luò)設(shè)備上還是主機上。下圖詳列了下三種容器網(wǎng)絡(luò)方案的特點對比:

  Calico Flannel Weave
組網(wǎng)模型 純?nèi)龑覤GP路由轉(zhuǎn)發(fā)方案 VXLAN封裝 VXLAN封裝
協(xié)議支持 TCP、UDP、ICMP 所有協(xié)議 所有協(xié)議
分布式存儲 Etcd分布式存儲 Etcd分布式存儲 Rumor協(xié)議
時延測試 最小 一般 最大
BPS測試 最高 一般 最小
主機CPU使用率 最小 一般 最大
轉(zhuǎn)發(fā)效率 最大 一般 一般


從物理機到虛擬機,再到容器,這是服務(wù)器虛擬化技術(shù)發(fā)展的必然趨勢,容器解決虛擬機的使用限制,但也將網(wǎng)絡(luò)引入更復雜的境地,數(shù)據(jù)中心網(wǎng)絡(luò)要去適應這種變化,要去適配容器,所以才出現(xiàn)了這么多種容器網(wǎng)絡(luò)方案,這些方案都是為容器而生,從網(wǎng)絡(luò)層面去適配容器,是數(shù)據(jù)中心向容器進化所必須的。

鏈接已復制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號