最新pingmesh中文翻译.docx

上传人:b****8 文档编号:10937252 上传时间:2023-02-23 格式:DOCX 页数:27 大小:820.14KB
下载 相关 举报
最新pingmesh中文翻译.docx_第1页
第1页 / 共27页
最新pingmesh中文翻译.docx_第2页
第2页 / 共27页
最新pingmesh中文翻译.docx_第3页
第3页 / 共27页
最新pingmesh中文翻译.docx_第4页
第4页 / 共27页
最新pingmesh中文翻译.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

最新pingmesh中文翻译.docx

《最新pingmesh中文翻译.docx》由会员分享,可在线阅读,更多相关《最新pingmesh中文翻译.docx(27页珍藏版)》请在冰豆网上搜索。

最新pingmesh中文翻译.docx

最新pingmesh中文翻译

 

pingmesh(中文翻译)

Pingmesh:

数据中心网络时延测量与分析的大规模系统

摘要

我们能在一个大规模的数据中心网络中的任意两个服务器之间获得任何时候的网络延迟吗?

收集的延迟数据可以用来定位一系列问题:

告知应用程序是否被感知延迟问题是由网络引起的,定义和跟踪网络服务级别协议(SLA),自动网络故障排除。

我们已经开发了Pingmesh:

大型数据中心的网络延迟测量和分析系统来回答上述问题。

pingmesh系统已经在微软数据中心运行超过四年,它每天收集数百万兆字节延迟数据。

Pingmesh不仅广泛被网络软件开发人员和工程师使用,也包括应用程序和服务开发人员和运营商。

CCS的概念

•网络→网络测量;云计算;网络监控;•计算机系统

组织→云计算;

关键词

数据中心联网;网络故障诊断;静默丢包

1简介

现在的数据中心中有成千上万的服务器。

这些服务器是通过网络接口卡(NIC),交换机和路由器,电缆和光纤连接,形成大规模的批内和批间数据中心网络。

数据中心网络规模(DCNS)由于云计算的快速发展越来越大。

在物理数据中心基础设施之上,构建了各种大规模的分布式服务,例如,搜索[5],分布式文件系统[17]和存储[7],MapReduce[11]。

这些分布式服务是大型的、演化的软件系统,具有多个组件并且有复杂的依赖关系。

所有这些服务都是分布式的,他们的许多组件需要通过在一个数据中心或不同的数据中心之间进行网络交互。

在这样的大系统中,软件和硬件失败是常态而非例外。

因此,网管团队面临着一些挑战。

第一个挑战是确定一个问题是否是一个网络问题。

由于分布式系统的特性,许多故障表现为“网络”问题,例如,某些组件只能间歇性地到达,或端到端延迟增加到九十九个百分点,网络吞吐量从20Mb/s下降到小于5MB/s。

我们的经验表明大约50%的“网络”问题不是网络本身造成的.然而,也不能简单地说一个“网络”问题是否确实是由网络引起的。

第二个挑战是定义和跟踪网络服务水平协议(SLA)。

许多服务需要网络提供一定的性能保证。

例如,搜索查询可能涉及数千个服务器,搜索查询的性能取决于最慢服务器的最后一次响应。

这些服务对网络延迟和丢包是敏感的。

他们关心网络服务水平协议SLA。

网络SLA对于不同的服务需要单独测量和跟踪。

因为它们可能使用不同的服务器集群和或者不同的网络。

这是一项艰巨的任务,由于网络中数量庞大的服务和客户。

第三个挑战是网络故障诊断。

网络服务水平协议SLAs由于各种网络问题和“直播网站”事件被破坏。

直播网站事件会对客户,合作伙伴或收入产生影响。

直播现场事件需要被尽快检测,缓解和解决。

但是数据中心网络有成百上千的服务器,交换机,以及数以百万计的电缆和光纤。

因此,检测问题所在的位置是一个难题。

针对上述问题,我们设计并实现了Pingmesh:

一个大型数据中心的网络延迟测量分析系统。

pingmesh利用所有服务器发起TCP或HTTP层提供最大延迟的测量范围。

pingmesh形成多层次的完整图。

在数据中心,Pingmesh让机架内的服务器构成一个完整的图形,并使用机架(Tor)开关的顶部作为虚拟节点,并让它们形成第二个完整图。

在数据中心中,Pingmesh通过处理每个数据中心作为一个虚拟节点形成了第三个完全图。

完整的图及相关参数的计算由一个中央pingmesh控制器控制。

测量的延迟数据被收集和存储,通过数据存储和分析管道进行汇总和分析。

从延迟的数据,网络SLAs的定义和在宏观层面追踪(即数据中心层面)和微观层面(例如,每服务器和每机架水平)。

所有的服务和应用SLAs网络的服务和应用程序映射到他们使用的服务器计算。

Pingmesh已经在成千上万的全球分布式数据中心的微软运行了四年。

它产生24百万兆字节数据和2000亿多个探头的每一天。

由于Pingmesh数据的通用性,回答如果直播网站事件是因为网络变得更容易:

如果Pingmesh的数据并不表明网络问题,然后LiveSite可以满足事件不是由网络引起的。

Pingmesh是大量用于网络故障定位问题所在。

通过可视化和自动模式检测,我们能够回答何时何地数据包下降和/或延迟增加,识别无声开关包下降和黑洞在网络中。

由Pingmesh制作的结果也被用于应用程序开发人员和服务考虑网络更好的服务器选择算子延迟和丢包率。

本文提出了以下贡献:

我们展示的可行性建设大规模的网络延迟测量和分析系统的设计与实现Pingmesh。

通过让每个服务器参与,我们提供所有服务器的延迟数据。

我们发现,pingmesh可以帮助我们更好地了解数据中心网络的定义,在宏观和微观范围跟踪网络的SLA,并pingmesh有助于揭示和定位开关的分组丢失数据包的黑洞和沉默的随机丢包,这是不了解以前。

2背景

2.1数据中心网络

数据中心网络通过高速连接服务器,提供高服务器到服务器带宽。

今天的大型数据中心网络是由商品以太网交换机和路由器(1,12,2)构建的。

图1显示了典型的数据中心网络结构。

该网络有两部分:

内部数据中心(dc)网络和数据中心(dc)网络。

内部直流网络是一个典型的Clos几个IERS类似网络在[1,12,2]描述网络。

在第一层中,数以万计的服务器(例如,40)使用万兆以太网或40GbE以太网网卡连接到架顶式(TOR)开关,形成一个豆荚。

TOR交换机上(例如,20)将被连接到第二层叶片开关(例如,2-8)。

这些服务器和ToR和叶片开关形成podset。

多podsets然后连接到第三层交换机的脊柱(几十到几百)。

通过使用现有的以太网交换机,内部DC网络可以连接数万个或更多的具有高网络容量的服务器。

内部DC网络的一个很好的特性是多叶和脊交换机提供了一个冗余的多径网络。

ECMP(等价多路径)是用于负载平衡流量在所有的路径。

ECMP采用TCP/UDP五元组的选择下一跳的哈希值。

因此,即使在连接的五元组已知的情况下,TCP连接的确切路径在服务器端也不知道。

这原因,找到一个错误的脊柱开关是不容易的。

直流网络是连接内部直流网络和连接直流网络到因特网的网络。

间直流网络采用高速、长距离光纤连接不同geolocations网络数据中心。

软件定义网络(天鹅[13],在[16])进一步引入更好的广域网流量工程。

我们的数据中心网络是一个大型的、复杂的分布式系统。

它由成百上千的服务器、成千上万的交换机和路由器组成,还有数以百万计的电缆和光纤。

它是由自动驾驶仪管理的[20],我们土生土长的数据中心管理。

软件栈,和交换机和网卡运行软件和固件不同交换机和网卡供应商提供。

运行在网络顶部的应用程序可能会引入复杂的流量模式。

2.2网络延迟和丢包

在本文中,我们使用术语“网络延迟”。

应用程序的观点。

当服务器上的应用程序A在对等服务器上向应用程序B发送消息时,网络延迟被定义为从发送消息到接收消息的时间的时间间隔。

在实践中,我们测量往返时间(RTT)由于RTT测量不需要同步的服务器时钟。

RTT是由应用程序处理的延迟,操作系统内核的TCP/IP协议栈和驱动程序的处理时间,网卡介绍延迟(例如,DMA操作,中断调制)[22],分组传输时延、传播时延、排队时延,在沿路径的分组交换缓冲了。

有人可能会说,应用程序和内核堆栈引入的延迟并不真正来自网络。

实际上,我们的经验告诉我们,我们的客户和服务开发人员并不关心。

一旦观察到延迟问题,通常称为“网络”问题。

网络团队有责任说明这个问题是否确实是一个网络问题,如果是,减轻和根本上造成问题。

用户感知的延迟可能会增加,由于各种原因,例如,排队延迟,由于网络拥塞,繁忙的服务器CPU,应用程序错误,网络路由问题,等我们也注意到,包滴增加用户感知延迟,因为数据包丢失,需要重传。

在不同的地方,由于各种原因,如可能发生丢包,纤维FCS(帧校验序列)的错误,交换ASIC的缺陷,开关织物疵点、交换机软件的bug,网卡的配置问题,网络拥塞,等我们看到所有这些类型的问题在我们的生产网络。

2.3数据中心管理和数据处理系统

接下来我们介绍自动驾驶仪[20]和宇宙和范围[15]。

数据中心由集中的数据中心管理系统管理,例如自动驾驶仪[20]或博格[23]。

这些管理系统提供了如何管理包括物理服务器在内的资源、如何部署、调度、监视和管理服务的框架。

Pingmesh是在自动驾驶仪的框架构建。

自动驾驶仪是微软的自动数据中心管理软件栈。

它的理念是运行软件,使所有数据中心管理任务自动化,包括故障恢复,尽可能少地涉及人员。

使用自动驾驶仪术语,集群是一组由服务器连接的服务器。

本地数据中心网络由自动驾驶环境管理。

自动驾驶环境有一套自动驾驶服务,包括设备管理器(DM),它管理机器状态、部署服务(DS),它为自动驾驶仪和各种应用程序提供服务部署,配置服务(PS)安装服务器操作系统映像,监视服务并报告健康。

各种硬件和软件的状态,维修服务(RS)执行修复行动,从DM等命令。

自动驾驶仪提供共享服务模式。

共享服务是在每台自动驾驶仪管理的服务器上运行的一段代码。

例如,一个服务经理是一个共享服务管理生命周期和其他应用程序的资源使用,一perfcounter收集器是一个共享服务,收集当地的性能计数器,然后上传计数器自动驾驶仪。

共享服务必须是轻量级的,CPU、内存和带宽资源使用率低,需要可靠。

无资源泄漏和崩溃。

Pingmesh用我们的本地数据存储和分析系统,宇宙/范围,延迟的数据存储和分析。

宇宙是微软的大数据系统类似Hadoop的[3],它提供了一个分布式文件系统GFS和MapReduce等[17][11]。

只在文件中追加文件,并将文件分割成多个“扩展”,并将其存储在多个服务器中,以提供高可靠性。

宇宙星团可能有

数以万计的服务器或更多,并给予用户

几乎无限的存储空间。

范围[15]是一个声明性的和可扩展的脚本语言,它建立在宇宙之上,用于分析大量数据集。

设计范围很容易

使用。

它使用户能够专注于他们的数据,而不是底层的存储和网络基础设施。

用户只需要编写类似于SQL的脚本,而不必担心并行执行、数据分区和故障处理。

所有这些复杂性都是由范围和宇宙来处理的。

3设计与实现

3.1设计目标

Pingmesh的目标是建立一个网络延迟测量和分析系统来解决我们在1节中描述的问题。

Pingmesh应该一直能够为所有服务器提供网络延迟数据。

它需要一直保持,因为我们需要一直跟踪网络状态。

它需要为所有服务器生成网络延迟数据,因为对网络延迟数据最大可能的覆盖对我们更好地理解,管理和解决我们的网络基础设施是必不可少的。

从一开始,我们从各种公共的和专有的网络工具(如traceroute,tcpping,等)选择pingmesh。

我们意识到那些网络工具不适合我们,原因如下:

首先,这些工具并不总是运行,它们只在运行时生成数据。

其次,它们生成的数据没有达到所需的覆盖范围,因为这些工具并不总是运行,所以我们不能指望它们跟踪网络状态。

这些工具通常用于网络故障排除当源节点和目标节点已知时。

然而,对于大规模数据中心网络来说不能很好地工作:

当发生网络事件时,我们甚至可能不知道源节点和目标节点对。

此外,对于暂时性的网络问题,这个问题可能在我们运行工具之前就已经消失了。

3.2pingmesh架构

基于上面提到的设计目标,Pingmesh需要满足如下要求。

首先,因为Pingmesh的目的是为了提供最大可能的覆盖范围和从应用程序的角度测量网络延迟,从而每个服务器都需要一个Pingmesh代理,且pingmesh代理所消耗的CPU,内存,带宽开销是小的并且负担得起的。

其次,pingmesh代理的行为应该是可控制的和可配置的,需要一个高度可靠的控制平面来控制服务器应该如何进行网络延迟测量。

第三,延迟数据应该是汇总的、可分析的,实时生成,存储以便进行深入分析。

根据以上要求,我们设计了Pingmesh的结构如图2所示。

Pingmesh有如下三个组成部分。

pingmesh控制器。

它是整个系统的大脑,因为它决定了服务器应该如何探测彼此。

有了pingmesh控制器,Pingmeshgenerator为每一个服务器产生每一pinglist文件。

pinglist文件包含对等服务器列表和相关参数。

pinglist文件基于网络拓扑生成的。

服务器通过RESTfulWeb界面得到相应的pinglist。

pingmesh代理。

每一个服务器运行一个pingmesh代理。

代理下载pinglist从pingmesh控制器,然后发射TCP/HTTPping指令在pinglist上的对等服务器。

pingmesh代理将ping结果保存在本地存储器。

一旦定时器超时或测量结果的大小超过阈值,该pingmesh代理上传结果到Cosmos进行数据存储和分析。

pingmesh代理也提出了一组由自动驾驶仪的PA服务定期收集的性能计数器。

数据存储与分析(DSA)。

来自pingmesh代理的网络延迟数据在数据存储和分析(DSA)管道被存储和处理。

延迟数据存储在Cosmos中。

SCOPEjobs是用来分析数据的。

SCOPEjobs是用类似SQL的声明性语言编写的。

然后分析结果存储在SQL数据库中。

基于该数据库中的数据和PA计数器生成可视化、报告和警报。

3.3pingmesh控制器

3.3.1pinglist生成算法

Pingmesh控制器的核心是它的PingmeshGenerator。

PingmeshGenerator使用的算法来决定哪一个服务器应该ping哪些服务器。

正如上面提到的,我们希望Pingmesh有尽可能大的覆盖范围。

最大可能的覆盖率是服务器级别的完整结构图,其中每个服务器都要探测到其余服务器。

然而一个服务器级别的完整结构图是不可行的,因为一个服务器需要探测N−1服务器,其中n是服务器的数量。

在数据中心中,n可以达到数十万。

此外,服务器级别的完整结构图是没有必要的,因为几十台服务器通过同一个ToR交换机连接到世界各个地方。

然后我们提出了一个多层次的完整结构图的设计方案。

在一个Pod中,我们让同一个ToR交换机下的所有服务器组成一个完整的结构图。

在Intra-DC级别,我们将每个ToR交换机视为一个虚拟节点,让ToR交换机形成一个完整的结构图。

在inter-DC级别,每个数据中心充当一个虚拟节点,所有的数据中心形成一个完整的结构图。

在我们的设计中,只有服务器进行ping。

当我们说一个ToR作为一个虚拟节点,是ToR下的服务器执行ping指令。

同样地,当一个数据中心作为一个虚拟节点,选择数据中心中的服务器启动ping指令。

在intra-DC级别,我们曾经认为只需要选择一定数量的服务器参与Pingmesh。

但是如何选择服务器成为一个问题。

此外,少数服务器可能不能很好地代表其他的服务器。

我们最终想出了一个办法:

让所有服务器参与。

Intra-DC算法:

任何ToR对(ToRx,ToRy),让在ToRx中的服务器ipingToRy中的服务器i。

在Pingmesh,即使两个服务器都在彼此的pinglists中,他们分别测量网络延迟。

通过这样做,每个服务器都可以在本地独立地计算自己的丢包率和网络延迟。

在inter-DC级别,所有DCs形成另一个完整的结构图。

在每一个DC,我们选择一些服务器(多服务器选择每个Podset)。

结合三个完整的结构图,在Pingmesh中一个服务器需要ping2000-5000对等服务器取决于数据中心的规模。

pingmesh控制器采用阈值限制一个服务器的探测数量和一个源服务器和目标服务器最小探测时间间隔。

3.3.2pingmesh控制器的实现

pingmesh控制器被看作是Autopilot服务,成为Autopilot管理堆栈的一部分。

它通过运行PingmeshGenerator算法为每一个服务器产生pinglist文件。

文件是存储在SSD然后通过PingmeshWeb服务传递到各个服务器。

pingmesh控制器提供了一个简单的RESTfulAPI来分别检索pingmeshAgent的pinglist文件。

PingmeshAgent需要定期向控制器询问pinglist文件,pingmesh控制器不压任何数据到pingmeshAgent。

这样,PingmeshController是无状态的并且容易扩展的。

作为Pingmesh整个系统的大脑,pingmesh控制器需要服务成千上万的pingmeshAgent。

因此,pingmesh控制器需要很好地容错性和可扩展性。

我们使用软件负载平衡器(SLB)[14]为pingmesh控制器提供容错性和可扩展性。

具体看[9,14]对SLB工作细节的介绍。

一个pingmesh控制器对一个单独的虚拟IP地址有一组服务器。

SLB从pingmeshAgent服务器分发请求到pingmesh控制器。

每一个pingmesh控制器服务器运行相同的代码,生成形同的pinglist文件到所有服务器,能够响应任何pingmeshAgent的请求。

pingmesh控制器可以通过增加更多的服务器位于同一个虚拟IP地址进行很容易地扩展。

一旦pingmesh控制器服务器停止运行,他会被SLB自动删除。

我们设置了两个pingmesh控制器在两个不同的数据中心集群中,从而使控制器可以更好地进行容错处理。

3.4pingmeshAgent

3.4.1pingmeshAgent的设计考虑

PingmeshAgent运行在所有服务器上。

它的任务很简单:

从pingmesh控制器下载pinglist文件;pingpinglist文件上的服务器;然后上传ping结果到DSA。

基于上面的需求,Pingmesh需要能够区分一个用户感知延迟的增加是否是由于网络导致的。

Pingmesh应该使用由应用程序产生的类型相同的数据包。

因为几乎所有数据中心的应用程序都使用TCP和HTTP协议,Pingmesh进行探测使用TCP和HTTP代替ICMP或UDP协议。

因为我们需要区分一个“网络”的问题是因为网络导致还是应用程序本身导致,pingmeshAgent不使用任何被应用程序使用的网络库。

相反,我们开发了我们自己的轻量级的网络库专门用于网络延迟测量。

PingmeshAgent可以配置进行发送和响应不同长度的数据包,而不仅仅是TCPSYN/SYN-ACK包。

因此,pingmeshAgent需要同时充当客户端和服务器。

客户端部分发射ping指令,服务器端响应ping指令。

每个探测都需要是一个新的连接,并使用一个新的TCP源端口。

这可以用来探讨网络多径性,更重要的是,降低由Pingmesh创建的TCP连接并发数。

3.4.2pingmeshAgent的实现

虽然任务很简单,但是pingmeshAgent的实现是最具挑战性的部分之一。

它必须符合以下的安全和性能要求。

首先,pingmeshAgent不能关闭且不创造直播网站事件。

由于pingmeshAgent运行在每一台服务器上,它可能是所有的服务器发生故障(例如,占用很大的CPU和内存资源,产生很大的探测流量等)。

为了避免不好的事情发生,在pingmeshAgent上实施了几个安全特性:

•被操作系统限制的CPU和最大内存使用量。

一旦最大内存使用超出上限,pingmeshAgent将被终止。

•任意两服务器之间的最小探测时间间隔限制为10秒,和探测负载长度限制为64字节。

这些限制是硬编码在源代码中的。

通过这样做,我们对最坏情况下的网络情况进行了严格的限制。

•如果PingmeshAgent连接控制器失败3次,或如果控制器可以连接但是没有可用的pinglist文件,pingmeshAgent将删除所有现有ping对等的服务器和停止一切ping活动。

(虽然它仍然可以响应ping指令)。

正是由于这一特征,我们可以阻止pingmeshAgent通过简单地删除来自控制器所有的pinglist文件进行工作。

•如果服务器不能上传延迟数据,它将重试几次。

之后,它将停止尝试并丢弃内存中的数据。

这是确保pingmeshAgent使用有限的内存资源。

PingmeshAgent以日志文件的形式将延迟数据写到本地磁盘。

日志文件的大小仅限于可配置的大小。

其次,一个pingmeshAgent需要发射ping指令到数千服务器上。

但作为一个共享服务,pingmeshAgent应尽量减少资源(CPU,内存,和磁盘空间)的使用。

它应该使用接近零的CPU时间和尽可能小的内存占用,以尽量减少对客户应用程序的干扰。

为了实现性能目标和改进Pingmesh延迟测量精度,我们使用C++而不是java或C#写pingmeshAgent。

这是为了避免公共语言运行时间或java虚拟机的开销。

我们专门为Pingmesh开发了一个网络库。

该库的目标是用于网络延迟测量,它的设计是轻量级的,并处理大量TCP连接并发。

该库是直接基于WinsockAPI的,它使用WindowsIOCompletionPort编程模型进行高效异步网络IO处理。

该库可同时充当客户机和服务器,并且将探测处理负载均匀分配给所有CPU核心。

我们已经做了大量的测量来理解并优化pingmeshAgent的性能。

图3显示了一个典型pingmeshAgent服务器的CPU和内存使用。

在测量过程中,pingmeshAgent可以有效探测2500服务器。

这个pingmeshAgent服务器有128GB内存,两个IntelXeonE5-2450处理器,每个处理器是8核。

平均内存占用小于45MB,CPU平均使用率为0.26%。

我们注意到,pingmeshAgent产生的探测流量对交通是很小的,一般为几十kb/s。

相比较而言,数据中心网络中任意两个服务器之间会产生几Gb/s吞吐量。

3.5数据存储与分析

对于pingmesh数据存储和分析,我们使用现有的完善系统,Cosmos/SCOPEandAutopilot’sPerfcounterAggregator(PA)服务,而不是重新发明轮子。

PingmeshAgent定期上传汇总记录到Cosmos。

同样地,pingmesh控制器,Cosmos的前端使用负载平衡器和VIP(虚拟IP地址)进行扩展。

与此同时,PingmeshAgent对延迟数据执行本地计算,生成一组性能计数器,包括丢包率、第五十、第九十九个百分点的网络延迟,等。

所有这些性能计数器都由PA服务收集和存储。

一旦结果在Cosmos中,我们就运行一组SCOPEjobs进行数据处理。

我们有10分钟,一小时,一天的jobs在不同的时间范围。

10分钟的jobs是我们的实时任务。

对于10分钟的jobs,时间间隔是从延迟数据生成到数据消耗(例如,警报触发,仪表板图形生成)的间隔大约是20分钟。

1小时和1天的管道是非实时任务包括网络SLA跟踪、网络黑洞检测,丢包检测,等我们所有的jobs都会自动定期提交JobManger到SCOPE,无需用户干预。

SCOPEjobs工作结果存储在SQL数据库中,从而生成可视化、报告和警报。

在实践中,我们发现20分钟延迟对系统级SLA跟踪非常有效。

为了进一步减少响应时间,我们并行使用AutopilotPA管道收集和汇总一套pingmesh计数器。

AutopilotPA管道是一种分布式设计,每个数据中心都有自己的管道。

PA计数器收集延迟是5分钟,比Cosmos/SCOPE管道快。

PA管道比Cosmos/SCOPE管道更快,反之,Cosmos/SCOPE管道比PA管道更贵用于数据处理。

通过使用它们,我们为Pingmesh提供比他们更高的可用性。

我们区分出Pingmesh是一个始终在线的服务。

Pingmesh所有的部件都有监视器看他们是否运行正常,例如,pinglists是否正确生成

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1