题型:填空题、不定项选择、判断题、两道简答题
- 云计算概念
- 发展现状:概念普及度、云产品丰富度、云应用广泛性、市场规模等
- 相对传统分布式集群、个人持有计算资源有何优势:降低计算成本、提高资源利用率
- 和大数据、人工智能、物联网、互联网+等技术的关系?:提供算力、存储和网络资源
- 面临的挑战——也是持续优化和发展的推动力
- 开源之于云计算
- 云计算架构
- 极致的面向服务的计算架构:一切资源以服务的形式对外开放
- 概念架构:二维视角(前端+后端,关注“云”功能)
- 逻辑架构:“云体+云栈”(技术体系结构,关注如何实现“云”)
- 物理架构:云数据中心(建筑、设备、网络、能耗、安全)+云操作系统(如 OpenStack, CloudStack,Eucalyptus 等)
- 云数据中心:网络拓扑,绿色节能技术,自动化与容灾备份技术
- 虚拟化技术:虚拟化层次,云数据中心的虚拟化,虚拟机迁移策略
- 云操作系统:OpenStack 及其各组件
云计算概念
云计算是一种商业模式、一种计算范式、一种具体实现方式。计算、存储、网络和安全是云计算的四个关键技术。在很多应用场景下,云计算解决了其他方式无法解决的实际的应用需求。
发展现状
概念普及度:Google Trends
云产品丰富度
各种各样的公有云平台:华为云、腾讯云、阿里云、Google 云等
各种各样的云服务应用:域名注册服务、云解析服务、云速建站、云速邮箱
云应用广泛性
市场规模
相对优势
降低计算成本
能耗接近硬件成本;管理成本线性增长。
李开复:谷歌 2008 年花了 16 亿美元建设云计算数据中心,如果不采用云计算技术,要达到同样的效果,则需要 640 亿。
提高资源利用率
云计算和大数据、物联网、互联网+等技术的关系
云数据为大数据等技术提供算力、存储和网络资源。
大数据促进了云计算的产生,激发了云计算的潜力;云计算为大数据的收集、存储、加工和应用提供了更好的支持。二者关系密切而多样。
面临挑战
增加了安全漏洞:
- 运程使用 IT 资源需要云用户将信任边界扩展到外部的云,建立这样的安全架构同时又不引入安全漏洞是非常困难的
- 重叠的信任边界和不断增加的数据曝光为恶意的云用户提供了更多的攻击 IT 资源、窃取或破坏企业数据的机会
降低了运营管理控制:
- 云用户对云资源的管理控制低于对企业内部 IT 资源的管理控制
- 云提供者可能不遵守它发布的云服务保证
- 云用户和云提供者之间较长的地理距离可能需要更多的网络跳数,会带来延迟波动和带宽受限
云提供者之间有限的可移植性:
- 由于缺乏行业标准不同的云提供者提供的服务存在较大差异
多地区法规和法律问题:
- 第三方云提供者通常选择造价较低、方便的地理位置建立数据中心,而云用户通常不会意识到所使用 IT 资源和自身数据所存放的位置
- 某些云用户可能会遇到严重的法律问题。例如:英国法律规定英国公民的个人数据只能留在英国境内
- 潜在的数据获得和公开。例如:某些国家的法律规定某些类型的数据必须向某些政府机构或数据主体公开
开源之于云计算
云计算时代,开源不仅是一种开放源代码的具体产品,更是一种方法论、一种构造大规模复杂软件的协作方式。开源的可以是各行各业的技术或产品。
开源软件——一种版权持有人为任何人和任何目的提供学习、修改和分发权力,并公布源代码的计算机软件
- 许可证不应限制任何个人或团体将包含该开源软件的广义作品进行销售或赠予
- 开源软件的程序必须包含源代码,必须允许发布源代码及以后的程序
- 开源软件许可证必须允许修改和派生作品,并允许使用原有软件的许可条款发布他们
开源软件 vs. 自由软件 vs. 免费软件:开源不一定自由,开源不一定免费,自由不一定免费;免费不一定开源,不一定自由。
价值和意义:
- 开源促进国家信息技术创新,带动经济发展(开源之于国家):有效促进技术创新;实现软件自主可控;促进教育和科研事业发展;促进产业信息化发展
- 软件厂商依托开源提升研发能力(开源之于企业):降低成本,按需适配;学习;要求高,提升质量
- 用户使用开源技术改变信息化路线(开源之于用户):定制已降低风险;专注于创新
- 企业自主开源,引领技术发展路径(开源之于技术生态):自主开源,提高研发效率,提升代码质量;建立以开源企业为核心的生态圈
云计算架构
面各项服务的计算架构
中间层计算架构、B/S 架构、混合计算架构都可为云计算提供一定的伸缩能力
共性:基于无状态连接【http 请求】和基于服务的访问【而非过程调用】
Service-oriented Architecture 面向服务的体系结构
每个程序只做本职工作,将服务暴露出来供其他程序使用
多个程序通过一个统一的界面协调工作——控制复杂性,更容易管理
区别于“分布式对象”
- Java:Java 对象、RMI(Remote Method Invocation,远程方法调用)
- CORBA:CORBA 分布式对象、IDL(Interface Definition Language,接口定义语言)
- 通过 RPC(Remote Procedure Call,远程过程调用)连接
概念架构
最易于理解的二维视角:基础设施 + 应用程序; 两者分别视为: 前端(呈现给用户的界面)+ 后端(云组件)
基础架构云内部,后端:
- 硬件:服务器、存储器、网络交换机等
- 管理软件:服务的高可用性、可恢复性,数据一致性,应用伸缩性、可预测性,云安全等
应用程序云对外,前端:
- 并发性、协调性、容错性、开放的 API 格式、开放的数据格式、承载数据密集型计算
基础架构的进一步分层结构
- 虚拟化层:云的基石
- 将硬件转换为统一的 IT 资源【可灵活拆分、统一计量、统一管理、软件定义的】。
- 可以在不同的抽象层实现:应用层、操作系统层、体系结构层、硬件层等。
- Web 服务层:无状态的云服务)
- 将云资源提供给客户的一种最方便的方式,解决大部分客户无法直接使用虚拟机的问题;
- 支持面广、对客户端要求低,只需要浏览器就可以访问;所有提供的服务均可以通过 API 访问,该类 API 为“表征状态转移”(Representational State Transfer,REST)
- 服务总线层:与用户间的桥梁
- 即中间件层,封装计算服务、数据存储、消息传递;
- 分离用户与虚拟化层、连接用户与 Web 服务层。
- 客户机用户界面:将云呈现给客户
- Web 门户,将各种服务混搭集成在一个页面。
- 基于 Ajax,Javascript,趋势是使用功能完善的组件
- 如 JavaBeans/Applets,Silvedight/.NET 等
- 可下载和安装在客户机上
云应用程序的结构
云应用程序与传统操作系统上的应用程序结构有所不同
- 传统操作系统上的应用程序:进程、线程、服务、 shell(应用程序的控制接口)
- 进程就是最终产品,每一个进程可运行多个指令序列(线程),一个线程对应一种服务
- 云环境中的应用程序:应用程序本身、应用实例、服务、云命令行界面(控制端)
- 应用程序是云应用最终的样子,由多个同时运行的实例支撑
- 不同的应用实例运行在不同的服务器上,每一个应用实例提供一种或多种服务
- 服务之间是相互独立的(微服务架构)
- 云控制器本身也是云应用
- 每一个虚拟机上都运行该应用实例
- 每一个应用实例由多个进程构成【子应用】
- 每一个子应用都对应有多个线程提供多种服务
逻辑架构
云体:是云计算的物质基础,是云计算使用的资源集合,是构成云计算的软硬件环境,例如网络、服务器、存储器、交换机等。广义的云体包括数据中心机器辅助设施如电力、空调、机架、冷却等系统。目前可以认为:云体就是数据中心。
云栈:又称云平台,是在云上建造的运行环境。它能够支持应用程序的发布、运行、监控、调度、伸缩,并为应用程序提供辅助服务机制,如访问控制、权限管理等。
云计算:是利用云体和云平台所进行的计算或处理云计算可以在云体上直接进行,也可以在云平台上进行。无论在哪个层面开展,只要符合“按量计费、资源可伸缩”就是云计算。
云存储、云服务、在云上运行自己的软件或算法,都是云计算。
云计算是人们利用云体和云平台所从事的活动。
逻辑云栈
云栈:提供的服务多种多样,规模巨大,需要简历规则才能便于管理,即层次架构。
云计算也遵循分层规则,组织为多个层次,相互叠加
- 每一层都提供一种抽象,最下为物理硬件层
- 每往上一层,易用性就增加一分
- 到底应该分几层没有明确的规定或准则
- 不同的厂商有不同分法:三层、四层、五层
云栈的三层模式
- 基础设施即服务层:不仅包括硬件设施,还包括虚拟化,因为各种硬件规格、性能、质量不统一,无法在其上直接建造云平台。虚拟化可以将各种硬件变为统一的标准件。
- 平台即服务层:在虚拟化的 IT 资源上构建起应用程序的运行环境,对外提供的产品包括计算环境、云存储库、通信机制、控制调度机制,统称为云计算平台或云解决方案栈。消费的是云基础设施服务,支持的是上层的云应用程序。
- 应用程序层-软件即服务层:
- 基于网络进行远程访问的商用软件
- 集中式管理,而非分散在每个用户站点
- 单个实例多个租户架构——一对多模型
- 按照用量计费(实际应用中按月或其他时间周期计费)
逻辑云体
云栈是从纵向角度看云计算的整体架构,那么云体则主要是从横向角度看其架构模式
类比传统操作系统横向切面:运行时环境 + 应用本身(程序+数据)
- 环境:进程/线程/内存管理 + 文件系统 + 进程间通信/网络
- 云应用程序:类似传统应用
- 云运行时环境:计算资源(服务器或 CPU + 本地存储)、持久存储、通信(消息队列+网络)
物理架构
物理云栈:Openstack
OpenStack 是一个管理云计算中计算、存储和网络,甚至是应用的通用平台,其提供 Web 界面、命令行工具和应用程序接口(API)等使用接口。
官方描述:
The Most Widely Deployed Open Source Cloud Software in the World
OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed and provisioned through APIs with common authentication mechanisms.
平台管理员:位于各厂商特定资源之上的云计算资源管理层
开发者:通过其为应用提供基础设施和相应软件依赖;云编排平台:基于应用模板部署可扩展应用
最终用户:每一个最终用户被定义为一个租户,为租户提供自助服务的基础设施和应用管理系统
本质上 OpenStack 通过抽象和一个通用的 API 接口控制不同厂商提供的硬件和软件资源,是对计算系统的更高层次的抽象。
物理云体:云数据中心
数据中心是数据集中存储、计算、交换的中心,其发展与计算机(包括存储和网络设备)的发展紧密联系在一起。
- 传统数据中心暴露的问题:
- 过多的机器
- 机器利用率过低
- 应用迁移太困难
- 存储需求增长太快
- 软件定义的数据中心:重新重视虚拟化,以提高资源利用率:
- 不仅应用到计算节点,复制到存储、网络、安全等方方面面
- 软件定义计算:计算节点的虚拟化:虚拟机成为计算调度和管理的单位,不中断服务的前提下动态迁移。
- 软件定义存储:分离管理接口与数据读写;统一的管理接口与上层管理软件交互;数据读写可以兼容各种不同的链接方式。
- 软件定义网络:数据平面(数据转发)和控制平面(转发表的设置等)分离;集中控制,分布式转发。
云数据中心
网络拓扑
传统树结构
建造方便简单,但不便于拓展与升级,任意一个核心交换机故障导致上千台服务器失效。
改进树
FatTree
- K 叉树,K 个 Pod(集装器),每个 Pod 有 K 个交换机,其中 K/2 个接入交换机,K/2 个汇聚交换机。
- Pod 中每个交换机有 K 个接口,K/2 个接主机,K/2 个接汇聚;K/2 个接接入,K/2 个接核心。
- 有 (K/2)2 个核心交换机,每个交换机 K 个端口接 K 个汇聚交换机。
- 一个 Pod 内的所有交换机相互连接:完全二分图。
- 一个 Pod 内的每个汇聚交换机与一部分核心交换机连接,但是一个 Pod 和每一个核心交换机都有连接。
但是,FatTree 的扩展性受限于核心交换机端口数量,目前比较常用的是 48 端口 10G 核心交换机,在 3 层树结构中能够支持 27648 台主机。
VL2
VL2:一套可扩展且很灵活的网络架构,微软数据中心采用。
- 若干服务器连接到机架(接入)交换机
- 每台接入交换机与两台汇聚交换机连接
- 每台汇聚交换机与所有核心交换机连接
递归层次
解决可扩展性的较好选择:最小递归单元的结构;递归规律
每一个高层的网络拓扑,由多个低层的递归单元按照递归规律相互连接构成,同时也是更高层级网络的一个递归单元。
增加服务器数量==>提高总的递归层次
- 添加服务器更加灵活,可增加的数量增大
- 对交换机性能要求低
递归层次结构:DCell、FiConn、BCube、MDCube
绿色节能技术
云计算数据中心的耗能越来越大
解决云计算数据中心的高能耗问题已经成为一个环境问题,构建绿色节能的云计算数据中心也成为一个重要的研究热点。
2012 年全球数据中心消耗 7203 亿千瓦时=全球发电量 2%,折合标准煤消耗约 2.6 亿吨。Google 的 100 条搜索用电=60 瓦灯泡持续量 28 分钟
- 配电系统节能
- 空调系统节能
- 集装箱数据中心节能技术
- 管理系统节能策略和算法
- 新能源应用
自动化与容灾备份技术
容灾备份是通过在异地建立和维护一个备份存储系统,利用地理上的分离来保证系统和数据对灾难性事件的抵御能力。
层次
容灾系统对灾难的抵抗程度分为:
- 数据级容灾:数据级容灾只保证数据的完整性、可靠性和安全性,但提供实时服务的请求在灾难中会中断。
- 应用级容灾:应用级容灾系统能够提供不间断的应用服务,让服务请求能够透明地继续运行,保证数据中心提供的服务完整、可靠、安全。
两个技术指标:
- 数据恢复点目标 Recovery Point Objective,RPO:主要指业务系统所能容忍的数据丢失量
- 恢复时间目标 Recovery Time Objective,RTO:主要指所能容忍的业务停止服务的最长时间
关键技术
核心:复制数据
- 远程镜像技术:主从镜像系统;远程复制;数据传输失败,数据不一致;延迟复制技术
- 快照技术:将远程存储系统中的信息备份到磁带库、光盘库;通过软件对要备份的磁盘子系统的数据快速扫描;备份数据复制到缓冲区,存在缓冲区调度的问题
- 基于 IP 的 SAN 的远程数据容灾备份技术:将主数据中心 SAN(Storage Area Networks)中的信息通过现有 TCP/IP 网络远程复制到备份中心 SAN 中;可跨越 LAN、MAN、WAN,成本低可扩展性好
- 数据库复制技术:数据必须实时、准确、可在线查询;数据复制具有独立性、配置简单、便于监控
虚拟化技术
虚拟化层次
- ISA 级别:通过物理主机的 ISA 模拟一个给定的 ISA,基本方式:代码解释
- 硬件级:虚拟化层用于虚拟化基础设施:CPU,内存,存储,I/O,网络
- 操作系统级:在操作系统中插入一个虚拟化层,一个操作系统内核运行多个虚拟机
云数据中心的虚拟化
服务器虚拟化
虚拟机和容器共存,容器的地位不断提升,目前与虚拟机相当。
高效率的 unikernel 技术:
- unikernel 是使用库操作系统(LibOS)构建的专用的、单一地址空间机器镜像。
- LibOS 库操作系统:在应用程序层中实施访问控制和隔离,用户应用无需在用户模式和内核模式间切换,直接访问硬件;然而多个应用程序同时运行时隔离性不好。
- 可使用操作系统虚拟化(虚拟机监控器 VMM)克服硬件资源隔离缺陷:LibOS 通过 VMM 驱动物理硬件,像虚拟机一样运行。
存储虚拟化
概念:存储虚拟化将系统中分散且异构的存储资源整合起来,形成一个统一的连续编址的逻辑存储空间
示例:VMware 的 vSphere 提出了虚拟文件系统 VMFS,允许来自多个不同主机服务器的并发访问,即允许多个物理主机同时读写同一个存储器。
网络虚拟化
由于云计算技术的使用,云数据中心的业务集中度、服务的客户数量远远超过传统数据中心,对网络的高带宽、低拥塞的要求更高。
- 传统数据中心问题 1:L2 层网络拥塞、丢包严重,需要 L3 层协议保证重传,效率低;
- 传统数据中心问题 2:二层以太网络采用生成树协议保证数据包在互连交换机回路传递,产生大量冗余。
云数据中心对网络的需求:
- 提高数据传输效率:应对数据同步、备份、虚拟机迁移等的大流量
- 提高管理效率:采用统一的交换网络减少布线、维护和扩容的成本
虚拟机迁移策略
云计算环境中虚拟机迁移的需求
- 云计算中心物理服务器负载处于动态变化中,当无法提供额外物理资源而为了负载平衡,可将占用热门物理资源的虚拟机迁移到其他物理服务器
- 物理服务器定期升级的需要,升级前将虚拟机迁移到其他物理服务器,等升级完成再迁移回来
云计算中关注的重点:实时迁移(Live Migration),即保持虚拟机运行的同时,将其从一个计算机迁移到另一个计算机,并在目的计算机恢复运行。
- 步骤 1:预迁移
- 步骤 2:预定资源
- 步骤 3:预复制
- 步骤 4:停机复制
- 步骤 5:提交
- 步骤 6:启动
虚拟机迁移的具体内容
内存迁移——最困难的地方
第一阶段:Push;第二阶段:Stop-and-Copy;第三阶段:Pull
迁移方案 | 具体描述(从 A 迁移到 B) | 优势与劣势 |
---|---|---|
Stop-and-Copy | A 停机,将对应内存全部复制到 B,启动 B | 方法比较简单;总迁移时间也最短; 停机时间无法接受 |
Stop-and-Copy 和 Pull 阶段结合 | A 停机,将部分内存复制到 B,启动 B,B 运行中遇到缺失内存,再到 A 内存中复制 | 停机时间很短;总迁移时间很长; Pull 阶段复制造成的性能下降,用户体验差 |
Push 和 Stop-andCopy 阶段结合 | A 不停机,保持对外服务,将变化地内存迭代地复制到 B,直到最后剩余很少要复制的再停止 A,复制最后变动到 B,启动 B | 平衡了停机时间和总迁移时间之间的矛盾; 需要有一种算法能够测定工作集,以避免反复重传;可能会占用大量的网络带宽,对其他服务造成影响 |
网络迁移
虚拟机所有网络设备,包括协议状态(如 TCP 连接状态)以及 IP 地址都要随之一起迁移;通过发送并修改相关配置实现。
存储设备迁移
迁移数据存储需要占用大量时间和网络带宽,通常的解决办法是以共享的方式共享数据和文件系统,而非真正迁移。
目前大多数集群使用 NAS(Network Attached Storage,网络连接存储)作为存储设备共享数据。
云操作系统
Openstack 是什么?
OpenStack 是开源云计算平台(云操作系统),可控制整个数据中心的大型计算,存储和网络资源池。
管理员能够通过 Web 界面、命令行或 API 接口控制、配置资源;用户可以通过 Web 界面使用资源。
- 自身不提供虚拟化技术
- 调用多种技术实现多资源池管理
- 对外提供统一管理接口
- 环境隔离,资源复用
- 降低隔离损耗,提升运行效率
- 提供高级虚拟化特性
概念:云操作系统指构架于服务器、存储、网络等基础硬件资源和单机操作系统、中间件、数据库等基础软件之上,管理海量的基础硬件、软件资源的云平台综合管理系统。
- 管理和驱动海量服务器、存储等基础硬件,将数据中心的硬件资源逻辑上整合成一台服务器
- 为云应用软件提供统一的、标准的接口
- 管理海量的计算任务以及资源调配和迁移
特点:
- 网络化:将用户计算需求作为任务通过网络发送给各个处于不同地理位置的服务器处理,通过网络返回结果
- 安全:采用多种多样的安全保障措施保证数据安全。内存安全、数据传输安全(加密)、持久存储安全(冗余、备份)
- 计算的可扩充性:动态申请网络硬件资源为用户服务——本地硬件资源无需扩展
除了云操作系统 OpenStack,构建云计算还需要很多其他东西:底层驱动+上层应用程序
Openstack 组件
- OpenStack Ansible:自动化部署 OpenStack,聚焦于提供多个角色和 playbook,用于部署可扩展的、可理解投入生产的 OpenStack 环境
- 云控制器-Keystone:身份认证和服务目录
- 云控制器-Nova 管理组件及 API:虚拟机生命周期管理,其他计算资源的生命周期管理
- 云控制器托管用于镜像管理的 Glance 服务
- 计算节点-Hypervisor:是计算节点的核心,又称 VMM。
- 计算节点-Magnum
- 存储节点-Swift:二进制大对象存储
- 存储节点-Cinder:块存储服务
- 网络节点-Neutron:使得运营商能够构建和管理具有所有必要元素的完整网络拓扑:网络、子网、路由器、负载均衡器、防火墙和端口。