【云计算学习教程】IaaS、PaaS和SaaS:云计算的三种服务模式(精讲)⽂章⽬录
我们在《》教程中讲到,IT 系统的逻辑组成分为四层,⾃下⾄上依次是基础设施层、平台软件层、应⽤软件层和数据信息层。
是⼀种新的计算资源使⽤模式,云端本⾝还是 IT 系统,所以逻辑上同样可以划分为这四层。底三层可以再划分出很多“⼩块”并出租出去,这有点像⽴体停车房,按车位⼤⼩和停车时间长短收取停车费。因此,云服务提供商出租计算资源有 3 种模式,满⾜云服务消费者的不同需求,分别是 IaaS、PaaS、SaaS,如图 1 所⽰。
图 1 云计算的 3 种服务模式
需要注意的是,云服务提供商只负责出租层及以下各层的部署、运维和管理,⽽租户⾃⼰负责更上层次的部署和管理,两者负责的“逻辑层”加起来刚好就是⼀个完整的四层 IT 系统(见图 1 最左侧)。
⽐如有⼀家云服务提供商对外出租 IaaS 云计算业务,云服务提供商负责机房基础设施、计算机⽹络、磁盘柜和服务器/虚拟机的建设和管理,⽽云服务消费者⾃⼰完成操作系统、数据库、中间件和应⽤软件的安装和维护。另外,还要管理数据信息(如初始化、数据备份、恢复等)。
再⽐如,另⼀家云服务提供商出租 PaaS 业务,那么云服务提供商负责的层数就更多了,云服务消费者只
需安装⾃⼰需要的应⽤软件并进⾏数据初始化即可。总之,云服务提供商和消费者各⾃管理的层数加起来就是标准的 IT 系统的逻辑层次结构。
在⼀篇⽂章中详细讲解三种服务模式会导致篇幅过长,所以我们分成三节,请⼤家猛击下⾯的链接进⾏阅读:
云计算IaaS服务模式精讲
IaaS 是“Infrastructure as a Service”的⾸字母缩写,意思是基础设施即服务,即把 IT 系统的基础设施层作为服务出租出去。由云服务提供商把 IT 系统的基础设施建设好,并对计算设备进⾏池化,然后直接对外出租硬件服务器、虚拟主机、存储或⽹络设施(负载均衡器、防⽕墙、公⽹IP地址及诸如 DNS 等基础服务)等。
云服务提供商负责管理机房基础设施、计算机⽹络、磁盘柜、服务器和虚拟机,租户⾃⼰安装和管理操作系统、数据库、中间件、应⽤软件和数据信息,所以 IaaS 云服务的消费者⼀般是掌握⼀定技术的系统管理员,如图 1 所⽰。
图 1 IaaS 云
IaaS 云服务提供商计算租赁费⽤的因素包括 CPU、内存和存储的数量,⼀定时间内消耗的⽹络带宽,
公⽹ IP 地址数量及⼀些其他需要的增值服务(如监控、⾃动伸缩等)等。
出租的物理服务器和虚拟机统称为主机,云服务提供商如何对外出租主机呢?或者是租户如何使⽤这些租来的主机呢?相对于租户来说,这些主机不在现场⽽在“远⽅”,租赁之后并不是把这些主机从云端搬到租户的办公室来使⽤。
出租前后主机的物理位置并没有改变,租户仍然是通过⽹络使⽤这些云端主机。租户登录云服务提供商的⽹站,填写并提交主机配置(如需要多少个 CPU、多少内存、多少⽹络带宽等)表后付款,然后云服务提供商向租户颁发账号和密码,最后租户以此账号和密码登录云端的⾃助⽹站。
在这⾥,租户可以管理⾃⼰的主机:启动和关闭机器、安装操作系统、安装和配置数据库、安装应⽤软件等。其实只有启动机器和安装操作系统必须要在⾃助⽹站上完成,其他操作可以直接登录到已经安装了操作系统并配置好⽹卡的主机中完成。
对于租来的主机,租户只关⼼计算资源(CPU、内存、硬盘)的容量是否与租赁合同上标注的⼀致,就像租赁同⼀层楼上的⼀间房间⼀样,租户只关⼼⾯积是否⾜够,⽽不关⼼房间的墙壁是钢筋⽔泥结构还是砖块⽯灰结构。但是对于云服务提供商来说,出租硬件服务器和虚拟机,内部的技术处理是不⼀样的,其中硬件服务器必须要集成远程管理卡并要池化到资源池中。
数据库是软件吗
远程管理卡是插接在服务器主板上或者直接集成在主板上的⼀个嵌⼊式系统,需要接⽹线并配置 IP 地址。只要服务器的电源插头插到插座上,不管有没有按下服务器的电源开关,这个远程管理卡都会启动,其他⼈就可以通过⽹络登录到远程管理卡(需要账号和密码),成功登录后就可以进⾏启动和关闭服务器、安装操作系统等操作。只不过云服务提供商把远程管理卡的功能集成到了租户⾃助⽹站中,从⽽实现了物理机和虚拟机的统⼀管理。
租户到底是租赁硬件服务器还是虚拟机呢?这个问题留到后⾯教程的章节来讨论。
IaaS 云端的基本架构模型如图 2 所⽰。
图 2 IaaS 云端基本架构模型
IaaS 云端的基本架构模型逻辑上分为三层:第⼀层管理全局,第⼆层管理计算机集(⼀个集内的机器地理位置上可能相距很远),第三层负责运⾏虚拟机。
第⼀层的云管理器与第⼆层的集管理器之间⼀般通过⾼速⽹络连接,当增加数据中⼼为云端扩容时,就能体现⽹速的重要性。⽽集内的计算机之间倾向于采⽤本地局域⽹(如 10Gbit/s 以太⽹)或者超⾼速⼴域⽹,如果采⽤局域⽹,则灾难容错差;如果跨⼴域⽹,则⽹络带宽会成为瓶颈。
图 2 中,每⼀层具体的任务介绍如下。
第⼀层(云管理器)
云管理器是云端对外的总⼊⼝,在这⾥验证⽤户⾝份,管理⽤户权限,向合法⽤户发放票据(然后⽤户持此票据使⽤计算资源)、分配资源并管理⽤户租赁的资源。
第⼆层(集管理器)
每⼀个集负责管理本集内部的⾼速互联在⼀起的计算机,⼀个集内的计算机可能有成百上千台。
集管理器接受上层的资源查询请求,然后向下层的计算机管理器发送查询请求,最后汇总并判断是部分满⾜还是全部满⾜上层请求的资源,再反馈给上层。如果接下来收到上层分配资源的命令,那么集管理器指导下层的计算机管理器进⾏资源分配并配置虚拟⽹络,以便能让⽤户后续访问。
另外,本层 PLS 中存储了本集内的全部虚拟机镜像⽂件,这样⼀台虚拟机就能在集内任意⼀台计算机上运⾏,并轻松实现虚拟机热迁移。
第三层(计算机管理器)
每台计算机上都有⼀个计算机管理器,它⼀⽅⾯与上层的集管理器打交道,另⼀⽅⾯与本机上的虚拟机软件打交道。它把本机的状态(如正在运⾏的虚拟机数、可⽤的资源数等)反馈给上层,当收到上层
的命令时,计算机管理器就指导本机的虚拟机软件执⾏相应命令。这些命令包括启动、关闭、重启、挂起、迁移和重配置虚拟机,以及设置虚拟⽹络等。
租赁 IaaS 云服务,对租户⽽⾔,最⼤优点是其灵活性,由租户⾃⼰决定安装什么操作系统、需不需要数据库且安装什么数据库、安装什么应⽤软件、安装多少应⽤软件、要不要中间件、安装什么中间件等,相当于购买了⼀台计算机,要不要使⽤、何时使⽤以及如何使⽤全由⾃⼰决定。
⼀些搞研发的计算机技术⼈员倾向于租赁 IaaS 主机。但是对于租户来说,IaaS 云主机除管理难度⼤外,还有⼀个明显的缺陷:计算资源浪费严重。因为操作系统、数据库和中间件本⾝要消耗⼤量的计算资源(CPU、内存和磁盘空间),但它们消耗的资源对租户来说做的是⽆⽤功,来看下⾯这个极端的案例。
假设张三租⽤了⼀台 IaaS 主机,配置为 CPU1.0GHz,内存 1GB,硬盘空间 10GB,然后他安装了 Windows7 操作系统、 数据库,最后再想安装和运⾏绘图应⽤软件⼏乎是不可能了,因为 Windows7 操作系统和 MySQL 数据库就要把 CPU、内存和硬盘空间消耗殆尽了。
没有硬盘空间,如何安装应⽤软件?没有空闲的内存,⼜如何能运⾏应⽤软件?张三本来打算租赁云端主机来搞图形设计,这样⼀来,⽬的就没达到,⾄少租来的主机的配置要翻倍才⾏。
下⾯是⼀些 IaaS 云服务的实际应⽤。
1. 备份和恢复服务。
2. 计算服务:提供弹性资源。
3. 内容分发⽹络(CDN):把内容分发到靠近⽤户的地⽅,对于⼀些基于⽹页的应⽤系统,为了提⾼⽤户体验,往往在各个地⽅(⼈⼝
稠密的地⽅)设⽴分⽀服务器,当⽤户浏览⽹页时,被重定向到本地 Web 服务器,所以数据必须实时分发并保持⼀致。
4. 服务管理:管理云端基础设施平台的各种服务。
5. 存储服务:提供⽤于备份、归档和⽂件存储的⼤规模可伸缩存储。
云计算PaaS服务模式精讲
PaaS 是“Platform as a Service”的⾸字母缩写,意为平台即服务,即把 IT 系统的平台软件层作为服务出租出去,如图 1 所⽰。
图 1 PaaS 云
相⽐于 IaaS 云服务提供商,PaaS 云服务提供商要做的事情增加了,他们需要准备机房、布好⽹络、购买设备、安装操作系统、数据库和中间件,即把基础设施层和平台软件层都搭建好,然后在平台软件层上划分“⼩块”(习惯称之为容器)并对外出租。
PaaS 云服务提供商也可以从其他 IaaS 云服务提供商那⾥租赁计算资源,然后⾃⼰部署平台软件层。另外,为了让消费者能直接在云端开发调试程序,PaaS 云服务提供商还得安装各种开发调试⼯具。相反,租户要做的事情相⽐ IaaS 要少很多,租户只要开发和调试软件或者安装、配置和使⽤应⽤软件即可。PaaS 云服务的消费者主要包括以下⼈员。
程序开发⼈员:写代码、编译、调试、运⾏、部署、代码版本控制等,⼀揽⼦解决。
程序测试⼈员。
软件部署⼈员:把软件部署到 PaaS 云端,便于管理不同版本之间的冲突。
应⽤软件管理员:便于配置、调优和监视程序运⾏性能。
应⽤程序最终⽤户:这时 PaaS 云服务相当于 SaaS 云服务。
PaaS 云服务的费⽤计算⼀般根据租户中的⽤户数量、⽤户类型(如开发员、最终⽤户等)、资源消耗量及租期等因素计算。图 2 所⽰描绘了 PaaS 云服务供/需双⽅的动态交互情况。
图 2 PaaS 云服务供/需双⽅动态交互⽰意图
云服务提供商拥有⼀个应⽤软件库(图 1 中“A,B,C,…”代表库中的应⽤软件)、开发⼯具集(如编程语⾔、IDE、调试⼯具等)和软件执⾏资源池(图 1 中“exr1,exr2,…”代表资源),消费者通过⽹络远程租赁软件执⾏资源并运⾏相关的应⽤软件,或者使⽤各种开发⼯具。
软件执⾏资源有“可⽤”和“占⽤”两个状态,同⼀个资源不能同时运⾏多个程序。软件执⾏资源可能是物理机、虚拟机、容器或者⼀个正在运⾏的服务程序(响应消费者的请求,启动虚拟机或容器,甚⾄是租赁其他云端的计算资源)。
图 2A 中,⽤户 C1 申请了两个资源:exr1 和 exr2,并运⾏ B、C 两个程序。
图 2B 中,新来了⼀个程序开发员,他正在使⽤开发⼯具开发程序。
图 2C 中,程序开发员开发完成并部署了⼀个新程序 D。
图 2D 中,⼀个管理员发布了程序 D,然后新来的⽤户申请资源 exr3 并执⾏程序 D。
PaaS 云服务供/需交互还有很多情景,这⾥不再⼀⼀列出。
⽐如我们要安装和使⽤ OpenERP 软件,这个应⽤软件要⽤到 PostgreSQL 数据库和 语⾔,那么只需要租赁⼀个 PaaS 型容器并在⾥⾯安装 OpenERP 即可,但这个容器必须⽀持 PostgreSQL 数据库和 Python 语⾔,让租户⽆须再去安装和配置它们。
同样,我们可以租赁⼀个⽀持 语⾔和 数据库的 PaaS 容器,然后采⽤ WordPress 开源建站⼯具,只需⼏步,就可以搭建⼀个个⼈博客⽹站。应⽤软件数不胜数,⽀撑它们的语⾔、数据库、中间件和运⾏库可能都不⼀样。
PaaS 云服务提供商不可能安装全部的语⾔、数据库、中间件和运⾏库来⽀持所有的应⽤软件,因此⽬前普遍的做法是安装主流的语⾔、数据库、中间件和运⾏库,使得出租的 PaaS 容器⽀持有限的、使⽤量排名靠前的应⽤软件以及⽀持最流⾏的编程语⾔,并在⽹站上发布公告。当然,云服务提供商也⿎励租户直接开发⽀持 PaaS 的应⽤软件,每家云服务提供商都想尽可能地黏住更多的⽤户,这⽆可厚⾮。