公共云PK私有云:Amazon与OpenStack大比拼
公共云与私有云之争是个老调牙的话题。虽然不乏相应的技术和解决方案,但是企业组织对于哪种平台适合灵活性方面的要求还是感到很困惑。云平台的主要优点之一就是,用户请求计算、网络和存储等资源时,能够迅速启动这些资源;不再需要这些资源时,同样可以迅速停用资源。在诸多公共云提供商当中,亚马逊的市场份额领先谷歌、微软及其他厂商。而在私有云提供商当中,OpenStack为用户提供了一种切实可行的方案,可以替代微软或VMware私有云。
本文全方位比较了亚马逊网络服务(AWS)EC2和OpenStack,主要内容如下:
这两大平台提供了哪些技术功能特性?
这两大平台的业务特点相比怎样?
成本相比怎样?
如何确定使用哪一种平台、如何同时使用这两种平台?
OpenStack.org给出的定义是“OpenStack软件控制整个数据中心的庞大资源池(包括计算、存储和网络),这些资源通过仪表板或通过OpenStack API加以管理。OpenStack可与流行的企业和开源技术协同使用,因而对异构基础设施来说再理想不过了。”
AWS给出的定义是“亚马逊弹性计算云(Amazon EC2)是一种Web服务,在云端提供了可调整大小的计算容量。它旨在让开发人员更容易获得大规模(web-scale)云计算。”
下面几张表简要描述了OpenStack和AWS的功能特性:
计算
你为何需要它?
要想运行应用程序,就需要一台服务器,配备处理器、内存和存储系统,可能装有预先安装的操作系统和应用程序,也可能没装。
OpenStack | AWS | |
定义 | ||
计算资源是虚拟机/服务器 | 实例 | 实例/虚拟机 |
大小 | ||
多少内存、处理器和临时 (暂时)存储资源分配给了 某个实例/虚拟机。 | 大小类型:微型、小型、中型 和大型等。 | 大小类型:微型、小型、中型 和大型等。 |
提供的操作系统 | ||
什么操作系统为最终用户 提供了云服务? | 云管理员在OpenStack云上 托管的任何操作系统。(红帽 认证了微软Windows、RHEL 和SUSE) | 由AWS市场提供的AMI。
|
模板/镜像 | Glance | 亚马逊机器镜像(AMI) |
虚拟机的基本配置,利用该 基本配置构建其他虚拟机。 | OpenStack管理员为用户上传 镜像并创建目录。 | AWS提供了在线市场,里面 有众多预定义的镜像。 |
可以构建虚拟机镜像目录, 用户可以从中选择虚拟机。 | 用户可以上传自己的镜像。 | 用户可以上传自己的镜像。 |
网络
你为何需要它?
为了将虚拟服务器彼此连成网络。你还需要控制谁可以访问服务器。如果该服务器暴露在互联网面前,尤其需要保护它,并为它设置防火墙。
OpenStack | AWS | |
定义 | ||
网络让用户能够连接至虚 拟机。将虚拟机与对方以 及与外部网络(互联网) 连接起来。 | Neutron | Networking |
只有内部专用的IP地址, 无法路由至互联网。 | 每个虚拟实例自动被分配 一个专用的IP地址,通常 使用DHCP。 | AWS使用DHCP,为实例 分配专用的IP地址。 |
公共IP地址 | 浮动IP是公共IP地址,你 可以将它动态添加到运行中 的虚拟实例。 | AWS公共IP地址映射到主 专用IP地址。 |
网络服务 | 你可以创建网络和网络功能 ,比如第3层转发、NAT、 边缘防火墙和IPsec VPN。 | 如果使用虚拟公共云:AWS VPC,可以添加虚拟路由器或交换机。 |
虚拟机流量负载均衡 | OpenStack LBaaS(负载均衡 即服务)对于从一个网络到 应用程序服务的流量进行 均衡。 | ELB(弹性负载均衡)在亚马逊EC2实例之间自动分配入站的应用程序流量。 |
DNS | ||
为你的虚拟服务器和Web 应用程序管理DNS条目。 | OpenStack DNS项目 (Designate)处于“孵化 期”,不是OpenStack核心 的一部分(截至2015年4 月的Kilo版本) | Route 53-AWS的DNS服务 |
SRIOV | ||
一种设备虚拟化方法,相比传统的实现方法,它提供了更高的输入/输出性能和更低的处理器使用率。 | 每个SR-IOV端口与虚拟 功能(VF)关联起来。 SR-IOV端口由基于硬件 的虚拟以太网网桥提供, 或者可扩展至上游物理 交换机(IEEE 802.1br)。 | AWS使用SR-IOV支持增强的网络功能,提供更高的每秒数据包(PPS)性能,更低的实例间延迟和很低的网络抖动。 |
监控
为何你需要它?
你需要深入了解物理及虚拟资源的使用模式和使用率。你可能想要解释每个用户的使用情况,视情况向使用资源的用户收费。
OpenStack | AWS | |
定义 | ||
监控提供了对云使用 计费的机制。 | Ceilometer | Cloudwatch |
面向整个系统的计费 和使用。 | 收集衡量组成已部署云的物理和 虚拟资源的利用率的指标。 | 为AWS云资源和AWS上的应用 程序监控服务。 |
向使用云资源的用户 收费的选项 | 持久化数据以便后续检索和分析, 满足定义的标准后触发动作。 | 收集和跟踪度量指标,收集和监 控日志文件,并设定警报。 |
安全
为何你需要它?
你需要可以使用公钥加密技术用于SSH和密码解密。你想要为虚拟机设置防火墙,只允许某些流量入站(ingress)或出止去(egress)。
OpenStack | AWS | |
定义 | ||
控制对虚拟机的访问。 | 密钥对和安全组 | 密钥对和安全组 |
密钥对 | ||
想登录到虚拟机或实例, 你必须创建密钥对。 | 你启动虚拟机后,可以 注入密钥对,它提供了 通过SSH访问实例的 机制。 | 想登录到你的实例,启动实例 时指定密钥对的名称;连接到 实例时,提供私钥。 |
Linux:用于SSH。 Windows:用于解密管理员 密码。 分配和控制对虚拟机实例的 访问权。 安全组是一组命名的网络访问 规则,限制了访问实例的流量。 你启动实例后,可以为它分配 一个或多个安全组。 |
支持 |
支持 |
身份
你为何需要它?
你想要管理谁可以访问你的云。你可以管理云资源的权限。你想提供多因子验证,以加强安全。
OpenStack | AWS | |
定义 | ||
控制对云端虚拟服务器、存储及其他资源 的访问的验证和授权方法。 | Keystone | IAM(身份和访问管理) |
与外部提供方集成,比如LDAP或活动 目录(AD)。 |
存储
为何你需要它?
块存储
为虚拟服务器分配虚拟驱动器/卷,以扩大存储容量,而不仅限于启动卷。
虚拟服务器的快照和备份。
对象存储
存储文件、媒体和图像等对象
OpenStack | AWS | |
对象存储 | ||
存储文件:媒体、文档和图像等 | Swift | S3-简单存储服务 |
块存储 | ||
创建虚拟磁盘驱动器(卷) | Cinder | EBS-弹性块存储 |
数据库
为何你需要它?
你的云用户可能使用数据库服务,而未安装和配置自己的数据库。
OpenStack | AWS | |
定义 | Trove | RDS |
关系数据库 | MySQL和PostgressSQL | 用户获得MySQL或Oracle 11g的实例。 |
非关系数据库 | Cassandra、Couchbase和 MongoDB | 亚马逊SimpleDB用户将数据对存储到适合 读取频繁型应用程序的简单数据库中。 |
编排
为何你需要它?
这可以对应用程序进行可重复的拷贝。
OpenStack | AWS | |
定义 | ||
让开发人员可以将云应用程序的需求存储在文件或模板中, 该文件或模板定义了应用程序运行所必要的资源(虚拟机、 网络、存储、安全、模板和镜像等)。 | Heata | Cloud Formation |
大数据/并行处理
为何你需要它?
云可以为你提供执行大规模数据处理的基础设施。
OpenStack | AWS | |
定义 | ||
让你可以针对数据执行大规模并行处理, 比如Hadoop。 | Sahara | EMR-(Elastic Map Reduce) |
消息传递 | ||
OpenStack | AWS | |
定义 | ||
云可以缓冲和移动托管队列上应用程序与虚拟机/实例之间的数据。 | Zaqar(尚未发布) | SQS-(简单队列服务) |
图形用户界面(GUI)仪表板
为何你需要它?
你可以从任何兼容的浏览器来管理云,或者用户可以自行满足其要求。
OpenStack | AWS | |
定义 | ||
通过浏览器来管理或自行满足对 计算、网络和存储的要求。 | Horizon | Console |
命令行接口(CLI)
为何你需要它?
你可以从命令行,通过脚本自动管理和使用你的云。
OpenStack | AWS | |
定义 | ||
命令行接口为管理员提供了配置 和取消配置云资源(虚拟机、存 储和网络)的命令。
| 支持 | 支持 |
业务级组件
多租户
为何你需要它?
按业务部门、部门或组织来隔离用户,以满足法律要求,或者设置资源方面的配额。
OpenStack | AWS | |
定义 | ||
租户是一组用户,他们与其他用户共享基础设施(云平台)的共同资源。用户被隔离。 | 项目/租户。可以为每个项目/租户定义计算资源的配额。 | 使用AWS VPC(虚拟私有云)来实现隔离。 |
服务级别协议(SLA)
为何你需要它?
为了运行关键任务型应用程序,停运时间又最短,你就需要云服务提供商签订SLA。
OpenStack | AWS | |
定义 | ||
SLA保证了云服务可用性。 | OpenStack私有云的提供方(内部IT部门/托管服务提供商)与业务部门签订的SLA。 | 参阅AWS SLA |
数据的所有权和控制权
为何你需要它?
用户应该知道谁可以访问存储在云端的数据。医疗保健、金融服务和政府等行业的法律法规规定了谁有权访问应用程序和数据。一些用户/国家担心,政府安全部门和监视部门会访问公共云数据。
OpenStack | AWS | |
定义 | ||
如果你将应用程序和数据存储在云端,谁拥有数据、谁可以访问数据。 | OpenStack云的用户 | 用户拥有数据。参阅AWS协议(第8章) |
生态系统
为何你需要它?
你可能需要顾问和社区同行的帮助,才能使用私有云或公共云。如果你部署了私有OpenStack云,社区(包括已通过OpenStack厂商认证的软件和硬件厂商)就能为你保证:问题可以得到解决。
OpenStack | AWS | |
定义 | OpenStack的生态系统: 硬件、软件和服务提供商及最终用户。 | 亚马逊的生态系统包括顾问和独立软件开发商(ISV),帮助用户使用AWS。 |
生态系统包括硬件厂商、软件厂商、同行社区(包括开发员、用户和管理员)以及顾问,共同让云能够运行起来。 | 运行云的OpenStack代码是开源代码,用户可以贡献。 | 运行云的AWS代码是闭源代码。 |
高可用性
为何你需要它?
如果云提供高可用性,那么托管在云端的应用程序遇到故障后就能自动切换,用户遇到的服务中断会比较少。
OpenStack | AWS | |
定义 | ||
地区和可用性区域 | 数据和实例可能存储在不同的地区,满足冗余、延迟或法律等方面的要求。 | Amazon EC2托管在全球多个地区,包括多个地区。每个地区有多个孤立的位置,名为可用性区域。 |
成本
为何你需要知道成本?
运行云端服务器和应用程序的成本可能包括运营成本(OPEX)和资本成本(CAPEX)。
OpenStack | AWS | |
定义 | ||
使用云服务的成本。 | 使用托管服务解决方案 或者 购买运行OpenStack云的硬件。 以及 免费下载OpenStack软件,雇用工程师来安装、维护、改善和升级等。由于运行云所需的工程师的成本,这种成本模式很难估算。你需要多少工程师?如何 知道何时需要雇用更多的人?如果对你云的需求减少,又如何缩减员工队伍规模? 或者 向厂商购买发行版许可证。这需要前期的许可费、每年支持费和后续的许可证续订。 或者 向红帽购买可预测的订阅服务,获得支持、维护、咨询和升级等。 | 按分钟/小时计费-成本具体多少可能无法预测。
按其他费率预先购买资源块:预留实例或spot定价。 |
由于这两种云平台都提供了一些类似服务,你应该考虑自己的要求。如果是当前和临时的要求,AWS及按需定价模式应该绰绰有余。如果是较长远的项目,AWS列出了案例(http://aws.amazon.com/solutions/case-studies/),OpenStack也是如此(https://www.openstack.org/user-stories)。
我认为这归结为使用场合。AWS列出了使用场合(http://aws.amazon.com/cn/solutions/),Gartner推荐下列情形使用OpenStack:
“类似开发运维(DevOps)的软件开发。开发人员可以访问OpenStack API,并处理基础设施即代码。”
“用于开发/测试支持,其场景是较传统的IaaS,使用的自助式门户网站面向开发人员和测试小组。”
“高性能计算/网格计算是OpenStack的潜在使用场合,因为许多这种环境是用开源组件实施的,而OpenStack很适合支持这类环境所需要的灵活基础设施配置。”
“向外扩展型大众化基础设施,支持大数据技术,比如Hadoop、Apache Spark和Apache Cassandra。”
“托管业务系列应用程序……专注于新兴的云原生应用程序,而不是试图力求与遗留应用程序兼容,这是大多数IaaS私有云实施人员采用的场景。”
混合云是指结合本地私有云和公共云。云管理平台提供了同时管理这两种云的工具。红帽提供了开放混合云(Open Hybrid Cloud),“这种单一订阅的解决方案让你可以构建和管理开放的基础设施即服务(IaaS)私有云,并且让你很容易迁移到基于OpenStack的高度扩展、类似公共云的基础设施。”
云头条编译|未经授权谢绝转载