数据中心的网络设备都是有冗余的, 只要网络故障时找到故障设备, 将其隔离即可恢复业务, 然后再去慢慢排查故障原因, 但从数百台的设备中找到具体哪台故障绝非易事.
当数据中心的网络规模变得很大时, 不得不要增加网络设备, 实现多层级联. 现在的数据中心往往都是树形结构, 核心放置几台转发容量超大的设备, 然后下挂多层设备(因为端口数量不够, 可能需要多层), 数十台甚至几百台的网络设备级联到一起, 一旦出了故障, 如何能快速找到故障设备, 经常困扰着很多网络运维人员.
数据中心的网络设备都是有冗余的, 只要网络故障时找到故障设备, 将其隔离即可恢复业务, 然后再去慢慢排查故障原因, 但从数百台的设备中找到具体哪台故障绝非易事. 网络故障往往先从应用侧得到故障反馈, 然后开始排障, 这时应用人员往往描述的只是一个应用访问故障现象, 他不会告诉你具体哪些地址到哪些地址不通, 有时甚至是错误的信息, 这极大延误了问题定位时长. 问题定位大部分时间都是花在故障现象的整理过程中, 怎么办? 数据中心网络该如何快速排障? 本文将给出答案.
网络故障如果要从应用侧反馈的故障现象去分析, 这时已经晚了, 而且容易被应用人员带入误区, 有些应用人员反馈的现象只是他自己看到的, 现象很可能只是一个局部现象, 并不能反映出整个网络的故障情况. 所以要靠自己, 做好网络监控, 通过监控去发现问题, 从而迅速找到故障设备, 做设备隔离或者解除故障.
早期的网络监控主要是对设备的一些日志和端口流量做监控, 更多的时候这些信息并不够, 并不能及时发现问题. 很多网络设备厂商说自己的设备日志非常完整, 但实际使用时仍有一些极端情况或者软件 BUG 导致故障时无日志输出, 这时就要针对流量进行定位. 到了这个时候, 就需要网络人员去找应用人员了解故障现象, 通过现场找出一些丢包或者不通的 IP 地址来, 然后进行网络流通, 对这个故障流量经过的设备都做流通, 找到故障设备. 既然是树形网络, 每一层都有很多设备, 这个流通量是相当大的, 而且并不是所有的设备都能支持对所有特征的流量做统计, 有不支持的设备就会使得统计不准, 加大了寻找故障设备的难度, 做网络运维的这些年都是这样坚持过来的.
显然, 之前的网络排障方式有效但效率太低, 定位故障时间长, 对业务影响大. 现在的网络监控都是针对数据流的, 对网络中的具体数据流进行监控, 这样一旦数据流量有中断, 立即可以查明故障位置. 在这里, 要提到几种新兴的网络监控方法, 也叫网络可视化技术, 是快速排障的最有效方法.
首先是 INT(In-band Network Telemetry, 带内网络遥测技术)技术, INT 通过在数据层面收集和报告网络的状态来实现对网络状态的监控. 当数据报文进入第一个网络设备时, 设备上设置采样方式采样并镜像出该业务流报文, INT 在报文基础上封装一个 INT 头, 并将需要收集的交换机信息填入到 INT 数据段中, 报文经过的所有网络设备均这样处理, 直到最后一个服务器连接的网络设备将 INT 头剥离. 报文经过的每台设备都将采集到的 INT 报文通过 gRPC 报文发送到远端的监控服务器进行解析和呈现, INT 报文中携带了报文转发的延迟, 设备拥塞等情况, 都能呈现到监控服务器上, 一旦数据报文出现丢包或者不通情况, 监控服务器立即感知到, 并几秒就能确定问题范围和故障设备.
其次是 ERSPAN(Encapsulated Remote Switch Port Analyzer, 跨三层 IP 传输的远程网络流量监控技术),ERSPAN 的报文基于 GRE 封装, 并通过以太网转发到任何 IP 路由可达的地方. ERSPAN 是将源端口报文复制一份通过 GRE(Generic Routing Encapsulation)发送到目的服务器进行解析, 采集服务器的物理位置不受限制, 这样我们可以将整个网络的关键流量转发都通过 ERSPAN 发送到监控服务器上, 流量在哪部分网络出现了丢弃, 一目了然.
第三是 sFlow 和 Netstream, 这两种都是数据采样技术, Netstream 采集的比较完整, 但需要有专用的硬件来完成, 在网络中部署 sFlow 和 Netstream 后, 可以通过 gRPC 将监控数据发给服务器, 由监控服务器计算和整理, 并将结果图形化显示出现, 一旦哪部分网络有问题, 立即可以在监控服务器上显现. sFlow 和 Netstream 采集的都是报文头的主要特征, 而不是报文整个内容, 这个和 INT,ERSPAN 有较大区别, 应对绝大部分网络故障排查都没有问题, 除非应用报文特征比较特殊, Netstream 捕捉不到, 这时只能求助 INT 和 ERSPAN. 在一个网络中, 并不介意三种监控方案都部署, 这样在故障时, 可以从多个角度采集的数据去分析问题. 还有一点很重要, 尽量要将这些数据采集通过管理网发向监控服务器, 否则一旦数据网出问题, 可能监控的数据也无法正常达到监控服务器. 大部分情况下, 数据网络故障很少波及到管理网, 所有设备依然可以正常访问, 如果故障时, 很多设备都无法通过管理网进行访问, 基本可以判定这台设备就是故障点.
有了以上这些网络监控方法, 出现故障时第一时间发现就不难了, 而且完全可以实现自动化, 当发现故障时, 由监控服务器自动下发隔离命令, 将故障设备隔离, 自动恢复. 这样在应用报障过来之前, 就可以找到网络故障位置, 及时隔离故障设备, 恢复业务, 这样可以极大缩短故障分析时间, 对业务影响很小, 甚至业务部分根本感知不到故障. 像 INT 和 ERSPAN 这些网络监控的技术实际应用的效果还未知, 都是最近总被提及的技术, 还有待实践的考验. SFLOW 和 Netstream 技术比较成熟, 但真正在网络排障时用到的还不多, 需要加大这方面的推广. 依靠这些监控技术, 可以快速排除网络故障, 这对于数据中心运维来说, 意义重大, 极大地提升了运维效率.
来源: http://network.51cto.com/art/201807/579812.htm