測試Docker多主機網絡性能

麥小麥秸 8年前發布 | 18K 次閱讀 Docker

本文探討Docker多主機網絡的性能。

在過去的博文里,我測試過 Docker的網絡MySQL服務器團隊 提供了他們自己的結果,和我的觀察是一致的。

本文里一系列的測試,想更多關注使用多主機的Docker網絡。因為當我們搭建高可用(HA)環境(比如,使用Percona XtraDB Cluster)時,就會期望實例運行在不同的主機上。

本文測試的另一個原因是Docker最近發布了1.12版本,支持Swarm Mode。Swarm Mode本身很有意思——在這個版本里,Docker決定在編排部署領域更深入,從而和Kubernetes以及Apache Mesos競爭。我認為Swarm Mode還很粗糙(畢竟是第一個版本),但是我確信Docker會在接下來的幾個版本里繼續優化這個特性。

Swarm Mode還假定用戶在不同的物理主機上運行服務,并且服務通過Docker的網絡通信。我想了解在多主機上使用Docker網絡時性能如何。

網絡性能對于像Percona XtraDB Cluster 和MySQL Group Replication(剛剛發布了另一個 Lab版本 )這樣的集群來說尤為重要。

在我的環境里,使用了兩臺物理服務器,之間通過10GB網絡連接。這兩臺服務器各有56個核的Intel CPU。

Sysbench環境:數據在內存里,僅僅使用主鍵查找。網絡測試中網絡往返很嚴重,但是能夠更清楚得看到對性能的影響。

如下是Docker網絡的可選方案:

- 沒有Docker容器(在下面的結果里標記成“direct”)

- Docker容器使用“host”網絡(標記為“host”)

- Docker容器使用“bridge”網絡,這里服務端口通過端口轉發來暴露(標記為“bridge”)

- Docker容器使用“overlay”網絡,客戶端和服務器都在通過overlay網絡連接的容器里啟動(結果里標記為“overlay”)。對于“overlay”網絡,可以使用第三方插件,使用不同的網絡實現,最知名的是:

- Calico network https://github.com/projectcalico/calico-containers

- Weave network https://github.com/weaveworks/weave

對于多主機網絡搭建,只有“overlay”(以及插件實現)可用。我使用“direct”,“host”和“bridge”作為參考以及比對,來衡量overlay實現的額外消耗。

我觀察到的結果如下:

觀察

  • “Bridge”網絡會增加額外消耗,大概12%,這和我之前的benchmark是一致的。但是我想知道這是Docker的額外消耗,還是Linux bridge網絡實現的額外消耗。Docker應該使用的是我在《 在相同主機上使用Linux Network命名空間運行Percona XtraDB Cluster節點 》一文里講述的搭建方式,我懷疑Linux網絡命名空間和bridge也會帶來額外消耗。需要更多的測試來驗證這一點。
  • 原生的“Overlay”Docker網絡受性能問題困擾。我用ksoftirq在一個CPU內核使用100%時觀察到了問題,并且看到了類似的報告。似乎Docker“overlay”里的網絡中斷并沒有適當分布到多個CPU里。“direct”和“bridge”配置里沒有這樣的問題。我認為這是Docker“overlay”網絡的問題(期望這個問題最終能夠解決)。
  • Weave網絡結果非常糟糕。我看到了很多CPU分配給“weave”容器,因此我認為其實現有很嚴重的擴展性問題。
  • Calico插件在多主機容器場景下性能最佳,甚至比“bridge-bridge”網絡更好。

結論

如果你需要使用Docker“overlay”網絡——如果想要部署多主機環境,或者使用Docker Swarm Mode,這是必須的——我推薦考慮使用Calico的Docker網絡插件。原生的Docker“overlay”網絡可以用來做原型設計或者快速測試,但是目前其在高端硬件上的性能有問題。

原文鏈接: Testing Docker multi-host network performance (翻譯:崔婧雯 校對:)

===========================

譯者介紹

崔婧雯,現就職于IBM,高級軟件工程師,負責IBM WebSphere業務流程管理軟件的系統測試工作。曾就職于VMware從事桌面虛擬化產品的質量保證工作。對虛擬化,中間件技術,業務流程管理有濃厚的興趣。

 

來自:http://dockone.io/article/1635

 

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