1. 程式人生 > >Docker Weave 介紹 or 工作原理

Docker Weave 介紹 or 工作原理

Docker 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路由器能夠告知核心如何處理資料包。

OpenvSwich datapath和VXLAN功能在Linux核心版本3.12+才支援,如果核心不支援,則Weave Net使用”user mode”資料包路徑。Weave Net會自動選擇兩臺主機之間最快的路徑傳輸資料,提供近原生吞吐量和延遲。

特點:

# 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 傳送資料包到對端容器通訊

1、ethwe 會將資料包傳送給vethwe-bridge網橋。
2、vethwe-bridge接收到資料包後由weave去處理這個資料,通過UDP6783資料埠依照weave的路由錶轉發到下一路由節點。
3、如果該節點就是目的地,本地weave會把資訊轉發到核心的TCP協議站,再轉發到目的節點。