国际知名开源社区Linux基金会主办的开源大会LinuxCon + ContainerCon + CloudOpen China 2018(LC3)于6月25日在北京开幕。今年阿里云作为白金合作伙伴亮相本次中国开源盛会,这篇文章是网络团队分享系列第三篇。
摘要:这篇文章介绍了阿里云网络团队在做网络分析方向上的一些实践,包括了如何基于实时计算搭建整个平台以及其中重点解决的几个场景。
主讲人:吕彪 阿里云高级技术专家
主题:JStorm based Network Analysis Platform
分论坛:Network & Orchestration
项目背景
随着阿里云的快速发展,目前其业务已经覆盖全球18个region,服务了超过100多万的客户。不仅如此,阿里云还支撑了像双11这样的活动,对它的弹性,调度,以及稳定性都有很大的挑战。而在网络业务发展的背后是越来越复杂网络技术体系,比如SDN,现在整个阿里云网络全部SDN化了,所有的云网络设备都完全通过我们从业务到北向以及南向的API进行管理和配置,而网络本身也划分为Overlay和Underlay,Underlay这块主要是物理的交换机,路由器,Overlay这块为用户提供了弹性,灵活的各种虚拟网络功能;然后我们还有NFV, RDMA, SD-WAN等等。 整个网络变得越来越复杂 。
让网络更加简单
虽然我们有这么复杂的技术体系,有这么大规模的挑战,我们还是希望我们的网络能更稳定,更简单,更好用的。我们希望每一次网络的升级都是用户无感的,当任何设备出现问题时我们能提前用户发现问题,并且能非常精确得定位到出问题的节点,最后,我们希望我们对网络有非常丰富,多维度的了解,这对我们自己以及用户在运维和运营这张网络时非常有帮助。Network as a Service,我们希望我们的网络能像简单灵活的服务一样,需要的时候就能连接上。
如何做到网络的规模在这样持续增长的情况下仍然能够保持简单,高效。自动化肯定是需要做的,但是在自动化的基础上我们希望能让系统承担更多的事情,把更多决策闭环掉,并且在整个网络生命周期中减少人的干预,让另一套系统而不是我们用户和网络运维人员去和控制器打交道。我们的用户和网络运维人员是如何做决策的呢,他们依赖的是数据。基于这些数据以及他们的判断来形成决策,所以数据是组成这个闭环的最后一个环节。右图里就是我们目前的设想,基于各种网络运行过程中生成的数据系统自动化的生成策略,这些策略提交给控制器形成对网络的配置管理,网络在过程中又会产生新的数据。在这个系统上我们完成从网络更新,网络监控,网络画像,网络诊断,以及异常恢复等多个场景的闭环。
齐天-基于JStorm的网络分析平台
按照这个思路,我们设计并实现了一套网络分析平台,我们给这套平台取了一个很好听的名字,叫齐天,希望能从天空的角度去看我们整张网络。
整个平台大致可以分为三层,最底下这一层是数据源,包括了来自网络设备和业务服务采集出来的各种数据。往上是我们的实时数据分析层,从左往右看,第一个是我们的基础数据分析,包括将DB数据清洗,ETL,通用的数学计算,基础数据分析是右边所有数据分析的前提,它将原始 的数据转换为格式标准的数据 。第二个是我们的网络监控分析,用于发现网络当中的可疑异常。它分为三个部分,监控策略,网络事件,和异常通知。分别消费基础数据,初级网络异常,以及融合网络事件,最终产生可疑事件记录和告警。第三个是我们的网络诊断,用于发现问题时定位具体问题原因的。它能对每个数据报文进行处理和分析,并且计算出来报文的流量路径,并找到这条路径上出问题的网络设备以及具体问题的原因。第四个是我们的网络调度,这一部分目前最重要一个用途还是在出现故障时流量调度策略来恢复故障 。最后一个是我们的网络画像,它用于我们网络资源的规划和调度,也用于我们产品成本和营收的核算 。整个实时分析层是基于JStorm引擎开发的,它并不是一个独立的应用,而是众多JStorm任务的集合。
最上面是我们数据分析的输出,这里我们有流式的数据输出,也支持API的数据提取。这两者主要是对接其他的系统,比如我们的SDN控制器会消费齐天产生的策略数据,用于管理和配置网络设备,但对于我们的研发,售后来说他们需要更直观的数据呈现 。最后是我们开发的一个钉钉机器人,你可以问他最近某个集群的告警情况,也可以问某个用户实例的运行情况。这个机器人也有一个好听的名字,叫大圣,所以和我们平台的名字连在一起就是齐天大圣。接下来我会自下而上的分别从数据来源,分析性能,实时监控,网络诊断,智能调度以及多维度网络画像为大家深入介绍整个平台。
实时网络监控
齐天的整个监控体系是基于JStorm的流计算引擎开发的。还是从数据流的角度来看一下整个系统怎么处理的。最左边仍然是网络设备,它采集到的原始数据经过一些基本的ETL以及聚合之后变成了包含多维度信息以及网络流量信息流数据,这份数据会被我们的一个被称为监控策略任务的JStorm Topology消费,监控策略任务会包含各种监控策略,每一种策略会从不同维度去识别异常。目前我们支持三种策略,指标波动,区间预测,以及事件统计。 说完了策略,那么后面紧跟着的就是一个被称为事件合并的JStorm任务。这个任务的作用是把策略任务产生的各种事件按用户以及网络拓扑的维度合并。 实时监控的最后一个环节是通知中心,这里主要是根据不同类型,不同严重程度的网络事件进行不同方式的通知,目前支持邮件,短信,应用消息等。每一个通知会非常清晰的描述出来问题的时间和影响范围,帮助研发做判断。
基于流计算的网络诊断
接下来我们来看看齐天是如何基于流计算来做网络诊断的。当用户的流量出现异常的时候,曾经是通过抓包或者traceroute等工具去定位,但是这种方式一方面效率低,另一方面在Overlay网络下很难达到效果。为此,我们的网络设备利用报文染色的方法,将染色后的报文采集到SLS日志中,再由JStorm任务来分析这些报文,最终可以定位出来导致问题的设备节点。
智能网络调度
如何恢复出现问题的网络就是我们下一个系统需要去解决的事情。目前的网络问题主要以服务器上虚拟机出现的网络异常和我们的分布式虚拟网关异常为主,当前者出现问题时我们需要快速的定位出来可以迁移的目标服务器,然后快速将虚拟机迁移过去,后者出现问题时我们需要快速定位出来可以引流的新的虚拟网关组,并把流量引导过去。虚拟机的迁移是一个综合评估体系,作为网络我们会提供可选的交换机及服务器给虚拟机调度系统做决策。而虚拟网关的流量迁移是网络内部闭环的逻辑 。
多维度网络画像
最后一块是我们的多维度网络画像,它其实有两部分组层,一部分是实时计算,这里在JStorm上完成的,另一块是离线计算,我们基于Max-Compute开发的一些离线分析任务进行最后的多维度网络画像。网络画像是我们进行网络产品运营的重要手段。在这个平台里,我们结合了产品的售卖,资源的消耗,实际的成本以及用户画像来帮助我们每个产品做运营上的决策。比如分析用户的资源部署情况,了解我们和运营商直接的网络成本使用情况等。
总结
以上是目前齐天平台所提供的服务,而接下来我们会在智能分析上进一步演进,让我们更快的了解状况,更精确得定位原因,更智能的调度流量。 这会让阿里云网络的变得更聪明,更高效,帮助我们实现让我们网络更简单的使命。