国际知名开源社区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开发的一些离线分析任务进行最后的多维度网络画像。网络画像是我们进行网络产品运营的重要手段。在这个平台里,我们结合了产品的售卖,资源的消耗,实际的成本以及用户画像来帮助我们每个产品做运营上的决策。比如分析用户的资源部署情况,了解我们和运营商直接的网络成本使用情况等。

总结

以上是目前齐天平台所提供的服务,而接下来我们会在智能分析上进一步演进,让我们更快的了解状况,更精确得定位原因,更智能的调度流量。 这会让阿里云网络的变得更聪明,更高效,帮助我们实现让我们网络更简单的使命。

【LC3开源峰会网络技术系列之三】基于JStorm的网络分析平台相关推荐

  1. 【LC3开源峰会网络技术系列之三】基于JStorm的网络分析平台 1

    摘要: 国际知名开源社区Linux基金会主办的开源大会LinuxCon + ContainerCon + CloudOpen China 2018(LC3)于6月25日在北京开幕.今年阿里云作为白金合 ...

  2. 完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三

       手把手叫你玩转网络编程系列之三    完毕port(Completion Port)具体解释                                                    ...

  3. (转载)完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三

    手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ----- By PiggyXP(小猪) 前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了, ...

  4. eBPF技术应用云原生网络实践系列之基于socket的service | 龙蜥技术

    简介:如何使用 socket eBPF进一步提升Service 网络的转发性能? 背景介绍 Kubernetes 中的网络功能,主要包括 POD 网络,service 网络和网络策略组成.其中 POD ...

  5. SDN/NFV 网络技术系列文章

    目录 文章目录 目录 计算机网络基础 互联网技术 局域网技术 L1 L2 广域网技术 L3 网络应用技术 L4 L5-L7 DPI 数据中心网络架构 云网融合与算力网络 SDN 隧道技术 VPN IP ...

  6. 大数据技术系列:图解【大数据平台开发】

    导言 在前面的文章<「大数据技术体系」学习实践导览>中,概要式的梳理了大数据平台的业务目标,大数据平台的架构框架,大数据平台中常用的技术及工具,数据治理四方面的内容,算是对自身所了解大数据 ...

  7. 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三 1-转

    完成端口(Completion Port)详解 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中--酝酿了两年之后,终于决定开始动笔了, ...

  8. 手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解

    2019独角兽企业重金招聘Python工程师标准>>> 前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中--酝 ...

  9. 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三2-转

    [第六步]当收到Accept通知时 _DoAccept() 在用户收到AcceptEx的完成通知时,需要后续代码并不多,但却是逻辑最为混乱,最容易出错的地方,这也是很多用户为什么宁愿用效率低下的acc ...

最新文章

  1. java 输入流可以合并吗_HOW2J Java 文件输入输出流,合并与拆分
  2. 【学习笔记】矩阵树定理(Matrix-Tree)
  3. Python可视化(matplotlib)图像自定义图例(Legend)
  4. 不属于mysql常量的是_R256是内部“字”继电器WR25的( )号位。_学小易找答案
  5. 你的导师是哪种类型?
  6. python 生成器装饰器_python: 生成器,装饰器以及列表推导式写法
  7. ipc java_java – Thrift有IPC传输实现吗?或低延迟SOA解决方案
  8. python将对象放入列表根据某个属性排升序_对python 对象列表根据某个属性排序的方法...
  9. sci translate好用吗_收藏!SCI论文Introduction 和Conclusion的写作建议
  10. window.location和document.location的区别分析
  11. loj 6085.「美团 CodeM 资格赛」优惠券
  12. 谷歌地球(Google Earth)7.3.1.4507官方多语言专业版
  13. 全志F1C200S F1C100S 介绍
  14. 信号完整性(SI)电源完整性(PI)学习笔记(二十七)S参数在信号完整性中的应用(二)
  15. 解释RIP协议为什么会有“好消息传得快,坏消息传得慢。”的现象?(解释超详细)
  16. 怎么看SaaS企业中的收入留存率?
  17. 【求由正方形组成的图形的周长】C++实现
  18. opencv中findContours 和drawContours画图函数
  19. c#加入json库引用,添加JSON包引用;新到Java
  20. 进程服务器模型和线程服务器模型

热门文章

  1. 3ds max 多个物体合并
  2. pandas 实现DataFrame的合并Merge
  3. Chart.js-饼状图分析(参数分析+例图)
  4. 视频动作识别--Two-Stream Convolutional Networks for Action Recognition in Videos
  5. MariaDB/MySQL从数据库中选择随机的行
  6. Linux环境下使用Mysql连接外部机器
  7. 计算机专业数控,数控专业的月薪是多少 数控专业能干什么
  8. java流类图结构_java I/O 流总结
  9. Centos7 上配置 java JDK1.8
  10. Linux 帧缓存 数据,linux--帧缓存技术