之前的系列文章讲述了无状态服务的自动维修。
后来我们尝试将这套方案应用在有状态的Hadoop集群上,经过几个月的线上运行,也取得了不错的效果,本文将分享这个实践过程。
梳理问题
我们先调研了下Hadoop 集群情况:
1、磁盘故障主要来自Hadoop 的hdfs 组件服务,hdfs是存储服务,对数据安全性要求很高,不能因为故障维修而丢失数据
2、集群规模大,磁盘总数超过30万块盘,每周产生约1000块磁盘故障
已有的修复工具不完善,包括故障检测不完全,异常处理、自动任务安全性没有考虑,导致工具自动化程度不高,仍然需要大量的人工参与
上述情况,导致了以下问题:
1、日常消耗了一线运维10%~20%的时间
2、常态下积攒了几百块故障磁盘,造成了严重的资源浪费,因为这些故障磁盘折算下来,就是几十台存储型服务器,总计数百万元的硬件成本
3、稳定性风险,如果hdfs 多个副本所在的磁盘都故障了,会造成数据丢失
解决思路
经过和大数据SRE几番沟通,梳理出了现有修复工具的具体问题:
1、故障检测不完全,尤其是磁盘故障检测,除了常见的读写错误, 还需要检测掉盘、磁盘挂载、dmesg中关于磁盘的各类错误信息,这些错误信息反馈了磁盘的健康状态,比如坏道、坏块、读写速度等,这些都有可能对业务造成影响
2、缺乏安全性保护,现有工具无法根据不同服务控制维修的并发数量,也无法根据