云计算基础设施解析
文 / 郭理靖借力云平台,很多公司在业务上取得了成功,但由于云平台上开发经验的欠缺,开发者在云平台的使用上存在不少误区。针对这一现状,本文详细讲述了使用EC2、EBS和S3三个云平台产品过程的常见问题,以及如何在云平台上架构稳定可用的服务。在国外,基于Amazon AWS平台的成功案例越来越多,如日中天的Dropbox、提供DVD租借服务的老牌厂家Netflix,还有无数使用AWS的创业公...
·
文 / 郭理靖
借力云平台,很多公司在业务上取得了成功,但由于云平台上开发经验的欠缺,开发者在云平台的使用上存在不少误区。针对这一现状,本文详细讲述了使用EC2、EBS和S3三个云平台产品过程的常见问题,以及如何在云平台上架构稳定可用的服务。 在国外,基于Amazon AWS平台的成功案例越来越多,如日中天的Dropbox、提供DVD租借服务的老牌厂家Netflix,还有无数使用AWS的创业公司,都已证明AWS不仅是一个成功的商业模式,还是一个可以改变互联网传统开发模式的产品。
国内也有不少团队在使用Amazon AWS为他们的全球客户提供服务,但由于AWS访问速度的问题,很多开发者开始使用国内的云服务提供商的产品。可能是因为大家刚刚从传统的开发模式转移到云平台上,而且云平台上开发经验的分享相对较少,所以开发者在使用云平台上有不少误区。本文将详细介绍使用几个云平台(IaaS平台)产品过程中经常碰到的一些问题,以及如何在云平台上架构稳定可用的服务。
EC2/云主机 不管是从市场调查,还是从实际运营的数据来看,EC2/云主机是使用最多的产品,其概念也是用户最容易理解的。从技术角度来看,EC2/云主机背后的技术是虚拟化,而虚拟化技术是大家耳熟能详的,并且多多少少在工作过程中都接触过。虚拟化技术所带来的好处也广为人知,这里就不重述了。无论用户选择哪家云计算平台,只要申请了EC2/云主机,都可以像在使用一台真正的服务器一样,安装软件,部署程序,对外提供服务。 EC2/云主机最大的特点是按需申请、按需计费。用户可以根据自身需求,申请只有一个CPU且内存很小的超微型机器,也可以申请有多个CPU和大内存的超大型机器,这大大减少了创业团队的初期投入。因为按以前的开发模式, 产品想上线,一般需要购买机器放到机房托管。而对产品上线后的流量估计又很难做到准确,机器买少了支撑不住整个产品,买多了又浪费。至于其他优点,如多种系统支持、方便的控制台管理等,其实都是一个好的云平台应该做的事。 经常有用户会问EC2/云主机可靠吗?性能好吗?使用EC2/云主机时应该注意什么问题?怎样在EC2/云主机上搭建高可用的服务?下面将针对这些问题一一作出解答。
EC2/云主机可靠吗 EC2/云主机是寄宿在物理机上的虚拟机,和物理机一样不可靠。一旦物理机出问题,就一定会影响到虚拟机,因此不要指望云主机像钻石一般,能够恒久远,永不宕机。所有物理机会出的毛病, EC2/云主机一样都会出。
EC2/云主机性能怎样 性能的具体指标很难定义,但可以从CPU、内存和磁盘I/O上粗略看出一台机器的性能好坏。先从CPU角度来说,现在的虚拟化技术对物理机(宿主机)的CPU资源消耗比例已经非常低了,所以能够分配给虚拟机的CPU资源是比较充足的。一般来说,云平台都会有自己定义的CPU计算能力的单位(比如Amazon叫EC2 Compute Unit, ECU),然后给不同类型的云主机分配不同的计算资源。宿主机的CPU核数一般会比较大,因为CPU核数少就没有虚拟化的意义了。 从内存角度讲,宿主机也是高内存的,不同类型的云主机会分配到不同的内存,所以内存也不存在太大的问题。 现在很多系统的瓶颈都是在磁盘I/O上,虚拟化技术也不例外。哪怕宿主机用RAID提升磁盘I/O性能,性能提升还是有限。如果宿主机上的虚拟机过多,肯定会影响各个虚拟机的磁盘I/O性能。比如说,一个200核CPU的宿主机上有100个虚拟机在同时运行,那么平均分配到每个虚拟机的磁盘I/O性能只有宿主机的1%(当然所有的虚拟化技术都会进行磁盘读写的优化,所以实际上虚拟机的磁盘I/O性能要远远好于1%,但再好的优化也达不到所需要的性能)。因此,云平台都会有自己的调度算法来保证一个宿主机上的虚拟机个数不会超过可以容忍的上限。 总的来说,云主机的磁盘I/O肯定不如真正物理机上的磁盘I/O性能好,但在绝大多数场景下也是够用的。 性能的稳定性取决于以下两个因素。
[/caption] Multi-zone是指在相近的区域建设几个机房,每个机房用光纤连接,保证各机房之间的ping值小于1ms,同时保证各个机房之间有足够大的带宽,这样一个机房的数据可以快速迁移到另一个机房。Multi-zone基本解决了单机房不可靠的问题,很多云服务的可靠性都依赖它。 图2展示的是云平台上一个简单的高可用服务,其中云平台提供的负载平衡和数据库服务都是跨机房的。但由于政策的原因,目前国内没有一家公有云平台有Multi-zone的实现,但相信不久的将来会有公有云服务商提供类似的服务。 [caption id="attachment_11541" align="aligncenter" width="323" caption="图2 简单的高可用服务架构"]
[/caption]
使用EC2/云主机应注意的问题
- 云平台有没有做资源公平性的保证,有没有保证虚拟机对CPU、内存、磁盘的使用都有计量且是公平的。如果做了资源公平性保证,那么同宿主机内的虚拟机之间就不会相互影响使用。
- 云平台有没有超卖资源。所谓超卖是指宿主机实际只能支持100台虚拟机,但云平台卖了120台虚拟机。因为平均来说虚拟机的真正使用率并不高,所以云平台可以把用户平时多出来的资源再进行包装出去卖。但在最极端的情况下,用户的性能是得不到保证的。因此,一般的公有云平台都不会超卖,在私有云环境中超卖比较常见,因为可以明显减少企业内部的成本,而且企业内部各部门对极端情况有很好的容忍度。
- 安全和监控是使用云主机时最需要注意的问题。云平台都有安全组(Security Group)的概念,给不同的服务组件启用不同的安全组,因此不要全都使用默认的安全组设置,只开启需要使用的端口即可。有些云平台可以使用密码登录管理,而有些只能用私钥登录,建议最好禁用密码登录,只允许使用私钥登录。云平台都有会有自带的监控体系,使用时最好启用监控。
- 制作镜像。申请一台云主机,安装好需要的软件,设置好服务配置环境,随后制作一个镜像,就可以用这个镜像批量生成同样的环境,减轻重复劳动以节省时间。同时,在某些云主机出问题时,可以快速搭建新服务器顶上,减少服务单点时间。
- 在不需要时结束云主机。需要注意的是,结束云主机与关机是两个概念。用户把云主机关机,云平台会继续对用户进行计费,因为用户可以随时重启机器,云平台必须保留用户的虚拟机,用户还在占用资源,因此还需要计费。在真不需要时,要把云主机结束,而不是简单的关机。结束云主机意味着会把这台云主机上的所有数据清空。如果用户觉得有必要保存这些数据,可以采用其他手段保存。
- 备份。永远不要把重要数据只保存到云主机的本地硬盘上。重要的数据可以放到EBS/云硬盘上,或者定期保存到云存储上。国内外这样的悲惨例子很多。在使用公有平台时,把重要的用户数据保存在云主机的本地磁盘,结果宿主机出问题了,数据全部丢失了。重申一次,EC2/云主机和物理机一样不可靠,重要的数据一定要备份。
- S3/云存储解决了大规模数据待久化存储的问题。前面提到EBS虽然是持久化的,但有容量限制,最大容量为1TB。在这个信息爆炸的时代,每年产生的数据量会翻番。IDC报告宣称2012年全球新增的数据量会达到3ZB以上,如何保存海量数据成为一大难题。有S3/云存储后,用户可以把注意力集中到其他地方,更专注于业务而不用关心运维和容量规划。
- S3/云存储提供的是高持久化服务。Amazon S3的耐久性是99.999999999%,可用性是99.99%,因此可认为保存到S3上的数据不会丢。用户可以把数据库的备份保存到S3/云存储,同时也把数据库的操作日志随时保存到S3/云存储,那么在需要对数据库进行灾难恢复时,用户可以有99.999999999%的可能性保证数据可以恢复到特定的时刻。
更多推荐
已为社区贡献1642条内容
所有评论(0)