虚拟服务器
虚拟服务器和云都是对硬件的抽象,两者都有很多好处和使用的理由,但它们同时也有各自的阴暗面,只不过鲜有人提及罢了,多年来人们一直称赞云和虚拟服务器的优点,我觉得这是不公平的,因此我决定写下这篇文章以激起大家的讨论,因为此前写过NoSQL的阴暗面,也许有人会质疑我是否是偏执狂,我才不管这些,随别人怎么说。
虚拟服务器
虚拟化是一种趋势,它离不开虚拟机,虚拟机是运行在硬件抽象层上的一种软件,使用虚拟机有以下好处:
◇ 安装简单、快速
◇ 更好的资源利用率
◇ 可以在相同硬件上安装更多服务器
◇ 更容易提供24/7服务
◇ 无停机迁移到新硬件等
但虚拟机也有其阴暗面,如成本和性能,我不止一次看到,人们总是喜欢将各种应用一股脑全部放到虚拟机上,但虚拟机还不能达到和本地运行一样的效果,特别是I/O密集型服务器运行起来更慢,根据我以往的经验,在Xen虚拟机上运行高流量应用程序时要比本地运行慢20%左右,因此要想在虚拟机上实现相同的性能,你必须增加更多的硬件,这就意味着成本会上升。此外,如果不使用开源的程序,那要为专有软件支付昂贵的许可费。市场营销人员一般会声称虚拟化服务器对性能没有影响,这纯粹是扯淡,例如,Riak服务器配置描述是这样写的:
“和大多数数据存储一样,Riak在不虚拟化时表现得更好,虚拟机(VM)可能会引起I/O和网络性能下降,这取决于它们是如何配置,以及它们运行的环境。”
也有一些管理员认为可以在固定不变的硬件资源上增加更多的虚拟机,我不止一次看到有人这么干,他们的理由很简单:绿色和降低用电量,但用户对系统性能的抱怨却越来越多,虚拟机越多,给每个虚拟机分配的资源就会越少,势必会影响到其它虚拟机的性能,但如果虚拟机本身对资源的需求不高,则可以考虑将这些虚拟机整合到一台物理机上,此外,有些虚拟机是白天工作负载高,有些虚拟机是夜间工作负载高,也可以将它们组合到一起,但虚拟机不是减少硬件成本的灵丹妙药,你需要平衡虚拟服务器和成本的好处,永远不要让虚拟机超过物理硬件本身的承受能力。
云计算实例
每个人似乎都想转移到云上,Reddit就是一个例子:
“上周我们让最后一台物理服务器退役了,从现在起,Reddit整站全部运行在云上,我们使用的是Amazon Web Services,如果一切顺利的话,你应该没有感到任何变化,如果你愿意,我们可以为你提供一些咨询和帮助。”
在Reddit上还有一些更深入的讨论,其中提到了一些具体的数字:
9TB块存储
2TB S3存储
6.5TB数据输出/月
2TB数据存储/月”
也有谈到成本的:
“现在大约是$15K/月”
以及:
“是的,它降低了约30%的成本,随着价格的降低,应该会变得更便宜。”
这使我很好奇,几乎和为云计算大唱赞歌的人口气一样,但云计算的阴暗面之一就是成本,对大多数用户而言,云计算更贵。
因此我想和云比较一下,这里就使用Amazon EC2作为目标,它的i7机器每月的费用是95或120美元,一位评论家估计i7可以分成12-15个计算单元(CU),作如下对比:
◇ EQ6, i7-920, 12 CU, 12 GB, 5TB流量,$95/月,安装费$200
◇ EQ8, i7-920, 12 CU, 24 GB, 5TB流量,$120/月,安装费$200
◇ L, 4 CU, 7.5GB, 4TB OUT, 1TB
◇ XL, 8 CU, 15GB, 4TB OUT, 1TB
在成本比较方面,我计算了三种模式:5服务器,100%的利用率;5服务器,按需使用;15服务器,按需使用,有一个短的高峰期。
5个应用程序服务器示例
模式0
5个应用程序服务器,在EC2上的利用率100%
模式1
5个应用程序服务器,根据我的经验,你可以从某处启动
为5小时高峰分配5,10小时分配2,9小时分配1,则:
◇ 2服务器42%
◇ 1服务器100%
◇ 2服务器21%
图 1 5服务器云和5服务器租用的对比
16个应用程序服务器示例
第三个模式(模式2)为1小时峰值(5%)增加了10个服务器:
图 2 15服务器云(加1小时峰值)和15服务器租用100%利用率的对比
比较所有价格后,我们得出(不考虑负载均衡器,无存储,不同的支付模式):
图 3 服务器租用和EC2云成本比较
从上图可以看出,如果你的服务器使用率达到了100%,EC2比租用服务器(模式0)要贵2到3.3倍,另外再看CU,EC2实例没有租用硬件的计算能力强,因此需要更多的EC2实例。如果你运行一个多元化的配置(模式1),成本要高出1.75到2.6倍,但比较结果也显示(模式2),如果你有极端高峰期(500%的正常运作,15:3服务器),增加10个服务器只会让你每年多付1400美元,相比之下,L版本比租用15个服务器更便宜,但它的容量比XL配置要小得多,价格也只便宜约3%左右(但更灵活),如果你有更多的极端模型,在云中运行明显比租用服务器更划算,也许你需要的人少了,因此TCO也降下来了,你需要考虑数据库服务器,负载均衡器和其它服务要保持24小时运行,因此1个服务器是不能满足24小服务要求的,同样,当你运行一个全球企业时,你的服务应该要24小时时刻保持可访问(有些人认为,如果购买服务器并部署在一起可能是最便宜的选择,但前期费用会很高)。
如果你的企业成长很快,一年内服务器数量从5到10,再到50台,如果你的业务运行在云中,要增加容量就很容易了,如果是租用服务器则要面临诸多挑战,大多数供应商都需要几天时间来新增硬件,并且会影响到你的业务计划。
也许Joel York说得对,他曾写下这样的话:
“让我们面对现实吧,CIO不应该去竞争节约大奖,CIO只有提供比竞争对手更好更快的服务,才能赢得公司、同事和用户群的好评,节约成本是好事,但这并不是推动云计算的唯一驱动力。”
小结
许多公司认为云是它们的未来,但不要欺骗自己,虚拟化和云不是灵丹妙药,如果你不需要它,就不要买它,不要看到一颗树就买下整片森林。
如果你对此有不同的看法或见解,或是对Reddit节省30%的效果有额外的计算方法或解释,欢迎你发表评论。
(原文名:The Dark Side of Virtualized Servers and The Cloud 作者:Stephan Schmidt)