都说2015年是国内云计算元年,对我个人来说,2015年也是本人正式全面接触云服务的元年。

本文仅从个人角度分析当前国内主流IaaS云的使用体验,主要从各云厂商提供的功能抽象,管理后台,付费机制等方面进行分析,不包括以下方面内容:

  1. 性能对比测试
  2. 故障率以及稳定性比较

要做这两方面比较太耗费精力,需要做长期的监控观察,非个人可以完成的事情。另外本文仅仅代表个人的使用体验,主要包括以下云:AWS(国际/国内),阿里云,UCloud,青云,腾讯云。其他的云未使用过,不做评价。

另外开始前先说下我对IaaS云的整体观点,首先IaaS云整体降低了互联网创业启动的技术门槛,把最辛苦的机房运维工作接管了,功不可没,所有的互联网创业者都应该表示感谢(这个去机房搬过机器,布过网线的创业者应该感触更深)。另外这一年里关于IaaS云的负面消息也不断,使得有些创业者选择时心存疑虑,但这个事情主要有两方面原因:

  1. 黑天鹅事件,比如被挖掘机挖了网线,比如被雷劈了机房。这个事情自建机房也不可避免,看运气了。
  2. 确实是云系统bug或者运维操作导致的故障 这种故障如果是自建机房,只要最终用户不能感知,大多数也就内部消化了,不会曝光到外面。但现在责任明确了,肯定曝光出来了,所以给人云服务不靠谱的感觉。

所以大家评估是否选用云服务,还是应该持相对客观的态度。

下面按照我总结的以一个云用户来看,比较关心的云功能点来具体分析。

网络

当前各云厂商主要提供者两种网络模式,当然各家的叫法可能不一样。

  • 基础网络/经典网络
  • VPC/私有网络/专有网络

基础网络是所有用户共享的一个大的内网,内网的机器之间都是可以互通的,就如同办公室同一个路由器下的所有机器都是互通的,云厂商为了安全,在网络层通过防火墙对用户进行了隔离。各家实现都差不太多。

基础网络防火墙的隔离一般有两种做法

  • 用户级别的防火墙 同一个用户的多台机器之间内网是默认互通,不同用户之间默认是不互通的。(典型:阿里云)
  • 实例级别的防火墙 防火墙由每个实例控制,内网的机器可以互通的,但默认的防火墙有限制,用户可以通过防火墙控制哪些机器可访问自己的机器。(典型:青云)

当然,无论哪种实现,基础网络的这种模式决定了使用基础网络肯定有内网安全风险,比如防火墙失效,并且复杂的防火墙规则肯定对网络传输性能有影响。所以正式使用的服务建议还是尽量使用VPC。

VPC 全称Virtual Private Cloud,是SDN技术的应用,目标是允许用户在云上自定义网络以及实现用户之间的隔离。这个各家的实现差异略大。

  1. AWS

    AWS VPC下的子网区分公有子网和私有子网。
    公有子网包含一个公网网关,子网内的服务器分配公网IP后,可以直接访问外网,可对外提供服务,也可以挂载到公网负载均衡器后面对外提供服务(没有公网IP也可挂载到负载均衡器后)。没有公网IP的服务器无法访问外网,所以这个子网下的服务器一般设置成自动分配公网IP,自动分配的公网IP在服务器关闭后会被回收,再次启动时会分配一个新的IP。自动分配的公网IP不收费,如果需要固定的IP,则需要申请Elastic IP,EIP每个VPC内有个数限制,绑定时不收费,空闲时收费。
    私有子网的服务器和公网是不通的,要访问公网必须自己在公有子网里搭建NAT。NAT是一个单独的实例,搭建后台有引导,比较方便,NAT路由的设置可以在后台界面进行。根据AWS的朋友反馈,当前AWS已经支持Managed NAT服务了,可以不用自己搭了,不过国内的AWS还没支持。

    VPC支持VPN以及对等连接(用于将两个VPC连接到一起)
    负载均衡器 AWS的负载均衡器分公网和私网两种,公网的负载均衡器必须建立在公有子网里,可以同时转发请求到公有和私有子网。创建负载均衡器的高级选项可选择负载均衡器所在的子网,和负载均衡器后可挂载的主机没有关系(这个我一直理解错了,以为选择的子网是后端主机所在的子网。)。私有负载均衡器无公网IP,只能在VPC内访问。AWS的负载均衡器后面直接挂载主机,配置端口映射,不支持复杂的转发策略。支持存活探测。

  2. 阿里云

    阿里云VPC可以看做是AWS VPC的简化版本,不支持公有子网和私有子网这样的划分,VPC内的服务器访问公网需要绑定公网IP,或者自己搭建NAT并进行配置,但后台上没有找到可配置的地方。 不支持自动分配公网IP,公网IP需要单独申请,按流量或者固定带宽计费。最多20个。
    VPN以及对等连接也需要自己搭建。
    负载均衡器 和AWS类似,挂载实例,端口映射,不支持转发策略配置。支持存活探测。公有网络的负载均衡器只能在经典网络里。

  3. UCloud

    UCloud的VPC叫私有虚拟网络,自定义子网的云主机和公网默认不通,要访问公网或联通其他子网则必须通过虚拟路由器,其中虚拟路由器也可以绑定EIP,如果内网的服务要对外提供,则需要在路由器上做端口映射,配置转发规则。这种模式简单容易理解,在公司内网用过路由器的人大多都能明白,也不需要设置NAT路由,还节省公网IP。不过这种模式的问题是比较麻烦,负载均衡器也不能直接挂载内网服务器,如果内网服务器稍多,做端口映射,分配端口比较头疼。

  4. 腾讯云

    腾讯云的VPC叫私有网络,几乎是AWS VPC的克隆。不支持公有子网和私有子网的划分,在VPC内添加服务器的时候,可以选择是否作为网关,用于简化用户的配置。 VPC内的主机也不支持自动分配公网IP,需要申请EIP,按时间计费,不过绑定资源后不收费。最多开通20个EIP。 VPC内置支持VPN以及对等连接。
    负载均衡器 和AWS类似,挂载实例,端口映射,不支持转发策略配置。支持存活探测。分公网和私网,既可以在VPC内也可以在基础网络。

  5. 青云

    青云提供两种模式,一种是和UCloud类似的虚拟路由器模式,另外一种是VPC。新的区才支持VPC。

    青云的VPC下可以挂私有网络,相当于子网,不区分公有私有。子网内的服务器分配公网IP后即可访问公网。如果子网内的服务器不分配公网IP,只要VPC上绑定公网IP就可访问公网。我的理解是VPC本身携带了NAT的机制,省去了自己搭建NAT的成本。所以青云的VPC是独立收费的,大约36¥/月。
    青云的所有服务器都不支持自动分配公网IP,包括基础网络中的,所有公网IP都需要单独申请绑定,独立计费。
    青云的VPC支持VPN,隧道服务(和对等连接类似),还支持内网的自定义DNS服务。
    负载均衡器 青云的负载均衡器做的比较复杂,支持转发策略,支持挂载实例端口映射或者直接配置IP和端口。区分公网和私有网络负载均衡器。

总结,个人认为创业团队使用公有云服务,首先应该考虑的是网络架构,所以应该首选VPC,考量各家VPC的特点,对自己的服务进行规划,自己的那些服务需要对外?那些服务需要公网IP?哪些服务需要挂载负载均衡后面?哪些可以放在私有子网里?是否需要做NAT?这些都要考虑好。当然如果只是弄一台服务器,搭个博客啥的可以不用考量这么复杂。

对云服务商来说,教育用户使用VPC也是当务之急。阿里云前一段时间内网IP吃紧,都打算使用部分尚未启用的公网IP作为内网IP使用了,说明很多人还是不知道使用VPC。AWS从2013年12月4日之后创建的账户仅支持VPC,应该也是遇到这种问题了。AWS的做法是默认给用户创建一个带公有子网的VPC,这样对用户是无感的,用户都不需要理解VPC是什么,和使用基础网络的体验差不多。

云主机,硬盘,镜像与备份

云主机

各家的云主机都是选择配置,然后启动虚拟机。AWS,阿里云是预先设定好的主机类型,然后供用户选择,不提供自由组合。腾讯云,青云,UCloud都提供自由组合,不过有一定限制。青云和UCloud提供用户后台修改主机配置的机制。

硬盘

  • AWS 提供三种硬盘,通用型 (SSD),Provisioned IOPS,磁介质。前两种的区别是IOPS限制的区别,通用型的IOPS由硬盘大小决定,3 IOPS/GiB,但有个复杂的累计突增机制。Provisioned IOPS类型的在创建的时候可以指定IOPS速率,可保证磁盘的IOPS,当然这种类型的磁盘价格和IOPS相关。最后的磁介质最便宜一般用来存冷数据。
  • 阿里云 提供SSD云盘,高效云盘,普通云盘,本地SSD盘四种硬盘。但貌似最后一种本地SSD盘已经不提供了。前三种的区别主要是IOPS和容量的限制。
  • 青云 提供性能型,容量型,超高性能型三种硬盘。没有明确的IOPS限制说明,只有吞吐量限制说明。
  • UCloud 的硬盘是和主机类型相关的,提供两种主机类型标准机型和SSD机型,分别对应普通硬盘和SSD硬盘。创建主机时分配的硬盘是本地盘,云盘需要单独创建和挂载。
  • 腾讯云 提供本地硬盘和云硬盘,本地硬盘有一些限制,比如不支持备份,导致本地盘迁移的时候会比较麻烦。

镜像与快照

镜像和快照(有的云叫备份)对使用云服务器来说是非常重要的功能。快照是对硬盘的备份,镜像是根据系统盘备份生成的镜像,用来初始化虚拟机。AWS的镜像支持挂载云硬盘后生成组合镜像,UCloud数据方舟备份恢复功能也提供了系统盘+数据盘的组合镜像(ps:该功能需要申请开通),其他厂商的镜像都只支持单盘。

个人觉得组合镜像这个功能非常有用。通常我们使用云服务的习惯都是先找台服务器安装好系统以及基础软件,根据团队的运维习惯,给日志,数据目录挂载不同的附加硬盘并初始化,然后制作镜像供创建更多主机时使用。如果云服务支持组合镜像,那这个镜像本身就包含了附加盘的初始化快照,通过这个镜像初始化的系统,立刻可以使用,不需要再单独为每台机器创建和挂载,初始化硬盘。

另外AWS和阿里云支持硬盘随主机删除的选项设置,这样方便自动化销毁主机的时候同时删除掉硬盘,避免产生空闲硬盘产生额外费用。其他家没找到类似设置选项。

青云的备份支持备份链的机制,可以选择恢复到某个备份节点,并且以图形化的方式展示出来,对用户比较友好。

后台控制台

云服务的用户首先接触的就是云的控制台,这方面各家差异较大。云服务由于功能较多,还要划分各种区域,导致控制台界面复杂。区域和功能应该如何组合展示?这个有两种做法。

  1. 先选择区域,然后再操作功能,所有操作都只针对当前区域。以AWS,青云,UCloud为代表。这种方式的好处是大多数用户其实都只在一个区域进行操作,一旦选定了区域,就不需要每次操作的时候选择区域了。缺点也很明显,就是没有一个地方能总览所有区域的数据。有时候可能不小心在某个不常用的区域创建了主机,后来忘记管理,产生了不预期的费用。
  2. 在所有的功能界面都划分不同的区域,操作的时候选择。以阿里云,腾讯云为代表。好处是方便提供总览的数据,同一个功能下切换区域也比较容易,但缺点是每次操作都要选择区域,不小心就把主机建在错误的区域里,如果是按月付费的只能通过客服退费。

这两种方式,个人倾向于第一种做法。

从后台界面使用体验上来说,青云的后台界面美观易用,操作后异步界面更新机制做的很完善,后台数据的一致性以及依赖关系限制也比较完善。阿里云这一年后台界面比14年我第一次用的时候改观很大,不过缺点是操作结果展示有延迟。比如创建一台主机,要在主机列表页面等待几十秒刷新才有,这个体验很不好。UCloud有一次我删除资源时没有按照正确的顺序,导致有一个资源一直删除不了(ps:和UCloud的朋友沟通,他们已经修复了这个bug)。腾讯云删除的资源其实是做了个隐藏,可能担心用户申请恢复,所以数据一致性上有问题,比如删除的主机在VPC的主机统计数字中依然包含,导致VPC无法删除。

账号以及权限

团队使用云服务,账号和权限机制也是非常重要的。尤其是遇到技术外包合作,或者团队结构复杂的情况。

  • AWS 有一套复杂的IAM(Identity and Access Management)账号机制,支持用户,组,角色,权限,策略等概念,可以通过不同的组合,精细化管理所有资源,还可以集成第三方的SAML,OpenID等账号提供服务。有了这套账号机制,第三方完全可以基于AWS的接口做AWS的增值二次开发销售。
  • 阿里云 最近推出的RAM,基本上可以看做是对AWS的IAM的克隆,只不过尚不支持和第三方的集成。
  • 青云 提供一种简单的子账号机制,子账号相当于一个独立的账号,所属的资源和主账号是隔离的,主账号和子账号互相看不到对方的资源,只不过和主账号共享账号余额。
  • UCloud 提供一种项目的概念,项目关联着一组资源以及人员,不同的成员有不同的角色和权限,成员本身不拥有资源。权限的粒度只细化到某一类资源的增删改查。
  • 腾讯云 可以在主账号下增加用户,但只提供简单的权限控制,粒度很粗,比如管理资源,管理用户,管理财务这样的。

付费机制

云服务的付费机制对以上所有功能的体验都有影响。当前主要有按量付费,按月付费,以及AWS的预留实例模式。

  • 按量付费 就是使用多少付多少,和电一样。这方面做的最彻底的是青云,只提供按量付费,并且计费能做到秒级。阿里云和UCloud同时也提供按量付费。不过阿里云的按量付费推出不久,要比按月付费贵许多。青云和AWS的按量付费对资源是细粒度划分的,比如关机的时候只收取硬盘费用,阿里云和UCloud当前还做不到这点,关机依然是按照整个主机收费的。腾讯云当前还不支持按量付费(ps:从腾讯云的朋友那儿得知,他们正在做灰度测试)。
  • 按月付费 就是按月或者年直接购买具体的主机。阿里云,UCloud,腾讯云支持这种模式。这种模式最大的问题是主机和付费账单绑在了一起,一旦主机系统出故障不能启动(虚拟机这种问题很常见),用户不能自己创建新的主机然后将费用从旧的转移到新主机,只能通过客服退费然后重新购买。所以这种方式一般都提供客服支持X天内无理由退服务器。
  • 预留实例模式 这个是AWS独有的模式。这种模式下,用户购买的是实例的类型,相当于和云厂商签订了一个协议,预留某类型的实例X个给用户用一年。可以一次性付清,也可以按月支付,不同的支付方式优惠的额度不一样,但比按量付费便宜。购买后只要用户实际使用的实例类型和预留的匹配,计费就按照预留模式计费,不和具体的主机绑定。这种付费机制,一方面解决了纯按量付费的情况下,厂商不方便对自己机房的容量做比较长远的规划的弊端,另外一方面解决了按月付费的情况下,主机和付费绑定带来的不便的问题。但同时带来的新的问题就是计费规则复杂,我用了好长时间才看明白AWS的消费账单。

付费机制其实影响着整个云的方方面面。整体趋势上来看,按量付费是大趋势。同时按量付费简化了用户的操作和使用成本。举一个例子,朋友在腾讯云上买了台服务器部署个系统,年前又充了一笔钱,准备年后看看是否需要扩容。年底要开发票报账了,结果发现腾讯云的规则是只有购买了服务器的金额才算是消费,才能开发票,最后被逼无奈只好把现有的这台机器购买了好多年。另外一方面,按量计费是弹性的基础,不支持按量,如何弹性?

下面的表格是各家云服务的1核1G最低配主机的费用比较:

price

说明:

  • 小时指按两种方式付费,平均到每小时的费用,月指按两种付费方式,平均到每个月的费用。一个月按照24*30个小时计算
  • AWS的按年指预留实例全年预付全部的模式,北京区域
  • 阿里云 北京区域,按年是包含了按年付费只需付款10个月的优惠政策
  • UCloud 北京区域,按年也是包含了按年付费只需付款10个月的优惠政策
  • 青云 北京三区 由于青云没有按年付费机制所以第二种付费机制留空
  • 腾讯云 北京区域 由于腾讯云没有按量付费,所以第一种方式留空。按年也是包含了只需付款10个月的优惠政策

以上不包括带宽以及磁盘费用,没有具体测试各家的1核1G主机性能是否有差异,仅供参考。并且运厂商一般鼓励使用比较高配置的机器,所以如果要做价格比较,需要根据自己的业务场景做具体的分析。

除了机器的基本费用,还要考虑其他费用。比如AWS北京,由于是和光环新网合作,光环新网要抽取费用的10%作为IDC费用。AWS的技术支持也是独立收费的。

结语

本来还可以从开放API以及IaaS云提供PaaS服务这两方面可以做下对比,对运维自动化来说,API非常重要,对降低运维成本来说PaaS服务也很重要,但这两方面的评估成本比较高,所以没有包含在内。本文也仅仅代表个人观点,尽量以一种客观的态度表述各家的特性,写这篇文章的目的只是从我个人的角度写一点使用体验,给云服务提一些建议,如果有事实的表述错误或者遗漏,还请指出。

另外谈一些使用经验给使用云的用户。

使用云要搞清楚自己的权利和责任,比如自建机房,机房只关心硬件,硬件之上的都由用户自己负责,顶多帮你重启下机器。但使用云后,许多用户感觉云要对自己所有的行为负责,自己搞坏了系统,虚拟机不能启动了,也抱怨云服务。按道理,虚拟机之上的应该是用户自己负责,之下的云厂商负责。当然这个和前面提到的付费机制也有关系。云提供了便利的接口,所以可以做到主机无状态,坏了一个就换另外一个。我们的使用习惯是配置好基础的虚拟机镜像,包含docker服务以及其他基础配置。所有的服务都通过docker启动,docker镜像保存到中心存储。重要数据单独挂载硬盘保存。一但节点坏掉,删除重建也不需要太多时间。另外一个就是安全问题,厂商也拦不住你朝自己的脚开枪,既然云提供了可配置的防火墙,VPC等机制,就要对自己的安全负责。有的厂商担心用户没有安全意识,默认给用户的虚拟机上安装各种安全盾,这个其实不利于用户自己成长,一旦安全盾出了故障,就是厂商自己的责任了。

备注:本文发布后经过AWS,UCloud,青云,腾讯云的朋友的反馈,进行了部分事实描述上的修正。

code