加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 安全 > 正文

测试Docker多主机网络性能

发布时间:2021-01-10 09:33:57 所属栏目:安全 来源:网络整理
导读:《测试Docker多主机网络性能》要点: 本文介绍了测试Docker多主机网络性能,希望对您有用。如果有疑问,可以联系我们。 在过去的博文里,我测试过Docker的网络.MySQL服务器团队(http://mysqlserverteam.com/mysql-with-docker-performance-characteristics/

《测试Docker多主机网络性能》要点:
本文介绍了测试Docker多主机网络性能,希望对您有用。如果有疑问,可以联系我们。

在过去的博文里,我测试过Docker的网络.MySQL服务器团队(http://mysqlserverteam.com/mysql-with-docker-performance-characteristics/)提供了他们自己的结果,和我的观察是一致的.

本文里一系列的测试,想更多关注使用多主机的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”网络,可以使用第三方插件,使用不同的网络实现,最知名的是:1. Calico network
    https://github.com/projectcalico/calico-containers

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

对于多主机网络搭建,只有“overlay”(以及插件实现)可用.我使用“direct”,“host”和“bridge”作为参考以及比对,来衡量overlay实现的额外消耗.

我观察到的结果如下:

观察

  • “Bridge”网络会增加额外消耗,大概12%,这和我之前的benchmark是一致的.但是我想知道这是Docker的额外消耗,还是Linux bridge网络实现的额外消耗.Docker应该使用的是我在《在相同主机上使用Linux Network命名空间运行Percona XtraDB Cluster节点》(https://www.percona.com/blog/2016/06/20/running-percona-xtradb-cluster-nodes-with-linux-network-namespaces-on-the-same-host/)一文里讲述的搭建方式,我怀疑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”网络可以用来做原型设计或者快速测试,但是目前其在高端硬件上的性能有问题.

崔婧雯?译

文章出处:Docker

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读