最近做了个内部分享,谈了些我自己对于公有云私有云的一些看法,以及一些评估此类解决方案的建议。截取其中的主要内容和大家分享一下。
这里只聊IaaS。因为相对现在这个模式还是用的最多的,也比较容易比较。至于市场趋势和前景会是公有云为主还是私有云为主,我没资格多多评论,也不想去聊各自方案的价格。只是想说说针对不同需求,方案设计的一些特色和侧重。
对于公有云用户和私有云用户,有个本质上的区别。公有云用户基本是从无到有:原先没有服务器没有完整的后台IT架构,现在由于业务需求希望快速低成本的建设一个IT系统;而私有云用户其实是从有到省:从原先完善但庞大不灵活的IT系统,转向一个效率更高,扩容升级更灵活对业务影响更小的系统架构。
因此,大家的需求也不一样。只说初期的需求,公有云用户的需求就是快速上线,经济实惠。而私有云用户更多的是要求平滑过渡,保留现有体验,不影响现有业务。上图基本总结了两类用户的不同诉求。
所以作为云方案的设计者,软件供应商,在应对不同需求时候,云解决方案也会有不同的侧重。
比如方案的针对客户群是私有云,那么一开始设计时就会更多的关注于完善企业需求的高可用和业务连续性,数据可靠性一类的功能。会提供诸如多重备份,兼容多种存储网络协议及设备,保证虚机高可用的多种组件等等。
如果是针对公有云用户的软件方案,那么在一开始设计时候就会更偏重提供很好的虚机性能,更高的IOPS,存储容量,能承载最多用户或是虚机数等等偏重性能方面的东西,然后再随着用户不断增加的需求再逐步完善更多高级的功能。
总之,任何一类方案,都不是一次性购买之后都尽善尽美的,都是会根据业务的发展不断完善进步。但作为系统上线初期,公有云软件会先关注整个系统的性能,满足海量用户的吞吐量,然后再根据不同级别客户的需求定制化各种高可用数据备份功能;而私有云方案,由于一开始企业内部的虚机用户都不可能达到公有云的级别,但任何一个用户对于虚机使用的可靠性安全性要求都很高,又担心迁移带来的影像,所以在一开始就会力求完善各方面的功能,使用户能够无缝安全的切换到私有云,放心的使用私有云,然后随着使用的深入,再逐步提升私有云性能方面的东西。
性能和功能的对比
性能和功能,任何一项对于任何一种云都很重要。但不论公有云,私有云都不可能两者都做到100分,都会各有侧重。一个成功的IaaS云一定是根据它所针对的用户群需求,把两者的平衡做到最好。
下面我想提一个还不是很成熟的评估云系统的建议。就是用资源利用率来评估。这个资源包括存储,计算以及网络,具体的描述定义见上图。当然这个描述定义只是我个人的一些想法,还很粗糙不完善。宗旨就是想以类似数据中心PUE的方式来对于IaaS系统做一个评估。既然云计算能够实现对于资源最合理最有效的利用,那么也应该有个相对可以量化的东西来对其对于各类资源的利用做一个考量。希望大家集思广益,来看看应该如何定义这个资源利用率标准会更合理更有代表性。
CUE,SUE,NUE这三个指标都是越低越接近1越好,但不可能同时都变低的。其实目前各类方案,归根结底要么是以CPU换硬盘换路由器,要么是以硬盘以路由器换CPU。就看你自己的成本考量和对于针对用户需求的评估。一旦基本评估有了,那么三者的不同权重在云建设者或者运营者的心里其实就有了。那么RUE也就基本确定,可以作为一个考核各家方案的相对参考了。当然,RUE随着云规模的不同也会变化。比如一个100台物理机的私有云云,当其规模变成了200台,那么RUE肯定是会变大的。当然具体变大多少就取决各个方案的scale能力了。
现在我们来看看一般现在的云建设者,或者说云运营商会怎么来评估,考量一个云方案。上图是我和一些运营商,方案采购者沟通了解到的他们的需求。简单来说,私有云建设者考虑的主要还是安全:包括迁移后系统的高可用性能否得到提升,老系统迁移到云上面会不会影响业务等等。
实际应用方案对比
而对于公有云运营商,会更多的关注该方案能不能最大程度利用到他们硬件的性能,能不能保证最终用户的体验等等。举个硬盘出故障后数据恢复的例子吧。硬盘出错在任何一个系统中式难以避免的,所以任何一个方案都会考虑到硬盘数据恢复的策略。而在公有云系统中和私有云系统中,这个策略是完全不同的。
在公有云中,要采取最终用户最感觉不到,恢复时间最快最省钱的策略。而恢复完后副本是不是都一致,磁盘空间是不是多浪费之类,则可以放到第二优先级。私有云则恰恰相反,方案上是必须首先要保证数据的一致性及其副本的完整性的。至于用户在数据恢复期间体验下降甚至不可用,则可以通过发邮件通知等形式提前预警,是可以被接受的。当然,这些都是在有限的预算前提之下。预算越多,当然方案可以考虑的越周全。
上图列举比较了两个云软件方案。这里为了避免一些不必要的麻烦,就隐去了方案供应商的名字。可以告诉大家的,这两个方案都是来自国内的软件公司,都有各自成功的部署案例。这里列出只是他们各自基本方案包里面的功能,没有包含他们各自定制化服务的能力。红字部分是他们各自相对较有特色的部分,绿字部分是他们云方案的一些共有特色。
总体而言,方案A会更适合公有云的部署而方案B会更受私有云建设者的欢迎。其实很显然方案B在系统高可用,以及对于兼容旧有环境,功能方面花了更多的精力。而方案A则更关注如何帮助用户快速部署,上线应用。 但不论哪种方案,对于存储系统的解决方案都不是很完善。其实业界对于这块都还在探索之中。比较幸运的是,现在不论公有云,私有云,对于存储的规模,性能还都没有到要求很高的阶段。特别私有云,现在大部分私有云物理机也就在10台到20台。在这个规模之内,任何一种现有存储方案都是可以应付自如的。但一旦规模到了接近100台物理机,那么基于SAN的方案无论是性能还是成本都会是很大的问题。scale-out的架构应该会是方向,但怎样保证文件系统传统目录结构的兼容性会是另一个比较大的问题。对象存储是另一条路。但其架构诸如Swift本身扩容的局限性,和性能上的不足使其离真正近线使用还有一段距离。如果成本可行,物理机加PCI-E flash设备运行高性能需求虚机,再通过对象存储做副本存放和备份或许是个不错的解决方法,但一些类似vMotion之类功能的体验也不可避免会有所下降。
再从我前面提到过的RUE这一指标来看看这两个方案。很明显方案A在CUE和NUE这方面比较有效率,也就是说CPU的资源被更多的用到了虚拟机的虚拟CPU那边,网络资源也更多的被用到了虚拟机的网络IO层面。但是作为换取这些优势,特别CUE的优势,SUE存储资源其实是被浪费了不少。这个和现在互联网用的较多的多副本策略有关系。方案B在存储资源的利用上做得比较好,这点和其在存储方案上更多依赖于成熟商业存储方案有关。但为了支撑更多的额外高可用功能,数据以及系统安全特性,网络,CPU资源就会被浪费得更多。也就是说,实施方案B会使用户硬件配置里面的CPU档次比方案B配的更高。至于这个代价成本孰优孰劣。因为各家软硬件报价成本都因人因项目而异,这里就不展开分析了。
总之,简单推论,公有云系统里面,对于CPU和网络资源的利用率会更高些,而对于存储资源可能会相应浪费的多些。在私有云系统里面,可能会采用更高档次的CPU或是网络设备,以其来换取别的资源利用率的降低。