虽然AWS在IaaS市场摸爬滚打这么多年,在公有云领域可谓傲视群雄,开拓了云计算的广袤市场,但是,凭借新技术和服务等杀入公有云领域的硅谷新贵们也绝对不容小视,技术的发展速度之快,超出了我们的想象。根据客户的反馈,作者总结了亚马逊EC2的五个问题,当然可能还不完全,但是相信会对云计算领域的玩家有借鉴意义,本文来自OpenStack中国社区。
以下为原文:
基于AWS用户的反馈,我们列出了亚马逊EC2(亚马逊弹性计算云,云计算服务的核心及基础,提供非常弹性的实例管理)的五项问题,它们不仅不好解决而且还会迫使用户另寻它物。
共享EBS卷
EBS(Elastic Block Store,弹性块存储)为亚马逊EC2提供永久存储。由于去除了对速度缓慢的亚马逊S3(另一个云计算产品)的依赖,它在2009年一经推出就得到了高度评价。
许多工程师只要加载一个Amazon EC2实例,就会马上附加一个EBS卷,并将长期需要的数据移动过去。然而四年过去了, EBS需求最旺盛的功能-将同一个EBS卷附加到多个EC2 实例上还尚未实现。 AWS鼓励在一个load balancer(负载平衡器)后台运行多个亚马逊EC2实例来获得最佳的性能。然而仅在一个EC2实例上运行应用不是个好主意。大多数内容管理系统和媒体驱动的应用程序依赖于共享的存储。当这些系统都迁移到AWS并放在一个 ELB(Elastic Load Balancing,弹性负载均衡)之后,没有简单的策略使得在运行相同应用程序的EC2实例之间来共享内容。
举例来说,一个终端用户上传一个新图片到由负载平衡器随机选取的一个内容服务器上。目前而言,复制这一图片到所有正在运行的服务器是留给开发人员做的。AWS建议使用亚马逊S3存储静态内容,而许多流行的CMS框架期望可以在本地文件系统实现存储。为了确保所有的服务器共享最新的内容,需要强制实现类似Gluster或NFS式的分布式文件系统。这需要前沿技术,其中涉及启动一个专用的虚拟机来运行该文件服务器。这也使得配置很不稳定:文件服务器很容易成为单点故障。
如果亚马逊支持多个EC2实例共享同一个EBS卷,这就能避免对专用文件服务器的需求和对每个服务器进行额外的配置。这其实也不复杂:谷歌计算引擎(Google ComputeEngine)支持在多个实例上同时安装永久磁盘。虽然只有一个实例有对文件系统的读写许可,但是所有的实例将能立即访问该内容。虽然还只是在技术测试阶段,谷歌计算引擎已经在性能和特性方面把目标瞄准了跨越式发展的亚马逊EC2.早期指标显示GCE将是亚马逊EC2的一个可行替代方案。
可配置的ELB流量
ELB(ElasticLoad Balancing,亚马逊弹性负载均衡,是在EC2基础上实现的负载均衡服务)提供了一种能将流量均匀地分布在多个亚马逊EC2实例上的服务。亚马逊把ELB这种服务定位为近乎神奇,它能提供长久的稳定运行和高可扩展性。根据ELB的官方描述,“它能使你在你的应用程序中获得更大的容错能力,无缝地提供用来响应传入应用流量所需的负载平衡能力。”
对负载均衡容量可以无缝增加的承诺肯定带有误导性,因为ELB旨在随着流的线性增加而逐渐扩展。这对于像电子商务门户网站或机票销售那类开始流量较少,随着时间不断增长的模式是可行的,但是如果是在那种建于ELB之上的网站,当它流量飙升,ELB性能就会显著下降。这种模式通常见于发布考试成绩或者发布重大新闻的门户网站。为了使ELB能够随时准备处理这种突发状况, 亚马逊期待AWS用户每月支付最低49美元,以支持服务使ELB能提前“热身”。虽然这一问题有足够多的指导资料来解决,但它们仍然被湮没在AWS的浩瀚文档之中。就像EBS中置备的IOPS功能,亚马逊应当使ELB流量可自定义化,这样客户可以事先选择流量模式以确保可扩展性。
每分钟计费模式
亚马逊EC2用户需按小时支付他们的实例运行。也就是说即使该实例仅运行几分钟,亚马逊还是会按一整个小时收费。当AWS于2008年推出EC2,它被认为是在自助服务和按需供应计算资源方面取得了突破性创新。然而快进到2013年,这就被诟病成了虚拟机定价不合理。如果亚马逊能转换到按分钟计费,那么许多客户就会好好利用这一成本结构带来的好处。但是由于还有许多竞争对手比如Windows Azure以及谷歌Compute Engine (计算引擎)也在用分钟计费法,用户都在观望亚马逊的计费模式将怎样变化。
可改进的CloudWatch度量
亚马逊的CloudWatch(亚马逊云服务监控,有针对性的监控并有警报响应)提供与许多AWS服务有关的度量,包括亚马逊EC2、亚马逊RDS和亚马逊DynamoDB.虽然它支持一系列的服务,亚马逊EC2的度量却仍有很多值得改进的方面。虽然对有关CPU、磁盘和网络有关的基本度量是在监控级别进行的追踪,它仍不尽人意。尽管客户为亚马逊CloudWatch付费,他们仍然需要依靠外部服务如Pingdom来跟踪基本度量,例如网站可用性。为了监测基于网络服务器或数据库服务器的高级服务,客户不得不建立一个基于代理的架构比如Nagios或zabbix.虽然CloudWatch 支持自定义度量, 但需要相当可观的工作量,并且没有对于高级度量的现成支持。
WindowsAzure中最近新增了终端监测,它提供了基本的网站稳定运行时间监控。 Rackspace公司获得了Cloudkick,并将其与众所周知的具有稳定监控功能的Rackspace云
服务器进行了整合。亚马逊可以将一个代理轻松嵌入每个EC2实例来跟踪并报告那些粒状的和精确的度量。 事实上,依附于AWS豆茎(beanstalk)的Amazon EC2实例已经使用代理驱动的监控引擎来跟踪服务器的运行状况。亚马逊应该将该代理从AWS豆茎扩展到所有亚马逊EC2实例,来跟踪和报告有意义的度量。
动态虚拟机大小
如果你认为微软总是用多种不同版本的Windows来迷惑客户,那是因为你还没有见过亚马逊EC2实例类型的数量。
Amazon EC2实例共计6大类,若细分则有18种。每一实例类型都有一特定负载量。 如果你在看过这些实例类型的详细介绍后还没有迷惑,那么接下来你就要开始选择与你的应用程序相匹配的实例类型了。一般你需要选高 CPU 、高内存、高容量、集群计算等等。等这些都有了,用户就一定会得到他们想要的了吗?还不一定。因为通常情况下,本地物理服务器和Amazon EC2实例之间的映射还不完全匹配。在一些情况下是由于存储器,在其他情况下是CPU不合格。无论如何,实际性能永远不能匹配实例类型的能力。那么实例类型的能力是不是很难达到呢?也不是,因为最近加入IaaS竞争的公司 ProfitBricks提供了对虚拟服务器的动态配置。 ProfitBricks还声称它使用InfiniBand互联与SSD存储,因而能提供更佳性能。现在是亚马逊转向动态实例类型的时候了,在这里客户可以拖动滑块以选择内存、核心数量、CPU和磁盘容量。这将简化对Amazon EC2的配置,并且客户能够获得服务器配置的控制权。他们可以停止、调整配置,并重新启动亚马逊EC2实例,直到性能令人满意。