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”网络可以用来做原型设计或者快速测试,但是目前其在高端硬件上的性能有问题。
docker多主机网络方案的更多相关文章
- Docker 跨主机网络方案分析
PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...
- Docker跨主机网络——overlay
前言 在Docker网络--单host网络一文中,我为大家总结了Docker的单机网络相关知识和操作,单机网络比较容易.本文我为大家总结Docker跨主机通信相关知识.同样本文大部分内容以CloudM ...
- Docker系列04—跨主机网络方案(overlay/weave)
在前面详细讲解了几种网络模式:none,host,bridge,container.他们解决了单个主机间的容器的通信问题,并不能实现多个主机容器之间的通信. 跨主机网络方案包括两大类: 1,docke ...
- Docker 跨主机网络 overlay(十六)
目录 一.跨主机网络概述 二.准备 overlay 环境 1.环境描述 2.创建 consul 3.修改 docker 配置文件 4.准备就绪 三.创建 overlay 网络 1.在 host1 中创 ...
- Docker多主机网络 OpenvSwitch
一.Open vSwitch Open vSwitch(以下简称为OVS),英文全称:OpenVirtual Switch,顾名思义,Open vSwitch就是开放虚拟交换.我们可以把他理解成 ...
- Docker 多主机网络总结(非常全)
PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...
- Docker多主机网络
网络术语概念 二层交换技术:工作在OSI七层网络模型的第二层,通过MAC地址进行帧转发 三层交换技术:也称为IP交换技术,工作在OSI七层网络模型的第三层,通过IP地址进行包转发.它解决了局域网中网段 ...
- docker 跨主机网络:overlay 简介
简介 docker 在早前的时候没有考虑跨主机的容器通信,这个特性直到 docker 1.9 才出现.在此之前,如果希望位于不同主机的容器能够通信,一般有几种方法: 使用端口映射:直接把容器的服务端口 ...
- Docker 单主机网络
PS:欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 当容器逐步向容器集群,容器云技术演进的时候,一个不得不面对的问题就是各 ...
随机推荐
- linuxmint 15/ ubuntu 13.04 install OpenERP client 6.0.4
As we all know OpenERP is a great open-source ERP/CRM project. It does help people a lot when workin ...
- 10161 - Ant on a Chessboard
Problem A.Ant on a Chessboard Background One day, an ant called Alice came to an M*M chessboard. She ...
- 回溯法、数独与N阶可达问题
回溯法是剪了枝的穷举,这是字面上的说法,不太好理解,不如讲解实例来的酸爽,于是引出了N阶可达问题: 有N个国家,每个国家有若干城市,小明要从中国(任意一个城市)出发,遍历所有国家(假设这个遍历顺序已经 ...
- CSS多列、用户界面属性
CSS多列 常用属性: column-count 分几列 column-gap 列间距 column-rule 列分割线的样式(写法和border一样) 例如: 一个div分三列,列之间间距为10px ...
- WIN10使用管理员权限运行VS2013
学习WCF时出现报错-- 其他信息: HTTP 无法注册 URL http://+:8083/User/.进程不具有此命名空间的访问权限(有关详细信息,请参见 http://go.microsoft. ...
- python爬虫---python3.5---eclipse
解析中文会出现\xbe\c8\90\hd........ 这个和你的编码选择有关.如果是解析成html,则需 fout = open('output.html', 'w',encoding='utf- ...
- c# base和this在构造函数中的应用
构造函数可以使用 base 关键字来调用基类的构造函数.例如: public class Manager : Employee{ public Manager(int annualSalary) : ...
- Uva 10780 Again Prime? No Time.(分解质因子)
题意:给你两个数m和n,问 n! 可以被 m^k 整除的k的最大值 思路:从这道我们可以想到n!末尾有多少个0的问题,让我们先想一下它的思想,我们找 n! 末尾有多少0, 实际上我们是在找n!中5的个 ...
- Vultr新加坡机房速度怎么样?值得购买吗?最新评测!
2016年9月,Vultr vps开通了新加坡Singapore机房线路.与知名的竞争对手Digitalocean和Linode一样,新加坡机房对亚洲速度友好,是讨用户欢心的一个进步. 但是,vult ...
- 谷歌游览器对<input type='file'> change只能响应1次解决和样式的改变
在项目过程中遇到的需要上传本地文件,file的原始控件不太美观,但是这个控件和button有点不太一样, 改变这个样式的思路就是在控件外面套一层链接,然后把file控件的透明度设置为0(透明).样式只 ...