Docker Weave 介紹 or 工作原理


Docker Weave Network

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協議站,再轉發到目的節點。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM