文章出自:听云博客

随着公司业务的不断增长,我们的应用数量也有了爆发式增长。伴随着应用爆发式的增长,管理的难度也随之加大。如何在业务爆发增长的同时快速完成扩容成了很大的挑战。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时,也可以利用听云的工具,测试下架构变更后对真实系统的影响。

原文链接:http://blog.tingyun.com/web/article/detail/406

利用听云Server和听云Network实测Kubernetes和Mesos在高并发下的网络性能的更多相关文章

  1. 使用睿云智合开源 Breeze 工具部署 Kubernetes v1.12.3 高可用集群

    一.Breeze简介 Breeze 项目是深圳睿云智合所开源的Kubernetes 图形化部署工具,大大简化了Kubernetes 部署的步骤,其最大亮点在于支持全离线环境的部署,且不需要FQ获取 G ...

  2. 云server 性能测试web压力测试

    前言:如今,云server主流.它已成为许多中小型企业的首选server,但是云server它是一个虚拟机.所以性能是一个大问题,从这里开始介绍云server性能测试,云webserver压力测试. ...

  3. 关于腾讯云server使用FTP具体配置教程

    本文文件夹:-------------------------------------------------------- [-] 腾讯云server介绍 关于腾讯云server使用感受 作为开发人 ...

  4. 从SQL Server CloudDBA 看云数据库智能化

    最近阿里云数据库SQL Server在控制台推出了CloudDBA服务,重点解决数据库性能优化领域问题,帮助客户更好的使用好RDS数据库,这是继MySQL之后第二个关系型数据库提供类似的服务.   数 ...

  5. Windows Server基础架构云参考架构:硬件之上的设计

    作者 王枫 发布于2014年1月27日 综述 毫无疑问,移动互联网.社交网络.大数据和云计算已经成为IT发展的四个大的趋势.其中云计算又为前三个提供了一个理想的平台.今天不仅互联网公司,很多传统行业的 ...

  6. 基于阿里云server搭建SVNserver

    基于阿里云server搭建SVNserver 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/details/8577 ...

  7. 阿里云server(ECS)优惠券领取

    CoderMan的博客也是放置在阿里云的ECS上.速度绝对是刚刚的,大家打开的速度肯定不会慢. 有些同志们至今可能还在用虚拟主机吧,其实阿里云server真心不贵,有俩种计费方式:各自是按月计费和按流 ...

  8. 阿里云server该数据光盘安装操作

    猛击这里:阿里云server该数据光盘安装操作

  9. 云server之间实时文件同步和文件备份的最简单高效的免费方案

     分布于不同云计算中心的多台云server,通常须要进行文件同步.以满足业务的须要. 传统的文件同步方案,部署繁琐.同步实时性差.无法令人惬意. 端端Clouduolc,一款纯p2p方式的文件实时 ...

随机推荐

  1. The Web server is configured to not list the contents of this directory.

    部署一个ASP.NET MVC网站至一个全新的服务器Windows Server 2008 R2, 数据为MS SQL Server 2014 64bit Expression版本. 运行时,它第一次 ...

  2. 在Winform开发中使用日程控件XtraScheduler

    在一些应用场景中,我们可能需要记录某一天,某个时段的日程安排,那么这个时候就需要引入了DevExpress的日程控件XtraScheduler了,这个控件功能非常强大,提供了很好的界面展现方式,以及很 ...

  3. c#获取当前应用程序所在路径

    一.获取当前文件的路径1.   System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName     获取模块的完整路径,包括文 ...

  4. css背景图

  5. MySQL: @variable vs. variable. Whats the difference?

    MySQL: @variable vs. variable. Whats the difference?   up vote351down votefavorite 121 In another qu ...

  6. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  7. log4j配置文件详解

    在开发中经常会碰到日志,网上关于日志的框架也很多,像log4j.self4j.common-logging等,下面对log4j进行介绍. log4j是java开发的日志框架,具有低侵入的特点,其重点使 ...

  8. 「Ionic」創建新項目

    1.創建新項目 创建一个名为myApp的还有tabs的项目(ionic start <project-name> <optional-template>) 可选模板为sidem ...

  9. mysql定时任务简单例子

    mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9     如果要每30秒执行以下语句:   [sql] update userinfo set endtime = now() WHE ...

  10. 图解“管道过滤器模式”应用实例:SOD框架的命令执行管道

    管道和过滤器 管道和过滤器是八种体系结构模式之一,这八种体系结构模式是:层.管道和过滤器.黑板.代理者.模型-视图-控制器(MVC) 表示-抽象-控制(PAC).微核.映像. 管道和过滤器适用于需要渐 ...