DaoliNet 開源,為 Docker 容器提供動態高效的鏈接

lipan4 8年前發布 | 11K 次閱讀 Docker 服務器 開源

DaoliNet是道里云公司自主研發的為基于Docker的應用平臺量身打造的動態敏捷高效網絡技術,DaoliNet將以全新的技術變革,通過技術開源模式,為全球Docker容器網絡貢獻價值。

Docker是 目前最火的容器技術 ,而DaoliNet是一個軟件定義網絡(SDN)系統,其設計目的是為Docker容器提供動態、高效的鏈接。在Docker容器中,微服務工作負載具有輕量且短暫的性質,DaoliNet恰好適用于這種性質。

DaoliNet介紹:

頂層特點

資源高效:當容器處于相互不主動通信,但可隨時切換到提供全連接性能的狀態下,容器之間的連接幾乎不消耗主機資源。這同容器高效利用主機CPU資源的方式相同。使用者可以從服務器資源中獲得更多;

任意分布:Docker服務器可以是辦公室或家中防火墻內的筆記本電腦或PC機,也可以是自建數據中心內的服務器,亦或諸如AWS的公共云中的虛擬機,跨數據中心的通信始終加密;

網絡虛擬化:可以為容器選擇任意CIDR IP地址,并且在物理位置改變后,容器保持IP地址不變;

使用Open-V-Switch(OVS)的純軟件實現:可提供網絡功能,如分布式交換機、路由器、網關和防火墻。系統部署采用簡單的即插即用。

架構

DaoliNet的網絡體系結構基于OpenFlow標準。它使用OpenFlow控制器作為智能控制平面,并用Open-V-Switches(OVSes)實現數據通路。DaoliNet中的OpenFlow控制器邏輯上為集中化的實體,但實際上為一組HA分布式類Web服務代理。OVSes在Linux內核中無所不在,因此也存在于所有Docker服務器中。

在DaoliNet網絡中,所有Docker服務器處于同一以太網,彼此或實際連接或V*N連接。每個Docker服務器都像虛擬路由器一樣工作,所有容器工作負載都托管在該服務器上。這些虛擬路由器遵循OpenFlow技術,不運行任何路由算法。當一個容器初始化連接時,所涉及的虛擬路由器將由OpenFlow控制器實時配置,從而建立路由路徑。

圖1 DaoliNet的架構圖

工作過程

當容器發起連接,作為源路由器,宿主Docker服務器中的OVS將給OpenFlow控制器發出一個PacketIn請求。該請求是起始容器的第一個數據包。OpenFlow控制器知曉系統中作為OpenFlow路由器的全部Docker服務器,并且可發現其PacketIN;它還可以識別另一個作為目標工作負載,并承載容器的Docker服務器。第二個Docker服務器是連接的目標路由器。OpenFlow控制器將響應一對PacketOut流,其中一個流用于源服務器,另一個用于目標服務器。PacketOut流將在兩個容器之間建立熱插拔路由,如圖2“熱插拔路由的建立”所示。

圖2 熱插拔路由的建立

熱插拔路由一般包括3個IP跳數:(1)src-容器- src -服務器;(2)src -服務器-dst-服務器;(3)dst-服務器-dst-容器。在兩個容器承載于同一Docker服務器的情況下,PacketOut流路由僅包括一跳:src-容器- dst -服務器。如圖3“熱插拔路由的IP跳數”所示。

圖3 熱插拔路由的IP跳數

當一個連接變為空閑,并大于時間閾值,熱插拔路由流將暫停,同時將其刪除以釋放服務器資源。由于熱插拔路由建立速度快,所刪除的閑置連接可以在重新連接時被重新熱插拔。因此作為DaoliNet路由器,Docker服務器將在無連接,無資源消耗的狀態下工作。這種網絡資源利用率的風格與容器利用服務器CPU的風格完全匹配,因為閑置的容器會消耗很少的服務器資源。DaoliNet是一種用于連接Docker容器的動態高效的網絡技術。

用于容器的簡單網絡

在DaoliNet中,系統中的Docker服務器正處于一種簡單的狀態,即彼此之間完全獨立,互不知曉。該體系結構不僅節約了資源利用率,更重要的是,Docker服務器之間的獨立關系極大簡化了資源的管理。擴展資源庫和即插即用過程(將服務器添加到庫并通知OpenFlow控制器)一樣簡單。在所需的路由器之間沒有復雜的路由表查找和更新,也沒有必要使用Docker服務器來成對地運行數據包封裝協議,因為這樣做不僅資源利用率低,而且會使網絡診斷和故障排除工具(如跟蹤路由)失效。

安裝

分為安裝環境準備和安裝兩個步驟,點擊 此處 查看具體安裝步驟

使用指南

在開始使用前,請確保系統已經完成安裝過程,同時確保各個服務都正常啟動。DaoliNet提供了一套命令行工具實現如下功能:

  • 使用Group connect/disconnect由使用DaoliNet driver的Docker network創建的子網,在同一子網的容器默認連通;

  • 在任何主機中使用connect/disconnect連接任意兩個容器;

  • 設置防火墻策略控制容器訪問行為。

  • 創建Docker網絡

  • 網絡控制和管理

 

來自: http://www.oschina.net/p/daolinet?fromerr=lUkxEevz

 

 本文由用戶 lipan4 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!