docker做服务器性能,测试Docker多主机网络性能

《测试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实现的额外消耗.

我观察到的结果如下:

观察

2017092618205743070.jpg

“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

总结

以上是编程之家为你收集整理的测试Docker多主机网络性能全部内容,希望文章能够帮你解决测试Docker多主机网络性能所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:

编程之家官方1群

编程之家官方2群

编程之家官方3群

编程之家官方4群

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值