网络亚健康,比变种病毒更难检测
亚健康,也称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版本产品的不足之处,并开始作出改进。
亚健康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%。
另外,芝加哥大学在2018年调查了101起大型分布式生产环境中性能故障(亚健康)报告,相关分类和统计如下表所示。网络亚健康占比25.8%。
研究发现亚健康(fail-slow)的根因有很多种。
对于网络的内部根因,包括设备错误和固件问题,比如:固件错误(错误的路由算法,多播性能不佳)、网卡驱动错误、有问题的交换机-网卡自动协商、坏的光模块、光衰减、设备缓冲区中的位翻转、丢失数据包会导致 TCP 重试或崩溃。
对于网络的外部根因,包括温度、电源、配置问题,比如:高温会导致网卡和交换机出现损坏的数据包和大量 TCP 重传、受压的光纤线、交换机和防火墙配置不当、MTU配置不当、Bond配置不当、系统内核网络参数配置不当、光模块/光纤线松动等。
研究也同时发现亚健康的症状有四种之多。
Permanent slowdown
Transient slowdown
Partical slowdown
Transient stop
以上研究表明,亚健康发生的频率很高,单节点年平均故障率能够达到1.02%,其中网络亚健康占比达到26%。并且亚健康的根因和症状有很多种。
除了分析外部案例以外,我们也分析了内部有完整记录的亚健康工单报告,并组织了研发、售后、测试同事的多次深度复盘和讨论。
诸多案例表明,分布式存储系统必须要有亚健康检测功能。但要做好亚健康检测不是一件容易的事情。
为什么网络亚健康检测那么难?
一般来说,解决一个大问题之前,需要对这个问题的复杂程度有深入的理解,尽量消除unknown unknowns,然后才能设计正确的解决办法,或者走在正确的路线上。
网络亚健康难以检测的原因有:
场景复杂,根因众多,症状也很多,难以用单一标准和框架去衡量 指标metric众多,到底使用哪个为准? 业务大压力和慢节点如何区分 准确度和灵敏度之间的权衡。比如为了保证客户SLA,则需要提高灵敏度,但是高灵敏度肯定会带来误判(也就是低准确度,比如假阳性)。但是把灵敏度调整太低也不行,会出现假阴性
虽然这事情很难,但为了保证客户业务的稳定运行,我们开始研发了亚健康2.0,通过新的架构和算法去解决这个大问题。
亚健康2.0的设计
针对于亚健康检测的复杂性和要求,我们的架构设计的要求是:
收集关键指标。并对指标进行数学统计和处理,要有全局仲裁中心 检测算法能够自适应各种场景,准确性和灵敏度可调整 算法也是可插拔的,隔离策略要求可配置 亚健康检测算法的核心:通过聚类算法、局部异常点算法找出最忙、最慢的组件,然后再通过经验模型进行二次识别和处理 隔离策略首先保证数据安全,其次再保证集群的整体性能 网络亚健康隔离前会尝试主动恢复
下面是我们亚健康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又恢复正常。
通过以上例子,我们可以知道亚健康2.0比1.0的优势是:
全局仲裁,检测更快速和精准 及时发出告警,快速定位原因 尝试自动恢复,智能运维 自动进行隔离,保证存储集群的整体性能
总结
亚健康2.0,对网络的颗粒度管理也上升了一个量级,在一个数据节点读写出问题时将其隔离起来,避免拖累其他数据节点的读写速度。不仅大幅提升了分布式系统的“免疫力”,更使得XSKY SDS V5底座具有了智能运维(AI Ops)功能,进一步提升了政企机构数据存储、数据管理的效能,降低了运维成本。目前,我们正在进一步开发亚健康3.0,将对服务亚健康做更精细化的检测和隔离。
END
如想了解更多产品信息扫码联系XSKY星辰天合售前专家
XSKY SDS V5技术解读系列