云计算概述
在第一章,会介绍什么是云计算?什么是虚拟化?以及云计算与虚拟化的关系,然后讲解目前比较流行的虚拟化项目:KVM,了解KVM虚拟化的基本概念,使用KVM创建并管理虚拟机,为学习OpenStack打下坚实的基础。
云计算概述
任何事物的出现都是有背景的,云计算也不例外。云计算是由需求驱动的,首先让我们看看没有云计算之前我们都面临什么问题。
传统数据中心面临的问题?
- 资源利用率低:资源利用率低是数据中心目前普遍存在的问题,多项调查数据表明企业数据中心的服务器的平均利用率普遍低于15%。
- 资源分配不合理:系统统建设相对独立、各自为政,其基础设施相当于一个个独立的“孤岛”,因此很难从整体的角度考虑IT基础架构的资源分配及使用的合理性。
- 自动化能力差:资源配置和部署过程多采用人工方式,没有相应的平台支持,使大量人力资源耗费在繁重的重复性工作上,没有自服务和自动部署的能力。
什么是云计算?
云计算(Cloud Computing)是基于互联网的相关服务的增加、使用和交付模式。 好吧,我承认!如果你把上面那句话告诉业内人员,估计只有很少一部分人可以理解,更不用说非业内人士了。对云计算的定义有多种说法。对于到底什么是云计算,目前广为接受的是美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
用比较好理解的方式解释就是:
- 是什么:云计算指的是一种模式。
- 使用方法:云计算的必须通过网络来使用。
- 特点和优势:弹性计算、按需付费、快速扩展,也就是你用多少,付多少钱。同时也不用关心基础设施的管理,由云计算供应商提供。
云计算的分类
根据云计算服务性质的不同,可以将云计算区分为公有云、私有云和混合云,如图1-1
(图1-1)
公有云
是将搭建好的云资源池放到Internet上,所有有使用权限的用户都可以按需使用。相对于私有云,公有云的所有者是提供商,企业用户只是具备使用权。 优势:云计算的最大优势就是其规模经济效益,大多数企业选择云计算方案是出于成本考虑,那么公有云不需要投入基础建设,可以实现按需付费,随时使用。
私有云 是为一个客户单独使用而构建的一套IAAS(基础设施既服务),企业可以对数据、安全性和服务质量进行最有效控制。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。私有云可部署在企业数据中心的防火墙内,也可以将它们部署在一个安全的主机托管场所。 优势:数据安全对于企业来说是至关重要的,公有云服务存在较大的安全隐患,公有云平台只适合那些非关键性业务。尤其是大型企业会更多地倾向于选择私有云计算平台。
混合云 指公有云和私有云的混合,大多数是指在私有云搭建好自后,由于业务发展等原因,资源需求量超过了资源池,所以需要通过申请使用公有云作为私有云的补充。 优势:混合云既可以尽可能多地发挥云计算系统的规模经济效益,同时又可以保证数据安全性。对于不是很敏感的非关键业务可以由混合云中的公有模块实现,而对那些安全性要求较高的应用则可以迁移到私有模块实现。 公有云、私有云、混合云三种云计算模式并不会谁取代谁,谁优过谁。不同企业、不同需求,需要不同的解决方案。公有云、私有云、混合云会长期共存,优势互补,共同服务于企业用户。
云计算的分层
如果你理解了什么是云计算,那么就需要掌握,云基础是分层的。通常情况下,我们将云计算分为三层,分别是Infrastructure(基础设施)-as-a- Service,Platform(平台)-as-a-Service,Software(软件)-as-a-Service。基础设施在最下端,平台在中间,软件在顶端。
(图1-6) IaaS(Infrastructure as a Service,基础架构即服务)通过互联网提供了数据中心、基础架构硬件和软件资源。IaaS可以提供服务器、操作系统、磁盘存储、数据库和/或信息资源。最高端IaaS的代表产品是亚马逊的AWS(Elastic Compute Cloud),不过IBM、Vmware和惠普以及其他一些传统IT厂商也提供这类的服务。国内的话阿里云、腾讯云、青云、盛大云等代表。 IaaS通常会按照"弹性云"的模式引入其他的使用和计价模式,也就是在任何一个特定的时间,都只使用你需要的服务,并且只为之付费。我们要讲的OpenStack就是IAAS的开源项目,可以用来构建公有云或者私有云。 PaaS(Platform as a Service,平台即服务)提供了基础架构,软件开发者可以在这个基础架构之上建设新的应用,或者扩展已有的应用,同时却不必购买开发、质量控制或生产服务器。Google的App Engine和新浪的SAE都采用了PASS的模式。这些平台允许公司创建个性化的应用,也允许独立软件厂商或者其他的第三方机构针对垂直细分行业创造新的解决方案。我们要讲的Docker可以用来构建PAAS平台,百度的PAAS平台核心就是基于Docker。 SaaS(Software as a Service,软件即服务)是最为成熟、最出名,也是得到最广泛应用的一种云计算。大家可以将它理解为一种软件分布模式,在这种模式下,应用软件安装在厂商或者服务供应商那里,用户可以通过某个网络来使用这些软件,通常使用的网络是互联网。这种模式通常也被称为"随需应变(on demand)"软件,这是最成熟的云计算模式,因为这种模式具有高度的灵活性、已经证明可靠的支持服务、强大的可扩展性,因此能够降低客户的维护成本和投入,而且由于这种模式的多宗旨式的基础架构,运营成本也得以降低。Google的Gmail和Jira都是SAAS的模式。
云计算与虚拟化
首先请大家不要把虚拟化和我们之前讲解的云计算进行联想,先入为主很容易让我们陷入概念的误区,让我来代理大家搞明白云计算与虚拟化的恩恩怨怨。因为提到云计算就不得不提到虚拟化,甚至说很多人将云计算和虚拟化混为一谈,这是不正确的。好的,答案有了,云计算不等于虚拟化,那么为什么呢? 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。如图1.1.1所示:
(图1-1)
全虚拟化和半虚拟化
虚拟化技术根据特点,可以分为全虚拟化和半虚拟化。 全虚拟化(Full Virtualization), 是原始虚拟化技术,该模型使用虚拟机协调guest操作系统和原始硬件,VMM(Virtual Machine Monitor)在GuestOS和裸硬件之间用于工作协调,一些受保护指令必须由Hypervisor(虚拟机管理程序)来捕获处理,如图1-2。
(图1-2) KVM是全虚拟化的典型代表,KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等,如图1-3。
半虚拟化(Para Virtualization),是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的guest操作系统集成了虚拟化方面的代码。该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。半虚拟化需要guest操作系统做一些修改,使guest操作系统意识到自己是处于虚拟化环境的,但是半虚拟化提供了与原操作系统相近的性能,如图1-4。
(图1-4) 半虚拟化的一个典型代表是Xen。Xen是第一类运行在裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和半虚拟化,Xen支持hypervisor和虚拟机互相通讯。Xen最重要的优势在于半虚拟化,此外未经修改的操作系统也可以直接在xen上运行(如Windows),能让虚拟机有效运行而不需要仿真,因此虚拟机能感知到hypervisor,而不需要模拟虚拟硬件,从而能实现高性能,如图1-5。
(图1-5) 在Xen环境中,主要有两个组成部分。 一个是虚拟机监控器(VMM),也叫hypervisor。Hypervisor层硬件与虚拟机之间,最先被载入到硬件的第一层。 Hypervisor载入就可部署虚拟机。在Xen中,虚拟机叫做Domain。在这些虚拟机中,Domain0具有很高的特权,负责一些专门的工作。由于hypervisor中不包含任何与硬件对话的驱动,也没有与管理员对话的接口,这些驱动就由 domain0来提供了。通过domain0,管理员可以利用一些Xen工具来创建其它虚拟机(DomainU)。这些domainU属于无特权domain。
虚拟化分类
刚才从类型中把虚拟化分为全虚拟化和半虚拟化,从使用场景中进行区分,虚拟化可以分为服务器虚拟化、桌面虚拟化和应用虚拟化。更详细的根据资源的不同还提出了网络虚拟化、存储虚拟化等。 服务器虚拟化是我们最常见的方式,我们通过KVM、Xen、VMWARE ESXi等软件将我们的服务器虚拟成多个来使用,提高硬件的使用效率。不熟悉的朋友可以使用搜索引擎来获取相关知识,目前我的生产环境还稳定的运行着数年前的ESXi。
桌面虚拟
化是指将计算机的终端系统(也称作桌面)进行虚拟化,以达到桌面使用的安全性和灵活性。可以通过任何设备,在任何地点,任何时间通过网络访问属于我们个人的桌面系统。目前在中小企业并没有完全普及,主要用于IT外包、呼叫中心、移动桌面等,因为在显示方面对于低成本的解决方案效果并不好,效果好的初始采购成本较高。 桌面虚拟化依赖于服务器虚拟化,首先在数据中心的服务器上进行服务器虚拟化,生成大量的独立的桌面操作系统(比如Win7),同时根据专有的虚拟桌面协议发送给终端设备(例如RDP、VNC、Spice协议)。用户终端通过以太网登陆到虚拟主机上,只需要记住用户名和密码及网关信息,即可随时随地的通过网络访问自己的桌面系统,从而实现单机多用户。 通过与IAAS的结合,桌面虚拟化也演变成桌面云(DAAS :Desktop As a Service).IAAS提供基础资源平台,桌面虚拟化和云平台的完美融合达到类似于SAAS一样的效果,这便是DAAS。
应用虚拟化
比较简单的解释就是通过虚拟化软件实现传统C/S结构的软件通过Web浏览器进行交付。在用户访问一个服务器虚拟化后的应用时,用户计算机只需要把人机交互逻辑传送到服务器端,服务器端为用户开设独立的会话空间,应用程序的计算逻辑在这个会话空间中运行,把变化后的人机交互逻辑传送给客户端,并且在客户端相应设备展示出来,从而使用户获得如同运行本地应用程序一样的访问感受。比如我曾经使用过Cirtrix公司的Xenapp这款应用虚拟化产品,实现ERP客户端的浏览器交付。 经过上面的理解,我们应该可以看出,从表面来看虚拟化是一种技术,那么云计算是一个概念。云计算里面包含了很多的技术,也包括虚拟化技术。云计算是和服务相关的,虚拟化是相对于物理设备的。所以说虚拟化绝不是云计算。而云计算则远远超出了虚拟化的范畴。
云计算不等于虚拟化
经过之前对云计算和虚拟化的学习,我们可以直接得出答案:云计算不等于虚拟化,云计算实质上是根据需要通过 Internet 交付共享计算资源。云计算可以通过虚拟化来实现,千万不要以为云计算就是虚拟化。我们再总结一下,云计算是一种资源使用和交付方式,虚拟化是一种具体的技术实现。但是呢,云计算的具体实现需要使用到虚拟化这项技术。