本文探讨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”网络可以用来做原型设计或者快速测试,但是目前其在高端硬件上的性能有问题。

转载于:https://www.cnblogs.com/bethal/p/6046816.html

docker多主机网络方案相关推荐

  1. Docker 跨主机网络方案分析

    PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...

  2. docker单主机网络类型

    作为小笔记参考!!! 这个文主要写了docker 单主机网络类型 none host container bridge 前面三个是简单的带过 最后会详细的说下bridge网络 docker安装的时候会 ...

  3. docker跨主机网络——overlay与macvlan

    docker的跨主机网络 前言 这篇文件分两种方式介绍docker跨主机通信,overlay和macvlan,macvlan的方式给大家做个参考,生产环境下不推荐大家使用这种方式

  4. docker单主机网络

    当你安装Docker时,它会自动创建三个网络.你可以使用以下docker network ls命令列出这些网络: [root@localhost ~]# docker network ls NETWO ...

  5. docker 网络方案--分析

    这篇文章主要是弥补自己网络方面的知识,不提供参考意见 关于SDN和容器 作为近年来比较热的一个概念,众所周知SDN是Software Defined Network的缩写,即软件定义网络.但不同的人对 ...

  6. 在 Docker 中运行 MySQL:多主机网络下 Docker Swarm 模式的容器管理

    本文将以多主机网络环境为基础,探讨如何利用内置编排工具 Docker Swarm 模式对各主机上的容器加以管理. Docker Engine – Swarm 模式 在多台主机之上运行 MySQL 容器 ...

  7. docker swarm MySQL_容器与云|在 Docker 中运行 MySQL:多主机网络下 Docker Swarm 模式的容器管理...

    本文将以多主机网络环境为基础,探讨如何利用内置编排工具 Docker Swarm 模式对各主机上的容器加以管理. Docker Engine – Swarm 模式 在多台主机之上运行 MySQL 容器 ...

  8. PPTV Docker集群的网络方案选型

     原作者:李周     转载来源:http://dockone.io/article/1673 PPTV Docker集群的网络方案选型 作者介绍:李周,现PPTVDCOS技术主要负责人.专注于Doc ...

  9. 多主机网络下 Docker Swarm 模式的容器管理

    导读 本文将以多主机网络环境为基础,探讨如何利用内置编排工具 Docker Swarm 模式对各主机上的容器加以管理. Docker Engine – Swarm 模式 在多台主机之上运行 MySQL ...

最新文章

  1. 美国独步世界的八大领域
  2. 动态更新ViewPager?
  3. 全面收紧!继新加坡后,又一地拟暂停数据中心建设
  4. JavaScript实现跳跃游戏的动态编程自下而上的方法的算法(附完整源码)
  5. 如何使用idea生成javaDoc文档
  6. KPI总结模板:What
  7. 经典Hello Word窗口表示,可视化编程入门。
  8. 根据省份id查询当前的省会/简称/省会城市
  9. Unity Scene视图介绍
  10. 【脚本】去掉win7快捷方式的小箭头
  11. 奇迹mysql老是被误杀_【鸟友汇】致歉少时打雀被误杀的生灵们:傻老嘎、春暖儿、窜鸡、老麦……...
  12. QML快捷键(Shortcut、Keys)
  13. Linux使用带时区转换的时间函数注意事项(负负得正)
  14. D - Petya and Array(树状数组,二分)
  15. Uinty3d 工程导入 Android Studio
  16. 虚拟人物设计-虚拟动作编排-虚拟数字人生成
  17. oracle数据库exp/imp导出导入数据
  18. 泰拉瑞亚修改器服务器能用吗,泰拉瑞亚修改器使用方法详细讲解
  19. 线性代数【21】特征值和特征向量的几何意义
  20. 计算机进入桌面黑屏怎么办,电脑开机进入桌面就黑屏怎么解决??

热门文章

  1. 家庭扫地机器人竞争升级 带手臂提供移动服务或是未来方向
  2. Java中的几种引用类型_Java中的几种引用类型(转载)
  3. go mysql 乱码_MySQL 乱码之我见
  4. linux转mysql_转linux下mysql命令
  5. 计算机技术在工程的应用浅论,《计算机技术在计算机应用技术中的应用浅论》...
  6. android 情景感知 sdk,情景感知服务
  7. php sftp 删除,Linux中安装,卸载ftp|sftp服务
  8. Rabbitmq如何保证消息顺序执行
  9. springboot 启动类注解 @SpringBootApplication 和 @ComponentScan 的问题
  10. 030_vue命名路由