原文出自【听云技术博客】:http://blog.tingyun.com/web/article/detail/406
随着公司业务的不断增长,我们的应用数量也有了爆发式增长。伴随着应用爆发式的增长,管理的难度也随之加大。如何在业务爆发增长的同时快速完成扩容成了很大的挑战。Docker的横空出世恰巧解决了我们的问题。利用Docker我们可以快速完成扩容缩容,且配置统一,不易出错。
在Docker的集群管理选型上,我们比较纠结,目前比较流行的是Mesos和Kubernetes。从功能来说,我们更倾向于使用Kubernetes,他在容器编排方面的能力强于Meoso,且提供了持久化存储方案,更适合我们的场景。但是Kubernetes的网络模型要比Mesos复杂,在高并发的情况下性能能否满足需求成了关键问题。
Mesos本身不处理网络问题,利用Marathon我们可以选择Docker本身提供的Host模式和Bridge模式。Host模式与宿主机共享网络栈网络性能是最高的,Bridge模式有待评测。
Kubernetes采用扁平化的网络模型,要求每个Pod拥有一个全局唯一IP,Pod直接可以跨主机通信。目前比较成熟的方案是利用Flannel。Flannel有几种工作模式,分别是UDP、VXLAN、Host-gw和Aws-vpc。Aws-vpc有平台局限性我们不考虑,UDP性能较差不考虑。重点测试VXLAN和Host-gw。有相关评测测试过Host-gw性能好于VXLAN,但是Host-gw模式要求宿主机的网络满足二层直接交换。这在许多共有云平台是无法满足的。即使共有云平台某个机房内可以满足该网络要求,多机房互联时也无法满足该要求。如果VXLAN模式无法满足需求,多机房互联时就需要多个Kubernetes集群,增加了管理难度。
为了使结果更具真实性,我们选了线上一个并发较高的系统进行评测。机器配置均为16C 32G,应用本身不存在性能问题。由于Kubernetes要求网络互联,我们测试Kubernetes时选用两台机器。
综上,我们待测得环境如下:
待测机器 | 机器配置 | 机器数量 |
K8s flannel vxlan | 16C 32G | 2 |
K8s flannel host-gw | 16C 32G | 2 |
Mesos host模式 | 16C 32G | 1 |
Mesos bridge模式 | 16C 32G | 1 |
公有云虚机(对比) | 16C 32G | 1 |
听云Server可以监控代码级的响应时间,在负载均衡上加上一个头信息可以监测到负载均衡到后端RealServer的阻塞时间。利用这个特性,我们可以用来评测上述几种网络模型的阻塞时间,从而得出高并发情况下VXLAN模型能否满足我们的需求。
听云Network可以模拟请求到服务端,综合取得全国各地的网络访问时间,我们可以利用它来监测同时用这几种模型的时候是否对生产系统产生影响。
测试方法:我们由公有云提供的负载均衡分别往这7台机器上打相同的流量。通过听云Server来监控这几种模型的阻塞时间来对比他们的性能差异。同时观察听云Network的可用性和访问性能,从客户端的角度看是否因为某个模型网络性能差导致用户体验变差。如下图所示:
我们在负载均衡后加入这些机器
其中第一个8080为公有云虚机,30099端口的为VXLAN的service,30098的两台机器为Host-gw的service,8081端口为Docker bridge模式,8080端口为Host模式。
我们先用听云Network看下整体服务是否受到影响。
下图是性能曲线图,有波动,属于正常范围。我们是HTTPS服务,前端负载均衡负责解码SSL,会消耗部分时间。
排除掉一些点本身的网络问题,可用性基本在100%。
接下来对比下看下听云Server。
下图为吞吐率,平均值为425081rpm。 共7台,平均每台吞吐率约为60725rpm。
下图为服务器响应时间图。
时间约为0.67秒,与前边听云Network测试的时间基本吻合。
从图上看大部分时间花在阻塞时间。这里我们要详细分解下阻塞时间,从而获取我们要评测的网络性能。
阻塞时间的定义是从负载均衡到后端RealServer的时间。这个时间在我们的场景下为
K8s: 阻塞时间=SSL解码时间+负载均衡响应时间+转发包给后端虚机时间+flanneld转发包时间。
Mesos bridge: 阻塞时间=SSL解码时间+负载均衡响应时间+转发包给后端虚机时间+本机NAT转发时间
Mesos host: 阻塞时间=SSL解码时间+负载均衡响应时间+转发包给后端Docker时间。
云虚机对比: 阻塞时间=SSL解码时间+负载均衡响应时间+转发包给后端虚机时间。
我们只要对比下各个测试情况下阻塞时间,将云虚机的Docker消耗时间记为0.
其他机器与与云虚机作的阻塞时间做减法,就可以得出相对应网络消耗。
两台机器的我们取平均值。
待测机器 | 平均阻塞时间 | Docker本身消耗 |
K8s flannel vxlan | 644.778ms | 6.778ms |
K8s flannel host-gw | 641.585ms | 3.585ms |
Mesos host模式 | 650.021ms | 12.021ms |
Mesos bridge模式 | 643.67ms | 5.67ms |
公有云虚机(对比) | 638ms | 0 |
上表的结果中,Host模式耗时最长出乎我们的意料,可能是个例因素导致。其他结果和我们的预期基本符合。其中VXLAN模式平均比公有云虚机多6ms的同时网络适应能力强,应该可以满足我们的需求。
在更大的并发下会怎样呢?通过横向扩展是否能达到我们的性能需求呢?
我们在此基础上测试了20台K8s vxlan模式与32台云主机机同时跑在上千万rpm的场景。从流量各半到逐步加大K8s的量来观察性能影响,同时观察其稳定性,测试结果下期揭晓。
各位小伙伴在应用架构迁移到K8s、Mesos或者原生Docker时,也可以利用听云的工具,测试下架构变更后对真实系统的影响。
原文链接:
相关推荐
【编者的话】Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、扩展机制等功能。Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。Mesos最初是由加州大学伯克利分校的AMPLab...
而Kubernetes-Mesos正是我们基于这一理念所开发出的技术成果,其能够将Kubernetes作为原生Mesos框架处理并运行在DCOS之上。Kubernetes-Mesos 能够通过DCOS命令行软件包管理器轻松 完成安装,且可以同任意数量的其它...
把Kubernetes运行在Mesos集群之上,可以和其他的框架共享集群资源,提高集群资源的利用率。本文是“Kubernetes和Mesos集成指南”系列文章第一篇:实战部署。现在Kubernetes官方提供的部署基于Mesos的Kubernetes集群...
Mesos 为集群中跨节点的 pod 提供细粒度的资源分配,并促进 Kubernetes 和运行在同一集群上的其他框架之间的资源共享。 这仍然是一项正在进行中的工作,但随着我们的继续开发,请继续关注更新。 如果您有想法或补丁...
在Docker中运行Kubernetes-Mesos 建造 要构建容器,您需要在本地运行Docker守护程序,然后可以运行: ./build.sh 上面的命令从docker容器中的源代码构建kubernetes-mesos二进制文件,并将它们放置到./km文件夹中。...
从Mesos到Kubernetes
高性能高并发服务器架构的优化心得是指在服务器架构设计中,如何提高服务器的性能和并发能力。在大型高负载网站服务器的优化中,需要从多方面入手,包括服务器硬件的选择、操作系统的优化、数据库的优化、Web 服务器...
3. 高度可靠性:Mesos可以提供高可用性和容错性,确保系统的稳定运行。 Mesos也可以与其他技术栈集成,例如: 1. Kubernetes:Mesos可以与Kubernetes集成,提供更加强大的容器编排和管理功能。 2. Docker:Mesos...
Mesos的核心理念是资源抽象和共享,它能够有效地在集群中分配计算和存储资源,为上层框架如Hadoop、Spark、Kubernetes等提供统一的资源管理层。通过Mesos,开发者可以轻松地构建容错、弹性的应用,同时减少运维的...
Master负责全局资源管理和调度,Agent在每个节点上运行,管理本地资源,而Framework则是运行在Mesos之上的应用程序或服务,如Hadoop、Spark和Kubernetes等。 3. **Mesos调度机制**:Mesos采用的是分布式资源调度...
Cook可以充当Spark调度程序,它带有 , , 和 。 是开始学习更多知识的好地方。发布检查以获取发行信息。子项目摘要在此存储库中,您将找到几个子项目,每个子项目都有自己的文档。 scheduler -Cook是真正
在集群的高可用性和扩展性方面,Kubernetes通过Replication Controllers和Deployments来保证Pod的高可用,使用Label和Selector来管理Pod的分组和访问,通过命名空间(Namespace)实现多租户环境的隔离和管理。...
本次测试旨在评估Mesos在不同场景下的表现,特别是其资源管理和任务调度能力。通过对比MonteCarloArea算法在不同环境中的运行效率,我们可以更深入地了解Mesos的工作原理及其在分布式计算领域的优势。 #### 二、...
在安装过程中,用户需要考虑集群的网络配置、存储设置以及安全机制,以确保集群的高可用性和稳定性。此外,Kubernetes本身也支持高可用架构,通过配置多个Master节点以及工作节点来保障系统的持续运行。 对于希望...
在某些场景下,Mesos可以与Kubernetes协同工作,提供更强大的集群管理能力。 总的来说,基于Kubernetes和Docker的云平台设计旨在构建一个可扩展、高可用、自动化运维的环境,它通过容器化技术简化了应用部署和管理...
Mesos 是一个强大的资源共享平台,设计用于在数据中心实现细粒度的资源共享,特别是针对多样化的集群计算框架,如 Hadoop 和 MPI。该平台的主要目标是提高集群的使用效率,避免因每个框架需要单独的数据复制而导致的...
容器 微服务 Docker Mesos Kubernetes 容器技术和微服务”系列公开课 • Docker——⼀一种全新的⼯工作⽅方式 • 容器编排⼯工具Docker Swarm • 数据中⼼心操作系统的内核——Apache Mesos • ⼤大数据、Web服务、C...
随着Kubernetes的普及,许多大型企业开始采用云原生技术,例如Apple从Mesos转向Kubernetes,MasterCard利用OAM、Kubernetes和Crossplane构建跨云、跨运行时的应用交付平台。这些企业不再局限于传统的IaaS、PaaS和...
Mesos技术是云计算领域中的一个热点技术,它在云运维和PaaS(平台即服务)中展现出了强烈的需求和应用价值。Mesos的主要作用是对数据中心进行统一管理,使得企业能够像操作一台电脑那样来管理和使用整个数据中心。其...