Docker Weave 介紹 or 工做原理

Docker Weave Networkdocker

Weave Network:屬於第三方網絡項目。服務器

Weave在Docker主機之間實現Overlay網絡,使用業界標準VXLAN封裝,基於UDP傳輸,也能夠加密傳輸。網絡

Weave Net建立一個鏈接多個Docker主機的虛擬網絡,相似於一個以太網交換機,全部的容器都鏈接到這上面,互相通訊。架構

Weave Net由多個peer組成,Weave路由器運行不一樣Docker主機上,是一個用戶空間的進程;每一個peer都有一個名稱,重啓保持不變。它們經過TCP鏈接彼此,創建後交換拓撲信息。負載均衡

Weave Net能夠在具備編號拓撲的部分鏈接的網絡中路由數據包。學習

例如:在下面網絡中,peer1直接鏈接2和3,可是若是1須要發送數據包到4和5,則必須先將其發送到peer3。加密

Weave Net中的」fast data path」使用Linux內核的OpenvSwich datapath模塊。該模塊使Weave Net路由器可以告知內核如何處理數據包。spa

OpenvSwich datapath和VXLAN功能在Linux內核版本3.12+才支持,若是內核不支持,則Weave Net使用」user mode」數據包路徑。Weave Net會自動選擇兩臺主機之間最快的路徑傳輸數據,提供近原生吞吐量和延遲。code

特色:blog

# IP地址管理(IPAM)
Weave自動爲容器分配惟一的IP地址。可經過weave ps查看

# 命名和發現
命名的容器自動會註冊到Weave DNS中,並能夠經過容器名稱訪問。
注:weave本身維護了一個微型的dns服務器。能夠實現主機名通訊。

# 負載均衡
容許註冊多個相同名稱的容器,Weave DNS隨機爲每一個請求返回地址,提供基本的負載均衡功能。
注:若是訪問容器名相同,則會自動輪詢訪問該容器,實現負載均衡。

# 手動指定IP地址
docker run –it –e WEAVE_CIDR=10.32.0.100/24 busybox

# 動態拓撲
能夠在不中止或從新配置剩餘Docker主機的狀況下添加主機到Weave網絡中或從Weave網絡中刪除

# 容錯
weave peer不斷交換拓撲信息,監視和創建與其餘peer的網絡鏈接。若是有主機或網絡出現故障,Weave會繞過這個主機,保證兩邊容器能夠繼續通訊,當恢復時,恢復徹底鏈接

Docker Weave 工做原理

  • 網卡設備
  • Container eth0:eth0是容器主機的默認網絡,主要提供容器訪問外網所提供的服務,走的默認docker網絡架構,只不過他建立了docker_gwbridge這個網橋。
  • docker_gwbridge:docker_gwbridge是容器所建立的網橋它替代了docker0的服務。
  • Contailner ethwe:它是veth pair虛擬設備對,與其餘容器通訊的網絡虛擬網卡。
  • vethwe-bridge:是ethwe設備對建立的weave網橋。網橋內分配的具體的IP與網關。
  • weave:weave網橋,經過route路由表找到目標,經過端口將數據包轉發到對端端口節點。
  • eth0:真機網卡與外界網卡鏈接得真機網卡,它用來轉發,容器VXLAN與NAT兩種網卡類型的數據包到指定的對端節點。
  • 注:weave會將相鄰的節點互相學習,經過route路由表進行相互通訊,並經過單獨的端口發送數據。相似於靜態路由。

Contailner ethwe 發送數據包到對端容器通訊

一、ethwe 會將數據包發送給vethwe-bridge網橋。
二、vethwe-bridge接收到數據包後由weave去處理這個數據,經過UDP6783數據端口依照weave的路由錶轉發到下一路由節點。
三、若是該節點就是目的地,本地weave會把信息轉發到內核的TCP協議站,再轉發到目的節點。

相關文章
相關標籤/搜索