云计算运维与传统运维的差异性

51CTO:阿里巴巴云计算运维是在什么样的背景下产生的?

柯旻:由于阿里巴巴业务的发展需要,数据量飞速膨胀。云计算、分布式计算等(包括我们自主开发的飞天系统),都是在这样的背景下产生的。

51CTO:云计算运维与传统运维的区别在哪里?

柯旻:其实最主要区别是量的膨胀。

传统的运维可能只有几十,或者上百的机器,这些机器上面有十个、二十个应用,但是在云计算运维这块,可能面临的情况是三千台、五千台机器这么一个量级的,是一个极速膨胀的状态。再者,关注点可能会有一些偏差,因为传统运维可能涉及的业务线会很多,所以对于某些技术点的深挖可能精力不够。

云计算运维主要是对整体的把控,包括机房网络、带宽之类的,一些服务器的性能优化,服务器的价格等,比方说像飞天或者Hadoop这上面的应用,这些方面都需要去关注,底层的东西也需要了解得更多。

从大的方向来讲,云计算运维和传统运维都是做保证服务器稳定运行之类的这些事情,没有什么本质的偏差,因为这个是运维人员的职责,不过在具体的执行层面,可能偏向的会不一样。

51CTO:云计算的核心是虚拟化技术,而在云计算时代,系统规模更加庞大,结构更加复杂,系统运维自动化是必然趋势,阿里巴巴有没有虚拟化平台的运维自动化案例呢?

柯旻:我们内部会有一些系统做相对来说自动化的一些工作,但是这个东西也是云计算运维或者大数据运维这方面的,跟传统运维有一些差别,可能传统运维一台两台机器去运行的时候,你需要快速的响应去处理,对线上的影响比较大,而对于云计算运维来说,可能三台、五台或者十台机器挂掉,也不会产生很大的一些影响,或者说某种意义上来讲,对于这种单机的处理上面,我们可能比传统的运营商运维人员面临的条件会更好,我们更容易去处理一些故障。我们目标是希望一台普通的机器,它在上线整个生命周期里面,是不需要人为去干预的,都是一套自动的东西,对于我们现场的工作人员来说,可能就是他接到一个工单就是这台机器什么方面坏掉了,他去把它换掉,然后确认后会自动的把它恢复了,加入到集群里面去。

51CTO:云计算运维过程中,需要运维人员注意的方面是什么?

柯旻:在云计算过程中,你需要更多的去了解系统底层的东西,怎么样跟这个应用上面的优化达到最合适的情况。同时也需要去关注一下,用户的需求是什么样的。因为你的使用方可能相对来说是一个比较集中的状态,而实际上使用的是你的大的平台,所以说他们基本上都是在这个上面,这个上面他们可能根据自己的任务的情况,有一些优化一些东西,可能对这个平台有一些不同的需求,这个地方你也需要去更多的去了解,或者说帮助用户去更好地使用这些平台。

51CTO:这整个过程中,遇到的最大的挑战是什么?

柯旻:我们目前来说遇到的最大挑战可能就是软件层面的,我们规模越大,挑战就越大,这个上面可能更多的需要开发人员在代码上的做一定的更改和优化,或者构架上的调整,然后去解决这个问题。在这个过程中间,运维人员是需要配合开发人员的。

阿里巴巴的自动化运维案例

51CTO:自动化运维有很多方面,比如系统部署,监控,代码自动部署与回滚,命令执行与资源配置等。阿里巴巴主要运用的是自动化哪个方面?

柯旻:阿里巴巴自动化运维是全方位的,你提到的这些都是要做的,因为这个东西需要整体一套全部打通,你才能谈得上自动化去运维。然后这里面会有不同的分工,比方说从我们应用层面上面来说,举一个简单的例子,假如一台机器某块盘坏掉以后,你的应用需要自动的能够把这个坏的盘下线掉,我们后台的监控程序会去轮询去找到这个发现这个盘,会把这些盘从sys里进行下线,重新做一些修复处理,看能不能加过去,如果加不回去,那就说明这个盘可能就彻底坏掉了,坏掉了以后,然后我们会自动在工单系统里面去提交一个报修,这整个过程中间是没有人为干预的。

然后到了报修的时候,可能我们现场的工作人员就会接到这个工单以后,他们会安排时间,一周两次或者说一次,他们会统一去把这些盘全部都换掉。如果是这些盘是系统盘都挂掉以后,他们可能会帮我们换掉以后,也会触发自动安装,然后它会自动去安装,部署完了以后,如果是某一块数据盘坏掉的话,他把盘换掉以后,因为这个本身就是在线上在运转,我们后台有程序会发现这个盘正常以后,我们会把这个加到系统里面去,然后应用发现这块盘后它会自动的识别添加到服务中来。也就是说在这整个过程中间,可能就只是现场的人员更换硬件,需要人为处理。

如果对于机器重装的情况,我们会统一在一个时间段,比方说我一周或者一个月的时间,我把这个机器整理以后,会统一有一个自动化的部署的触发,它会把这整个机器初始化掉,让里面的系统环节各个方面应用部署的状态,它会去找到自己的兄弟节点去做一次克隆,恢复成跟线上的"兄弟姐妹"一模一样的状态,然后再上线。这个地方也是人员的触发,就是一个很简单的命令或者web点击触发。当然后续目标是能做到更加自动的恢复

51CTO:阿里在监控方面用了哪些工具?监控系统的报警流程是什么样?

柯旻:由于传统的监控工具可能满足不了我们现在的需求,所以我们内部有一套自己开发的监控系统,像阿里巴巴、百度、腾讯这样的公司,因为量比较大,所以说基本上都是内部开发的一套系统,可能腾讯有腾讯自己的,百度有百度自己的,可能都是根据企业自身的发展需求来定的。

就拿我们来说,除了一些重要节点的单机报警以外,这个系统可能会加一些基础的报警,它可能是一种批量的,我们会设一个阀值,比方说下面同时有十台机器挂了,或者十五台机器挂了,同时挂掉,在一个检查周期里面同时挂掉的时候,可能才会发一个报警,如果挂掉一台两台,可能我们就不报警了。或者说我可能发了报警就只是一个消息,可能一个邮件出来,可能哪天我花点时间去看看今天大概有多少,然后会去看一眼,或者说觉得今天可能做别的事情比较多,可能这个事情我会放在后面集中再去处理。

51CTO:在大规模集群的情况下,如何才能做好自动化运维呢?

柯旻:我个人觉得这是一个意识问题,如果是热衷于去手动处理的话,可能自动化这些东西,你就会投入精力去更少,而应当你发现一件事情重复三次以后,就应该需要去考虑怎么能够不需要人为自动去处理,但是这个过程中间,是有一些阵痛。如果正常的情况下,你不停的人为去处理的话,到了一个阶段以后,就会成为一个瓶颈了,因为你的精力已经不够用。所以要去做自动化,可能在刚刚开始的时候,你效率的提升比较小,因为你要花很多时间去想怎么样自动化,怎么样不要出现问题,但是如果你这个自动化做好以后,你就会发现后面你的效率会越来越高。

阿里Hadoop集群性能优化和故障排查

51CTO:阿里是什么时候开始有Hadoop集群的?现阶段Hadoop集群大致的规模是?

柯旻:2009年开始应该是200台左右开始慢慢发展。目前来说,基本上接近单集群五千台。

51CTO:对于Hadoop集群性能优化这方面,您认为比较可行的方法有哪些?

柯旻:性能优化这个东西,这块开发方面去要优化很多东西的,对于运维来说,我们的性能优化,可能更多的专注在硬件设备,sys层面和应用层面结合的一些优化。我们会根据情况跟开发人员提需求和建议,但是真正来说,本质上的性能优化来说,更多的还是开发在代码上的改动,减少各类开销和锁的力度,提高并发度等。

51CTO:云计算环境下,传统的网络运维人员压力倍增,您怎么看待这个问题?

柯旻:其实这跟运维的职业有关,运维的职业基本上24小时要oncall,可能随时随地会有电话打给你,因为你不知道这个故障会什么时候发生,所以说运维人员的压力是比较大的。对于变化比较小的行业运维人员而言,可能会相对轻松一点,但对云计算来说目前整个行业在飞速发展,可能会有各种各样的问题,作为运维人员来说的话,可能这方面的压力是更大的。

自动化运维这个东西是一个长期过程,可能随着你的云计算,或者大数据发展,外在的环境,机房网络,这些环境都在变,你的自动化是一个持续性发展下去的事情。而且你要通过这些自动化工具提高你的工作效率,你才能有精力去做更重要的一些事情。所以不会出现自动化了就不需要运维人员的情况。

随着现在的发展自动化,下一步从我们这边来看的话,可能就变成一个数字化运维。可能更需要去动脑子去想怎么样去实现,所以说自动化不是说是会让你失业的东西。而是说能够让你有更多的精力去做一些更有一些意义的事情。

51CTO:您认为数字化运维这条路应该怎么走?

柯旻:随着集群规模的扩大,机器的数量的膨胀,用户数量的增加,我们已经很难再去找到一些经验借鉴。当你没有经验可以借鉴的时候,唯一有一个东西是不会去忽悠你,那就是数据,数据一定是真实的,怎么样能够快速的真实的拿到这些真实的数据,然后通过我们的数据化分析去得到我们想要得到结果。这实际是一个探索的过程,我们现在有一点点的想法,但是这个想法的实现,我们还在做,这条路是不是一定是这么走的,其实我们也不是那么有把握。因为这种硬件的投入和成本投入非常大,所以说如果依靠拍脑袋或者怎么样,你可能会有一些失误的判断,而你这个失误的判断,可能给公司造成的损失是巨大的,通过这些数据分析去预测的话,可能不能百分之百的避免出问题,但是它可能会最大化的去减少到出问题的概率。因为数据是真实的,你只要把这些数据,去挖掘得足够深,它其实是能够告诉你很多东西该怎么去做。你可以通过这些东西去推断,去分析,可能最后到某种意义上来说,一个靠谱的数据分析师就能去做一些运维决策工作,因为其实做数据分析这块是非常需要想象力的。对于我们运维来说,因为我们自己的运维数据也非常多,比方说程序的温度、负载、磁盘、应用的状况,各个方面的数据,其实也是在一个飞速的膨胀,然后怎么样能够快速的去分析这些数据,这也是一个比较大的挑战。

好的,专访就到这里,非常感谢大舞的分享。也欢迎大家留言讨论云计算运维这些事儿。