2024-08-06 随笔

简单概括一下当前接手的网络诊断工具的组件架构。

应用背景

当前客户场景,客户的应用部署在海量的私有云服务器(虚拟机)上,虚拟机之间存在跨域转发,流量外出等多种网络通信场景,服务之间的通信报文经过多个节点或者交换机,如果出现网络通信问题,运维人员难以快速定界,亟需自动化工具改善,该网络诊断工具由此诞生。  

网络诊断工具主要提供两个功能:可视化的拨测和抓包。

拨测任务提供主动探测链路状况的能力,创建任务阶段,组件根据前端输入的源IP和目的IP查询流量的途径节点,返回整条流量路径。任务执行阶段,流量途径节点上已经部署好的agent服务启动抓包,流量起始节点的agent服务在起始节点基于任务的源IP和目的IP构造染色报文,染色报文在经过各个途径节点时,被agent服务过滤抓取,发送给分析器,由分析器来解析流量是否存在丢失和时延,返回给前端。

抓包任务提供一键抓包能力,运维人员无需挨个登录节点抓包定界,只需要在前台输入源IP和目的IP,由网络诊断工具部署在各个流量节点上的agent服务进行抓包。抓包结束后,运维人员在前台下载抓包文件,进行分析定界。

组件分布

组件主要包括前端、和前端交互的API服务,负责处理请求、下发任务的Controller服务、数据库服务、解析器服务以及部署在各个流量节点的agent服务组成。

前端使用JS,API服务使用JAVA,Controller,Redis,Analyzer,agent服务使用golang,底层抓包组件使用gopacket+ovs。

除了agent服务需要部署在各个流量节点上以外,其它服务一起部署在一台虚拟机上,基于节省资源的角度,没有开启主备模式。



©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容