本书从云计算最基本的概念开始,由浅入深地带领读者领会云计算的精髓,以梳理知识脉络和要点的方式,带领读者登堂入室。
本书的第1~3章为云计算的基础部分,包括云计算的产生、发展、基本概念和实现云计算的机制部分;第4~7章为云计算的技术部分,包括虚拟化、分布式文件系统、分布式存储系统和数据处理与并行编程技术等实现云计算必须的技术;第8章为限制云计算的安全问题;第9章向读者提到了目前存在的一些热门的云计算应用;第10章为综合实践,讲述了云计算与Docker技术结合的实践内容。
本书既适合作为高等院校计算机相关专业的云计算导论课程的教材,也适合非计算机专业的学生及广大计算机爱好者阅读。
从云计算机最基本的概念开始,由浅入深地带领读者领会云计算的精髓,以梳理知识脉搏和要点的方式,带领读者登堂入室。
在过去的几十年里,计算机技术的进步和互联网的发展极大地改变了人们的工作和生活方式。计算模式也经历了从最初的把任务集中交付给大型处理机到基于网络的分布式任务处理再到目前的按需处理的云计算方式的极大改变。自2006年亚马逊公司推出弹性计算云(EC2)服务,让中小型企业能够按照自己的需要购买亚马逊数据中心的计算能力后,云计算的时代就此正式来临。“云计算”的概念随之由Google公司于同年提出,其本质是给用户提供像传统的电、水、煤气一样的按需计算的网络服务,是一种新型的计算使用方式。它以用户为中心,使互联网成为每一个用户的数据中心和计算中心。
Gartner公司早在2011年1月发布的IT行业十大战略技术报告中就已经将“云计算技术”列为十大战略技术之首,目前世界上主要国家和跨国企业都积极地加快着战略部署,推动云计算的高速发展。我国也将云计算上升到了国家战略高度,中央、地方政府、产业界都在共同推动我国云计算的应用和发展,除此之外,像Google、IBM、Microsoft、Amazon、阿里巴巴、腾讯等在内的知名IT企业也都在大力地开发相关云计算产品。
然而在教育普及方面,经作者调研,即使计算机相关专业的学生对于云计算的相关知识也知之甚少,而对用户而言,如果不提前进行了解就去使用云计算是很危险的事情。目前,虽然市场上关于云计算技术相关的书籍较多,但是适合读者进行云计算入门的书籍还较少,因此本书定位为“云计算导论”课程的专业教材,旨在传授读者云计算的基础入门知识,本书也适合非计算机专业学生以及广大的计算机爱好者阅读。
本书的章节内容如下: 第1~3章为云计算的基础部分,包括云计算的产生、发展、基本概念和实现云计算的机制部分; 第4~7章为云计算的技术部分,包括虚拟化、分布式文件系统、分布式存储系统和数据处理与并行编程技术等实现云计算必须的技术; 第8章为限制云计算的安全问题; 第9章向读者提到了目前存在的一些热门的云计算的应用; 第10章为综合实践,讲述了云计算与Docker技术结合的实践内容。
在本书的编写过程中,尽量做到仔细认真,但由于作者的水平有限,还是可能出现一些不妥之处,在此非常欢迎广大读者进行批评指正。同时也希望广大读者将自己读书学习的心得体会反馈给作者。
编者
2016年8月
第1章云计算概论
1.1什么是云计算
1.2云计算的产生背景
1.3云计算的发展历史
1.4如何学好云计算
1.5小结
1.6习题
第2章云计算基础
2.1分布式计算
2.2云计算的基本概念
2.3云计算的关键技术
2.3.1分布式海量数据存储
2.3.2虚拟化技术
2.3.3云平台技术
2.3.4并行编程技术
2.3.5数据管理技术
2.4云交付模型
2.4.1软件即服务(SaaS)
2.4.2平台即服务(PaaS)
2.4.3基础设施即服务(IaaS)
2.4.4基本云交付模型的比较
2.4.5容器即服务(CaaS)
2.5云部署模式
2.5.1公有云
2.5.2私有云
2.5.3混合云
2.6云计算的优势与挑战
2.7典型云应用
2.7.1云存储
2.7.2云服务
2.7.3云物联
2.8云计算与大数据
2.9小结
2.10习题
第3章云计算机制
3.1云基础设施机制
3.1.1虚拟网络边界
3.1.2虚拟服务器
3.1.3云存储设备
3.1.4资源备份
3.1.5就绪环境
3.2云管理机制
3.2.1远程管理系统
3.2.2资源管理系统
3.2.3SLA管理系统
3.2.4计费管理系统
3.3云监控机制
3.3.1资源监控
3.3.2能量监控
3.3.3SLA监控
3.3.4安全监控
3.4特殊云机制
3.4.1自动伸缩监听器
3.4.2负载均衡器
3.4.3故障转移系统
3.4.4虚拟机监控器
3.4.5资源集群
3.4.6多设备代理
3.4.7状态管理数据库
3.5小结
3.6习题
第4章虚拟化
4.1虚拟化简介
4.1.1什么是虚拟化
4.1.2虚拟化的发展历史
4.1.3虚拟化带来的好处
4.2虚拟化的分类
4.2.1服务器虚拟化
4.2.2网络虚拟化
4.2.3存储虚拟化
4.2.4应用虚拟化
4.2.5技术比较
4.3系统虚拟化
4.4虚拟化与云计算
4.5开源技术
4.5.1Xen
4.5.2KVM
4.5.3OpenVZ
4.6虚拟化未来发展趋势
4.7小结
4.8习题
第5章分布式文件系统
5.1概述
5.1.1本地文件系统
5.2.2分布式文件系统
5.2基本架构
5.2.1服务器介绍
5.2.2数据分布
5.2.3服务器间协议
5.3GFS
5.3.1架构设计
5.3.2实现流程
5.3.3特点
5.4HDFS
5.4.1基本概念
5.4.2架构设计
5.4.3优缺点分析
5.5分布式应用协调器ZooKeeper
5.5.1基本概念
5.5.2工作原理
5.5.3ZooKeeper应用对HDFS的改进
5.5.4主要应用场景
5.6云存储
5.6.1基本概念
5.6.2云存储的分类
5.6.3云存储的结构模型
5.6.4典型的云存储应用
5.7小结
5.8习题
第6章分布式存储系统
6.1概述
6.2NoSQL数据库
6.3分布式存储系统BigTable
6.3.1数据模型
6.3.2BigTable的构件
6.4分布式存储系统HBase
6.4.1HBase的访问接口和数据模型
6.4.2HBase系统架构
6.5HBase存储格式
6.6多元数据的管理与应用
6.7小结
6.8习题
第7章数据处理与并行编程
7.1数据密集型计算
7.1.1数据密集型计算的概念
7.1.2数据密集型计算的应用
7.2分布式数据处理
7.2.1分布式数据处理的含义
7.2.2分布式数据处理的范围
7.2.3分布式数据处理的控制
7.2.4信息中心
7.2.5集中式数据处理与分布式数据处理比较
7.3并行编程模型概述
7.4并行编程模型MapReduce
7.4.1MapReduce简介
7.4.2MapReduce总体研究状况
7.4.3MapReduce总结及未来的发展趋势
7.5云处理技术Spark
7.6MapReduce的开源实现—Hadoop
7.6.1Hadoop概述
7.6.2Hadoop核心架构
7.6.3Hadoop和高效能计算、网格计算的区别
7.6.4Hadoop发展现状
7.6.5Hadoop和MapReduce比较
7.7小结
7.8习题
第8章云安全
8.1基本术语与概念
8.2云安全威胁
8.3云安全防护策略
8.3.1基础设施安全
8.3.2数据安全
8.3.3应用安全
8.3.4虚拟化安全
8.4典型云安全应用
8.4.1金山毒霸“云安全”
8.4.2卡巴斯基-全功能安全防护
8.4.3瑞星“云安全”
8.4.4趋势科技“云安全”
8.5小结
8.6习题
第9章云计算的应用
9.1概述
9.2Google公司的云计算平台与应用
9.2.1MapReduce分布式编程环境
9.2.2分布式大规模数据库管理系统BigTable
9.2.3Google的云应用
9.3亚马逊的弹性计算云
9.3.1开放的服务
9.3.2灵活的工作模式
9.3.3总结
9.4IBM蓝云云计算平台
9.4.1蓝云云计算平台中的虚拟化
9.4.2蓝云云计算平台中的存储结构
9.5清华大学透明计算平台
9.6阿里云
9.6.1简介
9.6.2阿里云的发展过程
9.6.3阿里云的主要产品
9.7Microsoft Azure
9.7.1简介
9.7.2Microsoft Azure架构
9.7.3Microsoft Azure服务平台
9.7.4开发步骤
9.8小结
9.9习题
第10章综合实践: Docker与云计算
10.1Docker简介
10.2Docker的核心概念
10.2.1Docker镜像
10.2.2Docker仓库
10.2.3Docker容器
10.2.4容器即服务(CaaS)
10.3实验一: Docker的安装
10.3.1Ubuntu
10.3.2CentOS
10.3.3Windows
10.4实验二: 容器操作
10.4.1启动容器
10.4.2守护态运行
10.4.3终止容器
10.5实验三: 搭建一个Docker应用栈
10.5.1获取镜像
10.5.2应用栈容器节点互联
10.5.3应用栈容器节点启动
10.5.4应用栈容器节点配置
10.6实验四: 实现私有云
10.6.1启动Docker
10.6.2获取镜像
10.6.3实现sshd,在Base镜像基础上生成一个新镜像
10.6.4开始分配容器
10.6.5搭建自己的私有仓库
参考文献
第3章
云计算机制
本章主要介绍常见的云计算机制,包括云基础设施机制、云管理机制、云监控机制和特殊云机制。通过本章的学习,应能够对云计算的机制有所了解。
3.1云基础设施机制
云基础设施机制是云环境的基础构建块,它是形成云技术架构基础的主要构件。云基础设施机制主要包括如下。
虚拟网络边界;
虚拟服务器;
云存储设备;
云使用监控;
资源备份;
就绪环境。
这些机制并非全都应用广泛,也不需要为其中的每一个机制都建立独立的架构层。相反,它们应被视为云平台中常见的核心组件。
3.1.1虚拟网络边界
虚拟网络边界(virtual network perimeter)通常是由提供和控制数据中心连接的网络设备建立,一般是作为虚拟化环境部署的,如虚拟防火墙、虚拟网络(VLAN、VPN)。该机制被定义为将一个网络环境与通信网络的其他部分隔开,形成一个虚拟网络边界,包含并隔离了一组相关的基于云的IT资源,这些资源在物理上可能是分布式的。
该机制可被用于如下的几个方面。
将云中的IT资源与非授权用户隔离;
将云中的IT资源与非用户隔离;
将云中的IT资源与云用户隔离;
控制被隔离IT资源的可用带宽。
1. 虚拟防火墙
图3.1是虚拟防火墙的示意图,虚拟防火墙是一个逻辑概念,该技术可以在一个单一的硬件平台上提供多个防火墙实体,即把一台防火墙设备在逻辑上划分成多台虚拟防火墙,每台虚拟防火墙都可以被看成是一台完全独立的防火墙设备,可拥有独立的管理员、安全策略、用户认证数据库等。
图3.1虚拟防火墙示意图
每个虚拟防火墙能够实现防火墙的大部分特性,并且虚拟防火墙之间相互独立,一般情况下不允许相互通信。
虚拟防火墙具有以下技术特点。
(1) 每个虚拟防火墙独立维护一组安全区域;
(2) 每个虚拟防火墙独立维护一组资源对象(地址/地址组、服务/服务组等);
(3) 每个虚拟防火墙独立维护自己的包过滤策略;
(4) 每个虚拟防火墙独立维护自己的ASPF策略、NAT策略、ALG策略;
(5) 可限制每个虚拟防火墙占用资源数,如防火墙Session以及ASPF Session数目。
虚拟防火墙不仅解决了业务多实例的问题,更主要的是,通过它可将一个物理防火墙划分为多个逻辑防火墙来用。多个逻辑防火墙可以单独配置不同的安全策略,同时在默认情况下,不同的虚拟防火墙之间是默认隔离的。
2. 虚拟专用网络
虚拟专用网络(VPN)是一种通过公用网络(如Internet)连接专用网络(如办公室网络)的方法。
它将拨号服务器的拨号连接的优点与Internet连接的方便与灵活性相结合。通过使用Internet连接,用户可以同时在大多数地方通过距离最近的Internet访问电话号码连接到自己的网络。
VPN使用经过身份验证的链接来确保只有授权用户才能连接到自己的网络,而且这些用户使用加密来确保他们通过Internet传送的数据不会被其他人截取和利用。Windows使用点对点隧道协议(PPTP)或第二层隧道协议(L2TP)实现此安全性。
通过图3.2所示,VPN技术使得公司可以通过公用网络(如Internet)连接到其分支办事处或其他公司,同时又可以保证通信安全。通过Internet的VPN连接从逻辑上讲相当于一个专用的广域网(WAN)链接。
图3.2虚拟专用网络(VPN)基本原理
VPN系统的主要特点如下。
(1) 安全保障
虽然实现VPN的技术和方式很多,但所有的VPN均应保证通过公用网络平台传输数据的专用性和安全性。在安全性方面,由于VPN直接构建在公用网上,实现简单、方便、灵活,但同时其安全问题也更为突出。企业必须确保其VPN上传送的数据不被攻击者窥视和篡改,并且要防止非法用户对网络资源或私有信息的访问。
(2) 服务质量保证
VPN应当为企业数据提供不同等级的服务质量保证(QoS)。不同的用户和业务对服务质量保证的要求差别较大。在网络优化方面,构建VPN的另一重要需求是充分有效地利用有限的广域网资源,为重要数据提供可靠的带宽。广域网流量的不确定性使其带宽的利用率很低,在流量高峰时引起网络阻塞,使实时性要求高的数据得不到及时发送; 而在流量低谷时又造成大量的网络带宽空闲。QoS通过流量预测与流量控制策略,可以按照优先级实现带宽管理,使得各类数据能够被合理地先后发送,并预防阻塞的发生。
(3) 可扩充性和灵活性
VPN必须能够支持通过Intranet和Extranet的任何类型的数据流,方便增加新的节点,支持多种类型的传输媒介,可以满足同时传输语音、图像和数据等应用对高质量传输以及带宽增加的需求。
(4) 可管理性
从用户角度和运营商角度应可方便地进行管理、维护。VPN管理的目标为: 减小网络风险、具有高扩展性、经济性、高可靠性等优点。事实上,VPN管理主要包括安全管理、设备管理、配置管理、访问控制列表管理、QoS管理等内容。
3.1.2虚拟服务器
服务器通常通过虚拟机监视器(VMM)或虚拟化平台(Hypervisor)来实现硬件设备的抽象、资源的调度和虚拟机的管理。虚拟服务器(virtual server)是一种模拟物理服务器的虚拟化软件。虚拟服务器与虚拟机(VM)为同义词,虚拟基础设施管理器(VIM)用于协调与VM实例创建相关的物理服务器。虚拟服务器需要对服务器的CPU、内存、设备及IO分别实现虚拟化。
通过向云用户提供独立的虚拟服务实例,云提供者使多个云用户共享同一个物理服务器。如图3.3所示。
图3.3虚拟服务器基本架构
每个虚拟服务器都可以存储大量的IT资源、基于云的解决方案和各种其他的云计算机制。从映像文件进行虚拟服务器的实例化是一个可以快速且按需完成的资源分配过程。通过安装和释放虚拟服务器,云用户可以定制自己的环境,这个环境独立于其他正在使用由同一底层物理服务器控制的虚拟服务器的云用户。虚拟服务器的具体内容将在4.2节详细地介绍。虚拟服务器有以下几个特性。
(1) 多实例
通过服务器虚拟化,一台物理机上可以运行多个虚拟服务器,支持多个客户操作系统,并且物理系统的资源是以可控的方式分配给虚拟机。
(2) 隔离性
虚拟服务器可以将同一台物理服务器上的多个虚拟机完全隔离开来,多个虚拟机之间就像多个物理机器之间一样,每个虚拟机都有自己独立的内存空间,一个虚拟机的崩溃并不会影响到其他虚拟机。
(3) 封装性
一个完整的虚拟机环境对外表现为一个单一的实体,便于在不同的硬件设备之间备份、移动和复制。同时,虚拟服务器将物理机器的硬件封装为标准化的虚拟硬件设备提供给虚拟机内的操作系统和应用程序,提高了系统的兼容性。
基于以上这些特性,虚拟服务器带来了如下的优点。
(1) 实时迁移
实时迁移是指在虚拟机运行时,将虚拟机的运行状态完整、快速地从一个宿主平台迁移到另一个宿主平台,整个迁移过程是平滑且对用户透明的。由于虚拟服务器的封装性,实时迁移可以支持原宿主机和目标宿主机硬件平台之间的异构性。
当一台物理机器的硬件需要维护或更新时,实时迁移可以在不宕机的情况下将虚拟机迁移到另一台物理机器上,大大提高了系统的可用性。
(2) 快速部署
在传统的数据中心中,部署一个应用需要安装操作系统、安装中间件、安装应用、配置、测试、运行等多个步骤,通常需要耗费十几个小时甚至几天的时间,并且部署过程中容易产生错误。
而采用虚拟服务器之后,部署一个应用其实就是部署一个封装好操作系统和应用程序的虚拟机,部署过程只需要以下几个步骤: 拷贝虚拟机、启动虚拟机和配置虚拟机,通常只需要十几分钟,且部署过程自动化,不易出错。
(3) 高兼容性
虚拟服务器提供的封装性和隔离性使应用的运行平台与物理底层分离,提高了系统的兼容性。
(4) 提高资源利用率
在传统的数据中心,出于对管理性、安全性和性能的考虑,大部分服务器上都只运行一个应用,导致服务器的CPU使用率很低,平均只有5%~20%。采用虚拟服务器之后,可以将原来多台服务器上的应用整合到一台服务器之中,提高了服务器资源的利用率,并且通过服务器虚拟化固有的多实例、隔离性和封装性保证了应用原有的性能和安全性。
(5) 动态调度资源
虚拟服务器可以使用户根据虚拟机内部资源的使用情况即时地灵活调整虚拟机的资源,如CPU、内存等,而不需要像物理服务器一样需要打开机箱变更硬件。
3.1.3云存储设备
云存储设备(cloud storage device)机制是指专门为基于云配置所设计的存储设备。这些设备的实例可以被虚拟化。其单位如下。
文件(file)。数据集合分组存放于文件夹中的文件里。
块(block)。存储的最低等级,最接近硬件,数据块是可以被独立访问的最小数据单位。
数据集(dataset)。基于表格的、以分隔符分隔的或以记录形式组织的数据集合。
对象(object)。将数据及其相关的元数据组织为基于Web的资源,各种类型的数据都可以作为Web资源被引用和存储,如利用HTTP的CRUD(create、retrieve、update、delete)操作(如CDMI、Cloud Data Management Interface)。
随着图3.4所示的云存储的广泛应用,一个与云存储相关的主要问题出现了,就是数据的安全性、完整性和保密性,当数据被委托给外部云提供者和其他第三方时,就更容易出现危险。此外,数据出现跨地域或国界的迁移时,也会导致法律和监管问题。
图3.4云存储广泛应用
(1) 用户的操作安全
当一个用户在公司编辑某个文件后,回到家中再次编辑,那么他再次回到公司时文件已是昨晚更新过的,这是理想状态下的情况。在很多时候用户编辑一个文件后,会发现编辑有误,想取回存在公司的文件版本时,可能在没有支持版本管理的云存储中用户的副本也已经被错误地更新了; 同样的道理,当删除一个文件的时候,如果没有额外的备份,也许再到网盘回收站中也找不到了。版本管理在技术上不存在问题,但是会加大用户的操作难度。目前的云存储服务商只有少数的私有云提供商提供有限的支持,多数情况下这种覆盖是时常发生的。
(2) 服务端的安全操作
云存储设备早已成为黑客入侵的目标,因为设备上不仅有无穷的用户数据,对此类大用户群服务的劫持更加是黑色收入的重要来源。也就是说云存储设备的安全性直接影响着用户上传数据的安全。在虚拟服务器技术的支撑下,V2V(virtual to virtual)迁移的可靠性相当高,多数的云存储厂商都预备安全防护方案。
3.1.4资源备份
如图3.5和图3.6不同视角的展示,与传统机构视角不同的是,云计算集中部署计算和存储资源,提供给各个用户。这既避免了用户重复建设信息系统的低效率,又能赋予用户价格低廉且近乎无限的计算能力。云计算提供的资源是弹性可扩展的,可以动态部署、动态调度、动态回收,以高效的方式满足业务发展和平时运行峰值的资源需求。云计算使用了资源备份容错、计算节点同构可互换等各种措施来保障服务的高可靠性,并拥有专业的维护队伍。
图3.5传统机构视角
图3.6云计算架构视角
资源备份(resource backup)可对同一个IT资源创建多个实例。资源备份用于加强IT资源的可用性和性能。使用虚拟化技术来实现资源备份机制,可以复制基于云的IT资源(如整个数据中心中的应用、数据)实现集中的备份和恢复,确保当出现系统故障、误操作等情况下应用系统仍然可用和可恢复。
3.1.5就绪环境
PaaS平台就是指云环境中的应用即服务(包括应用平台、集成、业务流程管理和数据库服务),也可以说是中间件即服务。PaaS平台在云架构中位于中间层,其上层是SaaS,其下层是IaaS,基于IaaS之上的是为应用开发(可以是SaaS应用,也可以不是)提供接口和软件运行环境的平台层服务。
就绪环境机制是PaaS云交付模型的定义组件,基于云平台,已有一组安装好的IT资源,可以被云用户使用和定制。云用户利用就绪环境机制进行远程开发和配置自身的服务和应用程序。如数据库、中间件、开发工具和管理工具以及进行开发和部署Web应用程序。
统(resource management system)可帮助协调IT资源,以便响应云用户和云提供者执行的管理操作。如图3.9所示,资源管理系统包含一个VIM平台和一个虚拟机映像库。VIM也可能
……