云计算的弹性和自动化运维浅析
这些年,云计算从概念逐步发展到大势,又从大势逐步落地。这个“落地”的过程,又被公有云、私有云、混合云等等概念演绎得五花八门。
不过归根结底,云计算的理念还是“让用户像用水用电那样使用计算资源,按需获取,按量计费”——以服务的方式提供计算资源——因为用户的计算需求是弹性的,因此真正弹性的云计算,才会帮助用户最大限度地降低计算资源的总体拥有和使用成本。
弹性究竟意味着什么?
什么是弹性?首先,整合计算资源,将计算资源池化,通过虚拟机按需使用计算资源;其次,按量计费,让用户能够根据使用量按月按时甚至按秒来进行付费。
不过,光有了这两条还不够。为什么?我举个例子:
很多做运维的朋友都深有体会,比如因为一个系统的警告,你就得立即去调度更多的资源,哪怕是深更半夜也得爬起来。
应对的解决方案有很多种,比如加大冗余,让计算资源不至于因为突发性的访问量激增或计算负载的激增而宕机。但是,这样做就和传统的物理机区别不大了。因为云计算的核心优势之一就是客户弹性适应计算需求的变化。
为什么云计算最早是亚马逊做出来的,而不是IBM、惠普、Oracle、SAP这些IT巨头?就是因为亚马逊为了应对圣诞节网上购物需求的激增,不得不一再扩容其数据中心,而除了圣诞节、感恩节这些购物高峰季节,平时的购物请求仅仅是峰值的1/5,大量闲置的计算资源不得不让亚马逊思考是否能够将其出租给其他零散计算中心级需求的中小企业。
如果仅仅是满足零散需求的用户,其实前两个弹性也就足够了。但关键是,亚马逊需要对自己的弹性计算需求进行近乎实时的加载和释放,这样才能完全清楚能够有多少计算资源进行出租。于是,亚马逊开发了自动伸缩(AutoScaling)功能,不过这一功能主要是针对主机,毕竟,满足亚马逊自身的需求是第一位的。
或许亚马逊当初开发这一功能的架构师是因为离职还是什么别的原因,没有将自动伸缩功能延伸到更多领域,我们不得而知。但公有云提供商如果不是对这一功能有着深刻理解,真正为弹性的用户需求,减轻用户的运维负担,或许连主机的AutoScaling也不会做。即便做了,如果只是照搬,创新也就无从谈起,譬如阿里。
不止是AutoScaling?
笔者认同“一个做了15年的运维老兵对公有云的深度剖析”那篇文章里所阐述的观点:“青云之后,再难有大的创新,IaaS的创业门槛一下就提高了很多,甚至可以说大门都快关上了。”
很显然,在公有云基础架构层面最具创新精神的创业公司当属青云。这次也不例外——事实上,与其他云服务商推出的有限的自动伸缩功能不同,青云QingCloud的AutoScaling能够自动调整所有基于QingCloud之上的云资源,包括IP带宽、数据库存储空间、负载均衡器的后端数量等一切可以监控到的数据。
应该说,青云的做法大大拓展了我们作为普通用户的视野。为此,笔者专门采访了青云AutoScaling的开发者罗夕(Simon Luo)。他解释说,用户在公有云上建个账户,然后把物理资源搬到云上,需要部署资源,或者新添一些业务,也要对主机、存储和网络资源进行部署。除了部署之外,对于互联网企业来说,更重要的是接下来的监控,让系统资源能够满足访问量的变化。
其实,互联网企业不止是亚马逊这样的电商,在各种大促,特别是圣诞、感恩节、双十一这些时期,可以预见访问量激增的情况,提前做出充足冗余。举个例子,就在三个月前,App“足记”突然席卷朋友圈,有点像去年的疯狂猜图、魔漫相机、脸萌这类的App,访问量突然呈爆发式增长——最高峰每天PV过亿,每天新增用户上百万!结果呢,足记宕机了——一周7天有4天宕机,除了一再跟用户道歉,只能向云计算服务商发出求救信号。
这种情况下,一个好的足够弹性的架构当然非常关键,比如业务层面的扩展、网络层面的扩展、数据层面的扩展等等,其中也包括比如自动伸缩(AutoScaling)和定时器(Scheduler)这类自动化运维工具的合理使用,至少可以在一定程度上,为工程师人工介入进行紧急处理提供相对充足的修复时间。
比如有了自动伸缩功能,并且有监控告警服务做支撑,可以给负载均衡器后面扩充更多的主机、调高带宽;当然也可以做下调,就是在访问量长期处于低谷的时候,可以自动减少资源,调低带宽,这带来得好处就是成本降低。而且不管上调、下调都不需要人为的参与,所以在人力成本上也会有一定的节省。
据罗夕介绍,AutoScaling可以动态地调节用户的访问压力,调节有两个方向,一是扩大或者上调,给负载均衡器后面扩充更多的主机、调高带宽;二是也可以下调,在访问量长期处于低谷的时候,可以自动减少资源,调低带宽——这样带来的好处一是占有资源更合理,资源占用成本降低;二是不需要人为过多参与,节省人力成本,让企业将运维人员的大部分精力放到业务发展上面。
值得一提的是,青云AutoScaling是免费的工具,而且执行是基于脚本的,目前QingCloud会自动帮助用户生成脚本,并且可以在控制台浏览。未来QingCloud还会开放脚本的编辑功能,让用户可以通过编写脚本的形式自定义操作行为,满足更复杂、更个性化的需求。
青云的“弹性”RoadMap
当然,青云能够开发超越亚马逊跟阿里的AutoScaling,除了执着于云计算的“弹性”理念之外,还在于其扎实的基础。
据罗夕介绍,青云最底层的Collection是监控数据采集服务,它会采集主机的监控,也会采集流量的监控,每层都是上一层的基础,采集完之后会把它收集起来。而AutoScaling是基于Alarm监控告警做的触发,Alarm则是从Collection里面读取数据。这样一个基础,使得AutoScaling在执行的时候利用青云开放的API和已开发的很多项功能,最终实现对青云所有资源的AutoScaling。
在青云的RoadMap里,目前服务器、存储、网络、安全这四大IaaS层的拼图已经基本完整,包括主机的映像、硬盘、内网DNS等,后续还会持续进行优化,以及针对私有云一些特殊的要求,进行功能的补充。实际上,今年青云的重点是放在了所谓的Technical PaaS层面——比如AutoScaling和Scheduler。
这两个功能当然很重要,因为他们可以大大减轻传统IT运维日常重复的工作。但更为重要的是,像AutoScaling会进一步助力青云后续推出的Technical PaaS,比如对象存储,和之后的大数据分析服务。