网络亚健康,比变种病毒更难检测

2022/10/20

亚健康,也称Fail slow,是指硬件可以正常运行但性能严重降级的一种状态。

硬盘模块、网卡、CPU、内存等硬件部件均有可能进入亚健康状态,当这些硬件进入亚健康状态后,如果存储系统未采取有效监控和容错措施,则会导致存储系统响应主机的时延增大、IOPS/BPS降低,甚至会因无法响应主机导致主机业务中断。


一般分布式系统能够应对网络故障 (fail-stop) 问题,保证系统高可用。但却少有分布式系统能较好的解决网络亚健康 (fail-slow) 问题。

在XSKY SDS V5中,XSKY亚健康2.0监控工具提供了先进的可靠性监测功能,超越常规IT监控,引入数学模型和统计框架,分析导致系统性能降级的部件级故障和周边系统故障,实现对亚健康网络和磁盘亚健康监测,对故障部分进行主动隔离,提高系统健壮性。

本期XSKY星辰天合技术专家带你走进亚健康,看看比Delta变种病毒更难检测的网络亚健康,XSKY亚健康2.0是如何做到的。


一个真实的案例

我们从一个真实发生的案例说起。

2019年某客户发生了一起由网络亚健康导致业务不稳定,售后很快排查出故障原因是因为网络链路亚健康导致集群有slow io发生,进而发生业务端连接存储不可访问。

售后马上给出解决方案是:

1. 断开有问题的链路,优先恢复业务;

2. 排查网络链路上的硬件问题,进行更换。

售后当时登录存储系统监控界面时,发现存储延迟非常高(如下图),节点3持续有网络错误包,而且存储内部大量slow io,客户的ESXi上的虚拟机受到了影响。

图1:存储池性能监控有极高时延



图2:节点3有网络错误包



图3:节点3上网卡错误包严重


在16:37:00的时候,客户手工ifdown该网口后,存储延迟立马下降,持续观察30多分钟,没有新slow io报错,存储延迟也显示正常,客户的vCenter再也没有其他报错了。

图4:存储池时延下降


依照售后建议,客户通过交叉测试和更换的办法进行排查。首先更换存储端光模块、交换机端光模块、交换机端口、光纤线后,发现依旧存在错误包问题。然后更换了网卡但错误包现象还很顽固。最后更换上了原厂的交换机端光模块,问题得以解决,最终确认是光模块兼容性导致的问题。

从这个案例可以看出,网络亚健康的发生,对客户业务会产生严重的影响。虽然部分网络亚健康能够很快定性、定位并进行手动恢复,但不能自动发出告警,并进行自动恢复、隔离。

而且诱发网络亚健康的因素有很多,排查根因非常繁琐,有时候需要花很长时间才最终找到根因。通过这种案例,我们发现XSKY SDS V3版本和V4.0版本产品的不足之处,并开始作出改进。XSKY SDS V3版本和V4.0版本产品的不足之处,并开始作出改进。


亚健康1.0  可快速告警但也存在误报

虽然V3和V4.0版本有网卡丢包、错包的统计信息,但是没有对应的告警。

所以我们在V4.2 版本增加了网络丢包、错包的告警。

但网络亚健康非常复杂,所以我们在V4.2版本开发了亚健康1.0功能,专门对于网络链路,取OSD之间OP请求的平均网络时延作为检测指标,并通过设置阈值来触发网络亚健康告警。

网络丢包和错包的告警可以快速定位部分网络亚健康场景,但也存在误报的情况。亚健康1.0能够识别单节点明显的网络高延迟场景,但是对于复杂场景力不从心,有时候客户反应集群告警网络亚健康,但是存储监控界面检查IO延迟正常,而且没有丢包。

为什么网络亚健康那么难以检测、识别、定位、隔离呢?为了弄清楚这个问题的复杂程度,我们需要深入研究网络亚健康场景,这就先从业界对于网络亚健康的分类和统计开始。


网络亚健康占比26%

亚健康,也叫做 “fail-slow” fault,在这种情况下,硬件或软件组件仍然可以运行(不会停止工作),但性能远低于预期。

著名的超融合厂商Nutanix在2017年统计了7个月内从39,000个节点部署中收集了232个经过验证的亚健康案例,相关分类和根因如下表所示。在Nutanix的统计中,亚健康单节点年平均故障率是1.02%,其中网络亚健康占比26%。

表1:Nutanix的亚健康案例统计


另外,芝加哥大学在2018年调查了101起大型分布式生产环境中性能故障(亚健康)报告,相关分类和统计如下表所示。网络亚健康占比25.8%。

表2:芝加哥大学收集的亚健康案例统计



研究发现亚健康(fail-slow)的根因有很多种。

对于网络的内部根因,包括设备错误和固件问题,比如:固件错误(错误的路由算法,多播性能不佳)、网卡驱动错误、有问题的交换机-网卡自动协商、坏的光模块、光衰减、设备缓冲区中的位翻转、丢失数据包会导致 TCP 重试或崩溃。

对于网络的外部根因,包括温度、电源、配置问题,比如:高温会导致网卡和交换机出现损坏的数据包和大量 TCP 重传、受压的光纤线、交换机和防火墙配置不当、MTU配置不当、Bond配置不当、系统内核网络参数配置不当、光模块/光纤线松动等。

研究也同时发现亚健康的症状有四种之多。

Permanent slowdown

Transient slowdown

Partical slowdown

Transient stop

图5:亚健康的四种症状


以上研究表明,亚健康发生频率很高,单节点年平均故障率达1.02%,其中网络亚健康占比达26%。且亚健康的根因和症状有很多种。

除了分析外部案例以外,我们也分析了内部有完整记录的亚健康工单报告,并组织了研发、售后、测试同事的多次深度复盘和讨论。

诸多案例表明,分布式存储系统必须要有亚健康检测功能。但要做好亚健康检测不是一件容易的事情。



为什么网络亚健康检测那么难?

一般来说,解决一个大问题之前,需要对这个问题的复杂程度有深入的理解。

尽量消除unknown unknowns,然后才能设计正确的解决办法,或者走在正确的路线上。

网络亚健康难以检测的原因有:

- 场景复杂,根因众多,症状也很多,难以用单一标准和框架去衡量

-指标metric众多,到底使用哪个为准?

-业务大压力和慢节点如何区分

-准确度和灵敏度之间的权衡。如为了保证客户SLA,则需要提高灵敏度,但是高灵敏度

肯定会带来误判(也就是低准确度,比如假阳性)。但是把灵敏度调整太低也不行,会出现假阴性。

虽然这事情很难,但为了保证客户业务的稳定运行,我们开始研发了亚健康2.0,通过新的架构和算法去解决这个大问题。


亚健康2.0的设计

针对于亚健康检测的复杂性和要求,我们的架构设计的要求是:

-收集关键指标。并对指标进行数学统计和处理,要有全局仲裁中心

-检测算法能够自适应各种场景,准确性和灵敏度可调整

-算法也是可插拔的,隔离策略要求可配置

-亚健康检测算法的核心:通过聚类算法、局部异常点算法找出最忙、最慢的组件,然后再通过经验模型进行二次识别和处理

-隔离策略首先保证数据安全,其次再保证集群的整体性能

-网络亚健康隔离前会尝试主动恢复


下面是我们亚健康2.0的软件架构:

图6:亚健康2.0软件架构





网络亚健康2.0的优势

有一个简单的例子可以说明亚健康2.0的效果。

我们在一个3节点存储集群中,通过对1个节点的业务网络的2个网口,分别增加100ms的时延,来看SDS的亚健康主动检测、告警、恢复、隔离功能。

首先,对存储集群的增加测试负载,这样就可以观察到网络亚健康对于集群性能的影响。

11:41:53,手动对82节点bond1的enp24s0f0(此时的active口)增加100ms的时延。

11:42:19,SDS主动发出82节点网络亚健康告警。

11:42:19,SDS主动进行82节点的网络bond1的网口切换,尝试进行自动恢复。

11:43:05,观察82节点的bond1已经有网口切换,enp24s0f1已成为active口。

11:43:49,SDS主动通知82节点网络亚健康已恢复。

11:44:28,手动对82节点的enp24s0f1(此时的active口)增加100ms的时延。此时82节点的业务网络的bond1的2个网口都被注入了时延。此时存储池的性能监控显示IOPS已经降入低谷。

11:44:49,SDS又主动发出82节点网络亚健康告警。

11:44:49,SDS又主动进行82节点的网络bond1的网口切换,尝试自动恢复。但是此时因为2个网口都被注入了时延,所以即使做了网口切换,82节点的业务网络时延还是超过100ms。

11:48:20,SDS主动发出82节点被隔离的告警,主动把82节点从存储集群中隔离。可以观察82节点被隔离后,存储池的性能监控显示IOPS又恢复正常。

图7:告警中心展示的亚健康告警记录




图8:存储池性能监控IOPS恢复正常


通过以上例子,我们可知亚健康2.0比1.0的优势是:

- 全局仲裁,检测更快速和精准

-及时发出告警,快速定位原因

-尝试自动恢复,智能运维

-自动进行隔离,保证存储集群的整体性能


总结

亚健康2.0,对网络的颗粒度管理也上升了一个量级,在一个数据节点读写出问题时将其隔离起来,避免拖累其他数据节点的读写速度。不仅大幅提升了分布式系统的“免疫力”,更使得XSKY SDS V5底座具有了智能运维(AI Ops)功能,进一步提升了政企机构数据存储、数据管理的效能,降低了运维成本。

目前,我们正在进一步开发亚健康3.0,将对服务亚健康做更精细化的检测和隔离。

Copyright © 2022 北京星辰天合科技股份有限公司 版权所有

京公网安备11010802038698号 京ICP备 15052820号

全选