云数据中心智能管理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 云计算关键技术

1.2.1 虚拟化

虚拟化技术是云计算的关键技术之一,也是云计算的根基技术。本节将详细介绍虚拟化技术[1]

1. 技术定义及优势

虚拟化(Virtualization)[17]是指,应用在虚拟基础而不是真实的基础上运行,以提高硬件的利用率,简化软件的重新配置过程,提高计算机的工作效率和安全可靠性。

在20世纪60年代的IBM大型机系统中出现了虚拟化技术。在IBM System 370计算机系统中,虚拟化技术逐渐流行起来,系统通过虚拟机监控器(Virtual Machine Monitor,VMM)在物理硬件上生成许多可以运行独立操作系统软件的虚拟机实例。随着云计算日益广泛部署,虚拟化技术在商业应用上的优势日益体现(如降低了IT成本,增强了系统安全性和可靠性),虚拟化的概念也逐渐深入人们日常的工作与生活中。虚拟化对不同环境中不同主体来说,可能意味着不同的事物。在计算机科学领域中,虚拟化代表着对计算资源的抽象,而不仅仅局限于虚拟机的概念。例如,虚拟化机制使得单CPU可以模拟多CPU并行工作,允许在一个平台上同时运行多个操作系统,应用程序都可以在相互独立的空间内运行而互不影响;对物理内存的抽象,产生了虚拟内存技术,该技术使得应用程序认为其自身拥有连续可用的地址空间,而实际上,应用程序的代码和数据可能被分隔成多个碎片页或段,甚至被交换到磁盘、闪存等外部存储器上,即使物理内存不足,应用程序也能顺利执行。

在虚拟化方案中,处于底层的是要进行虚拟化的计算设备,这些计算设备既可能直接支持虚拟化;也可能不会直接支持虚拟化,此时需要系统管理程序的支持。在某些情况下,系统管理程序就是一个操作系统。虚拟机基于相互隔离的操作系统,将底层硬件平台视为自己所有。

虚拟化带来的优势体现在如下几个方面[18]

(1)有效地利用服务器硬件。数据中心中的服务器通常利用率较低,利用虚拟化机制使一台服务器可以运行许多虚拟机而实现服务器资源的多租客(Multi-Tenant)共享,从而提高服务器利用率,显著减少硬件的总开销。

(2)具有更好的容错能力。虚拟机可以从一个节点迁移到另一个节点,实现不间断运行。如果某一服务器、操作系统或应用程序出现运行故障,那么虚拟机能够迁移到另一物理服务器上继续运行。

(3)提高可用性。当Web服务、电子邮件服务、数据库服务等程序运行于一台物理服务器上时,会存在一个服务程序干扰另一个服务程序的可能,有时会导致系统崩溃。利用不同的虚拟机承载不同的服务,可以减少应用程序之间的相互干扰,提高系统的可用性。

(4)简化服务器创建、测试迁移与管理。使用虚拟化创建虚拟服务器仅需几分钟,而不需要任何额外的硬件。相比之下,购买一台新的物理服务器是昂贵的,安装操作系统和应用程序非常耗费时间。管理几十个虚拟服务器比管理十几台物理服务器也更容易。

(5)节约系统能源消耗。云计算系统基于虚拟化技术将云数据中心拥有的各类资源整合为一个统一的虚拟资源池,又将许多个虚拟机部署在不同的物理机上,实现对大规模基础资源有效、统一的管理和利用。将虚拟机在服务器上进行合理部署,同时采用虚拟机动态迁移技术将虚拟机聚集以便关闭空闲数据节点,从而最小化所需物理节点数量,满足当前负载的需求,在实现降低数据中心功耗的同时保证QoS和SLA。

2. 技术分类

虚拟化技术主要分为以下几大类。

1)平台虚拟化[19]

平台虚拟化是针对计算机和操作系统的虚拟化。事实上,通常所说的虚拟化主要是指平台虚拟化。平台虚拟化通过虚拟机监控器隐藏特定计算平台的实际物理特性,为用户提供抽象、统一、模拟的计算环境,即虚拟机。虚拟机中运行的操作系统被称为客户机操作系统(Guest OS),运行VMM的操作系统被称为主机操作系统(Host OS)。某些VMM可以脱离操作系统直接运行在硬件上,如VMWare的ESX系统等。

平台虚拟化技术可以细分为如下几个子类。

(1)全虚拟化(Full Virtualization):虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,以便为原始硬件设计的操作系统或其他系统软件完全不做任何修改就可以在虚拟机中运行。操作系统与真实硬件之间的交互可以看成是通过一个预先规定的硬件接口进行的。全虚拟化VMM以完整模拟硬件的方式提供全部接口,同时必须模拟特权指令的执行过程。

(2)超虚拟化(Paravirtualization):修改Guest OS部分访问特权状态的代码,以便直接与VMM交互。在超虚拟化虚拟机中,部分硬件接口以软件的形式提供给Guest OS,这可以通过Hypercall(VMM提供给Guest OS调用,与系统调用类似)的方式来提供。例如,Guest OS把切换页表的代码修改为调用Hypercall的代码来直接处理影子CR3寄存器和翻译地址的工作。由于不需要进行额外的流程和模拟部分硬件执行流程,因此超虚拟化可以大大提高性能。

(3)硬件辅助虚拟化(Hardware-Assisted Virtualization):借助硬件(主要是处理器)的支持来实现高效的全虚拟化。例如,在Intel-VT技术的支持下,Guest OS和VMM的执行环境自动地完全隔离开,Guest OS有自己的“全套寄存器”,可以直接运行在最高级别。在上面的例子中,Guest OS能够执行修改页表的汇编指令。Intel-VT和AMD-V是目前x86体系结构上可用的两种典型的硬件辅助虚拟化技术。

(4)部分虚拟化(Partial Virtualization):VMM只模拟部分底层硬件,客户机操作系统不做修改是无法在虚拟机中运行的,其他程序可能也需要进行修改。部分虚拟化最早出现在第一代的分时操作系统CTSS(Compatible Time-Sharing System)和实验性操作系统IBM M44/44X中。

(5)操作系统级虚拟化(Operating System Level Virtualization)。在传统操作系统中,所有用户的进程在本质上都是在同一个操作系统的实例中运行的,因此内核或应用程序的缺陷可能影响到其他进程。操作系统级虚拟化是一种在服务器操作系统中使用的轻量级虚拟化技术,内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程。

2)资源虚拟化[20]

资源虚拟化是针对特定系统资源的虚拟化,目标是在IaaS层把众多的物理资源进行划分和重组。在云计算系统中,物理资源可以分为三大类:计算资源(CPU加内存)、存储资源和网络资源。资源虚拟化示意图如图1.12所示。

图1.12 资源虚拟化示意图[1]

从计算资源的角度来看,IaaS软件管理的最小物理单元为一台物理服务器。根据需求,物理服务器上会创建多个虚拟机。若干配置相同的物理服务器会组成集群(Cluster),要求配置相同的主要原因是需要支持虚拟机动态迁移。通常一些集群还会组成更大规模的区域(Zone)。某些IaaS软件还能支持由若干区域组成的地区。集群、区域的划分体现在对网络和存储的不同配置。例如,一个集群可以共享相同的网络主存储,以支持虚拟机的动态迁移;一个区域可以共享相同的网络备份存储,可用来存放共享的虚拟机镜像文件。

用户主要是通过虚拟机来访问IaaS资源的,IaaS依靠软硬件虚拟化技术在一个物理服务器上创建多个虚拟机。

3)应用虚拟化[21-22]

下面介绍应用虚拟化的基本概念及原理。

SaaS是一种以Internet为载体,以浏览器为交互方式,把服务端的程序软件传送给远程用户来提供软件服务的云计算应用模式。受到浏览器应用方式的限制,很多SaaS不能提供更为丰富的应用服务。由此,应用虚拟化应运而生,它可以提供对集中化应用资源的多用户远程访问,从而将应用作为一种服务交付给用户。应用虚拟化的基本原理:分离应用程序的计算逻辑和显示逻辑,即界面抽象化,而不用在用户端安装软件。当用户访问虚拟化后的应用时,用户计算机只需要把用户端人机交互数据传送给服务器,服务器端就会为用户开设独立的会话来运行应用程序的计算逻辑,并把处理后的显示逻辑传回用户端,从而使用户获得如同在本地运行应用程序一样的体验。应用虚拟化原理如图1.13所示。

IT厂商也纷纷推出了各自的应用虚拟化产品,如VMWare ThinApp、Citrix XenApp和Microsoft App_V等,但它们的宗旨都是将应用程序的应用界面和实际应用分开。当用户访问服务器发布的应用时,服务器会为用户开设独立的会话,占用独立的内存空间,应用程序的计算逻辑指令在这个会话空间中运行,应用程序的界面会通过协议传送到用户计算机上;用户计算机只需要通过网络把键盘、鼠标及其他外设的操作指令传送给服务器,从服务器端接收变化的应用程序界面,并在用户端显示出来,从而获得在本地运行应用程序一样的访问体验;最终实现用户端使用人员不受终端设备和网络带宽的限制,即在任何时间、地点,使用任何设备、任何网络连接,都能够高效、安全地访问服务器上的各种应用程序。

图1.13 应用虚拟化原理[1]

下面介绍应用虚拟化技术的优势。

把应用程序从操作系统中解放出来,使应用程序不受用户端计算机环境变换等的影响,极大地提高机动性、灵活性、IT效率、安全性和控制力。从用户角度来看,用户无须在自己的计算机上安装完整的应用程序,并且可不受自身有限计算条件的限制而获得极好的用户体验。应用虚拟化在云计算环境中的应用比基于浏览器的应用更有效、快速,它具有以下几点优势[21]

① 应用虚拟化可以实现基于浏览器方式无法实现的应用,让应用服务更丰富,提供更多可选的应用给用户。

② 应用虚拟化可以以最快的速度实现SaaS。例如,要改写当前的成熟应用,使用浏览器编程会遇到大量的问题,除了内在逻辑,还需要大量的优化,而使用应用虚拟化不需要重写应用就可以直接将现有应用转变为SaaS。这也是为什么运营商对使用这种技术实现SaaS非常有兴趣的原因之一。

③ 虚拟化应用的使用和操作都与原来的应用没有任何差别,用户体验没有任何变化,更容易被接受。

④ 利用虚拟化技术,可以在同一台计算机上运行不同版本的应用程序,使用者可以在相同的机器上运行不同版本的软件。

⑤ 应用虚拟化对终端的广泛支持也会进一步推动其成功,使用满足一定条件的设备即可,包括电视、计算机和瘦客户端等,而并不需要终端运行浏览器[21]

4)桌面虚拟化[23]

桌面虚拟化是指对用户计算机的桌面进行虚拟化,以达到桌面使用的安全性和灵活性。用户可以通过任何设备在任何地点、任何时间访问网络上属于个人的桌面系统。

服务器虚拟化和桌面虚拟化都使用一种名为管理程序的软件内核在同一个物理服务器上运行多个操作系统,每一个操作系统都是独立的,并且拥有所需要的专用资源。由于企业可以配置多个处理器,以及大量内存、存储和高带宽网络连接的现代化服务器,每一个操作系统都有与单个服务器同样强大的计算能力,而操作系统和应用程序很少使用所有的可用资源,特别是在同一个时间段内,因此,更多的操作系统和应用程序能够在一个硬件平台上共存,从而带来更好的资源利用率。

桌面虚拟化技术有以下优势。

(1)保障业务数据的高安全性。业务数据不在用户终端进行处理与保管,避免了业务数据直接暴露带来的安全隐患(如用户终端采用移动磁盘复制、邮件发送、硬盘拆卸等手段进行数据窃取)。业务数据集中在数据中心进行处理与保管,确保了各项抗风险措施(如高可用性、灾难恢复等)对数据的全面覆盖,避免了用户终端问题造成的数据丢失(如客户端设备丢失、设备损坏、OS感染病毒、断电、系统崩溃等)。

(2)降低IT成本,提高IT工作效率。数据中心资源共享,充分利用资源,可利用管理平台集中、方便地管理数据中心,为用户或站点即时部署桌面,集中管理所有桌面,制定访问控制规则,随时(无须中断业务)进行打补丁和升级等维护工作,不需要在站点实地进行IT基础架构的部署与维护,低碳、节能。

(3)提高业务的一致性及应变能力。通过标准化桌面配置实现整齐划一的企业业务桌面,能够快速适应不断变化的企业业务需求,如添加新桌面或新站点。

(4)提供给用户良好的使用体验。随时随地以多种终端设备方便地进行(远程)桌面访问,接入过程简单、快捷。数据中心按需为用户提供充足的资源,保证业务顺利进行,支持用户桌面的个性化配置。

3. 几种虚拟化软件介绍

目前的主流虚拟化软件包括KVM、ESX、XenServer、Hyper-V等[23-31]

1)KVM[32]

基于内核的虚拟机KVM最初由Qemuranet公司开发,后来Qemuranet公司被Red Hat收购。现在,KVM的主要开发工作由RedHat与KVM社区负责。

KVM是一款集成到Linux内核中的虚拟化软件,正是由于KVM集成到了Linux内核之中,它可以直接利用内核提供的代码,如进程调度、内存管理等现有程序。KVM的架构如图1.14所示。

图1.14 KVM的架构[1]

普通的Linux进程有两种执行模式:内核模式与用户模式。KVM添加了一个新的模式,即客户模式。客户模式也分为内核模式和用户模式。对主机操作系统而言,每一个虚拟机都被内核看成一个标准的Linux进程,由进程调度程序调度执行。KVM在Linux内核中的角色是一个字符驱动程序,一般的Linux发行商在配置内核时都将KVM用模块的方式编译。在加载KVM模块之后,会生成“/dev/kvm”设备文件,应用程序将通过系统调用ioctl对此文件进行操作来创建和运行虚拟机。

2)ESX[26]

ESX是由VMWare开发的一种企业级的type-1型管理程序,用于部署和维护虚拟计算机。ESX具有高级资源管理功能,是一个高效、灵活的虚拟主机平台。

ESX是一个基于Linux的操作系统,ESX服务器由VMWare虚拟层、资源管理器、硬件界面3部分构成。ESX服务器的架构如图1.15所示。ESX服务器由资源管理器和服务控制台组成,其架构的核心思想是实现硬件资源在完全隔离的环境中部署,其中VMWare虚拟层提供了理想的硬件环境和对底层物理资源的虚拟;资源管理器将CPU、内存、网络带宽和磁盘空间等划分到每台虚拟机上;硬件界面组件包括设备驱动程序等。

图1.15 ESX服务器的架构[1]

ESX本身就是一个OS,可以直接安装,不需要其他OS作为底层系统。ESX具有良好的兼容性和稳定性,它基于Linux系统平台,在ESX基础上,可以安装任何虚拟化系统。ESX可以使原有信息平台服务器的系统方便地衔接、整合起来,如高校的教务管理系统、学工信息系统等能轻松、快捷地整合到同一虚拟平台上,既可有效地避免原有资源的无效利用和浪费,也可避免平时大量的维护工作。

3)XenServer[27]

XenServer是由Citrix开发的服务器虚拟化产品,可将静态、复杂的数据中心环境转变成动态、更易于管理的交付中心,从而降低数据中心成本。XenServer是一款免费的企业级虚拟化基础架构解决方案,可实现实时迁移和集中管理多节点等重要功能,该系统于2013年6月从6.2版本开始开源。

XenServer提供的虚拟化方式包括半虚拟化、全虚拟化及硬件辅助虚拟化。

XenServer的架构如图1.16所示,Xen中间件直接运行于硬件之上,是Xen客户操作系统与硬件资源之间的访问接口。通过对硬件进行抽象可以将相应的硬件(如CPU、内存资源)调度给上层的客户机使用。目前Xen中间件并不直接操作I/O硬件,不负责处理诸如网络、外部存储设备、视频或其他通用的I/O。

XenServer中还有一个重要的组件,即Domain 0,这个组件运行在Xen管理程序之上,具有直接访问硬件和管理其他客户操作系统的特权。Domain 0在XenServer中担任管理员的角色,负责管理其他虚拟客户机。Domain 0之上运行Xen中间件API,该接口是XenServer管理的核心,由一系列Xen工具栈组成,并提供给XenCenter使用。

在I/O方面,XenServer选择了可维护这条道路,它将所有的I/O操作都放到了Domain 0里面,重用Linux来进行I/O,XenServer的维护者不用重写整个I/O协议栈。但这样牺牲了性能:每一个中断都必须经过XenServer的调度才能切换到Domain 0,并且所有的活动都不得不经过一个附加层的映射。

4)Hyper-V[28]

Hyper-V是Microsoft开发的一款虚拟化产品,也是Microsoft第一个采用类似ESX和XenServer的基于系统管理程序技术的产品,能够实现桌面虚拟化,其架构如图1.17所示。

图1.16 XenServer的架构[1]

图1.17 Hyper-V的架构[1]

Hyper-V的使用架构有两种:第一种是原生架构,直接在硬件上运行虚拟化管理层,性能比较好,相对稳定;第二种是寄居架构,虚拟化管理层寄居在主机操作系统上,依靠主机操作系统来模拟相关的硬件设备。

Hyper-V的主要特点是将父分区(宿主机操作系统)挪到了子分区(虚拟机操作系统)的旁边,宿主机操作系统和虚拟机操作系统是平级的,不存在谁依附谁的关系。

4. Docker[29]

Docker是PaaS服务商DotCloud开源的应用容器引擎,开发者利用Docker可以将其应用和依赖打包到一个可移植的容器中,然后发布到任何流行的Linux机器上。开发利用Docker也可以实现虚拟化。Docker容器完全使用沙箱机制,相互之间不会有任何接口。

Docker自2013年发行以来备受关注,无论GitHub上的代码活跃度,还是Red Hat在RHEL 6.5中集成对Docker的支持,就连Google的云平台也开始支持Docker。

Docker使用客户端/服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。Docker容器通过Docker镜像来创建,Docker容器与Docker镜像的关系类似面向对象编程中的对象与类的关系。Docker的架构如图1.18所示。

图1.18 Docker的架构[1]

Docker镜像(Images):用于创建Docker容器的模板。

Docker容器(Container):独立运行的一个或一组应用。

Docker客户端(Client):通过命令行或其他工具使用Docker API与Docker的守护进程通信。

Docker主机(Host):一个物理或虚拟的Docker主机,用于执行Docker守护进程和Docker容器。

Docker仓库(Registry):用于保存Docker镜像,可以理解为代码控制中的代码仓库。Docker Hub提供了庞大的镜像集合。

Docker机器(Machine):一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,如VirtualBox、Digital Ocean、Microsoft Azure等。

未来的虚拟化发展将是多元化的,包括服务器、存储、网络等更多的元素,用户将无法分辨哪些是虚的,哪些是实的。虚拟化将改变传统的IT架构,并且会将Internet中的所有资源全部连在一起,形成一个大的虚拟计算中心,而普通用户只需要关心提供给自己的服务是否正常,虚拟化技术未来会进一步得到发展[31-32]

1.2.2 分布式计算

分布式计算作为云计算的核心技术,大大提高了云计算的计算效用。本节将详细介绍分布式计算[1]

1. 分布式计算的基本概念

随着云平台上数据规模的不断扩大,单机的计算能力已经无法满足数据计算的需求,如何将多台机器的计算能力联合起来以满足日益庞大的计算能力需求是目前云计算领域的研究热点之一。

从用户的角度来看,云计算服务可以看成“云存储+云计算”。而基于大规模集群的分布式计算正是目前云计算平台的核心技术。

分布式计算是一种计算方法,和集中式计算是相对的。随着计算技术的不断发展,有些应用需要非常强大的计算能力才能完成,如果采用集中式计算,那么需要耗费相当长的时间来完成。分布式计算将应用分解成许多小的部分,并分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。

分布式计算与其他算法相比具有以下几个优点。

(1)稀有资源可以共享。

(2)通过分布式计算可以在多台计算机上平衡计算负载。

(3)可以把程序放在最适合运行它的计算机上。

(4)与昂贵的并行超级计算机相比,分布式计算采用的计算机价格便宜。

一个著名的分布式计算平台是伯克利(U.C.Berkeley)开放式网络计算平台(Berkeley Open Infrastructure for Network Computing,BOINC),它是一个不同分布式计算可以共享的分布式计算平台。不同分布式计算项目可以直接使用BOINC的公用上传下载系统、统计系统等,这样不仅能发挥各个分布式计算之间的协调性,也能使分布式计算的管理、使用更加方便。

目前,分布式计算项目已经开始使用世界各地成千上万志愿者计算机的闲置计算能力,通过Internet,可以分析来自外太空的电信号,寻找隐蔽的黑洞,并探索可能存在的外星智慧生命;可以寻找超过1000万位数字的梅森质数;也可以寻找并发现对抗艾滋病病毒更为有效的药物。这些项目都很庞大,需要惊人的计算量,仅仅由单个计算机或个人在一个能让人接受的时间内完成计算是绝不可能的。以前,这些问题都应该由超级计算机来解决,但是,超级计算机的造价和维护费用非常昂贵,而分布式计算采用的计算机则相对廉价、高效、维护方便。

2. 典型的分布式计算技术

在过去的20多年间,出现了大量的分布式计算技术,如中间件(Middleware)技术、网格技术、移动Agent技术、P2P技术及Web Service技术,它们在特定的范围内都得到了广泛的应用,这些分布式计算技术经过融合、演进、剪裁后均可以用于云计算系统。

1)中间件技术

中间件是基础性软件的一大类,属于可复用软件的范畴。中间件处于操作系统软件与用户的应用软件之间。中间件在操作系统、网络和数据库之上,应用软件之下,其作用是为处于自己上层的应用软件提供运行与开发环境,帮助用户灵活、高效地开发和集成复杂的应用软件。

在众多关于中间件的定义中,普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助它在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

中国科学院软件研究所研究员仲萃豪形象地把中间件定义为“平台+通信”。这个定义限定了只有用于分布式系统中的此类软件才能被称为中间件,此定义还可以把中间件与支撑软件和实用软件区分开来。

2)网格技术

对万维网的诞生起到关键性作用的欧洲核子研究组织对网格计算是这样定义的:网格计算就是通过Internet来共享强大的计算能力和数据存储能力。

网格计算将大量异构计算机的资源构成虚拟组织,为解决大规模的计算问题提供计算模型。网格计算的焦点放在支持跨管理域计算的能力,这使得它与传统的计算机集群或分布式计算相区别。网格计算包括共享异构资源,这些资源位于不同的地理位置,属于一个使用公开标准网络上的不同管理域。网格计算经常和另一种分布式计算(集群计算)相混淆,二者主要的不同在于:集群是同构的,而网格是异构的;网格扩展包括用户桌面机,而集群一般局限于数据中心。

3)移动Agent技术

Agent可以翻译成代理或主体,它比面向对象中对象的概念更深刻,粒度更粗。随着计算机网络和分布式人工智能技术的迅速发展,基于网络的分布式人工智能采用人工智能(Artificial Intelligence,AI)等技术,研究一组分散、松散耦合的智能结构如何在分布式环境下实现群体间高效的相互协作、联合求解,以解决多种协作策略、方案、意见下的冲突和矛盾,由此提出了Agent思想。Agent在虚拟网络环境中模拟人类社会组织机构与社会群体解决问题等方面将发挥越来越重要的作用。在网络与分布式环境下,每个Agent都是独立自主的,能作用于自身和环境,能操纵环境的部分组件,能对环境的变化做出反应,更重要的是能与其他Agent通信、交互,彼此协同工作,共同完成任务。

多Agent系统(Multi-Agent System,MAS)是由多个Agent组成的系统,强调了Agent社会性特征。在MAS中,Agent不是孤立存在的,Agent的资源和能力都是有限的,多个Agent在交互时,需要考虑如何在多个可能的行为策略之间做出合理的选择。因此,MAS可定义为:能进行问题求解,能随环境改变而修改自己的行为,并能通过网络与其他Agent进行通信、交互、协作、协同完成求解同一问题的分布式智能系统。这样的系统能模拟人类社会团体、大型组织机构的群体工作,并运用他们解决问题的工作方式来解决多方共同关心的复杂问题。MAS模型如图1.19所示。

图1.19 MAS模型[1]

多Agent之间在逻辑上彼此独立,通过共享知识、任务和中间结果,在工作中协同形成问题的解决方案。因此,MAS中Agent之间的交互过程不是简单地交换数据,而是参与某种社会行为。

4)P2P技术

P2P技术起源于最初的连网通信方式。例如,在建筑物内,计算机通过局域网互连,不同建筑物间通过Modem远程拨号互连,其中建立在TCP/IP协议之上的通信模式构成了今日Internet的基础。所以,从基础技术角度来看,P2P不是新技术,而是新的应用技术模式。如今,P2P再一次被关注主要是由于P2P文件共享及即时通信类软件的出现。Internet是以B/S结构的应用模式为主的,这样的应用必须在网络内设置一个服务器,信息只有通过服务器才可以传递。信息或先集中上传到服务器保存再分别下载(如网站),或者先由服务器上专有软件处理后才可在网络上传递流动(如电子邮件)。

安装P2P文件共享及即时通信类软件的计算机可以与拥有同类软件的其他计算机不通过服务器直接互连,双方共享资源,协同完成某种行动。而拥有同一P2P软件的设备和用户,还可以形成一个为其自己所有基于Internet的P2P虚拟专用网。

Foster等人[33]认为,P2P技术为加入Internet各种资源的使用主体和提供主体提供了非中心化、自组织、所有或大部分联系是对称的分布式环境,在广域的范围内实现对数据信息、存储空间、计算能力、功能组件、通信资源的充分利用。

P2P的技术优势体现在以下几个方面。

(1)非中心化。网络中的资源和服务分散在所有的Peer上,信息的传输和服务的实现都直接在Peer之间进行,不需要中间环节和服务器的介入,避免了可能的系统瓶颈。

(2)可扩展性。在P2P网络中,随着节点的加入,不仅服务的需求增加了,系统整体的资源和服务能力也在同步扩充,始终能较容易地满足用户的需要。P2P的整个体系是全分布的,不存在瓶颈,其可扩展性理论上几乎可以认为是无限的。

(3)健壮性。P2P网络架构天生具有耐攻击、高容错的优点。由于信息存在冗余,并且服务是分散在各个Peer之间进行的,因此部分节点或网络遭到破坏对其他部分的影响有限。很多P2P网络都是以自组织的方式建立起来的,并允许节点自由地加入和离开,在部分Peer失效时能够自动调整整体拓扑结构,保持其他Peer的连通性。P2P网络能够根据网络带宽、节点数、负载等的变化不断地进行自适应调整。

(4)高性价比。性能优势是P2P被广泛关注的一个重要原因。随着硬件技术的发展,计算机的计算和存储能力,以及网络带宽等性能依照摩尔定律高速增长。采用P2P架构可以有效地利用互联网中散布的大量普通节点,将计算任务或存储资料分布到所有节点上。利用其中闲置的计算能力或存储空间,达到高性能计算和海量存储的目的。利用网络中的大量空闲资源可以用更低的成本提供更强的计算和存储能力。

可见,与传统的分布式计算相比,P2P技术具有无可比拟的优势。P2P理念及技术的发展影响整个计算机网络的概念和人们的信息获取方式。从狭义层次来理解,P2P是一种技术、系统、网络结构;而从广义层次来理解,P2P是由任何地位对等的实体构成的计算环境,是一种基于实体对等思想的计算模式。P2P具有广阔的应用前景,Internet上各种P2P应用软件层出不穷,用户数量急剧增加。尤其是P2P文件共享软件和即时通信软件的用户数量从几十万骤增到上千万,节点间互相交换的信息甚至给Internet带宽带来巨大冲击。

5)Web Service技术

近几年来,Internet的迅猛发展使其成为全球信息传递与共享的巨大资源库。越来越多网络环境下的Web应用系统被建立起来,利用超文本标记语言(Hypertext Markup Language,HTML)、公共网关接口(Common Gateway Interface,CGI)等Web技术可以轻松地在Internet环境下实现电子商务、电子政务等多种应用。然而这些应用可能分布在不同的地理位置,使用不同的数据组织形式和操作系统平台,这样就会出现数据不一致问题。在这种情况下,如何将这些高度分布的数据集中起来并进行充分利用成为亟须解决的问题。

随着网络技术、网络运行理念的发展,人们提出一种利用网络进行应用集成的解决方案——Web Service,它是一种新的Web应用程序分支,可以执行从简单请求到复杂商务处理的任何功能。Web Service是一种平台独立、低耦合、自包含、基于可编程Web的应用程序,可使用开放的可扩展标记语言(Extensible Markup Language,XML)来描述、发布、发现、协调和配置它,从而开发分布式的互操作应用程序。Web Service一旦部署后,其他Web Service应用程序可以发现并调用它部署的服务。因此,Web Service是构造分布式、模块化应用程序和面向服务应用集成的新型技术和发展趋势。Web Service使用标准技术,通过Web Service,软件应用程序资源在各网络上均可用,这些Web Service之间也可以进行通信。

Web Service使用的标准技术:通过Web Service描述语言(Web Services Description Language,WSDL)文件公开描述其自身功能;通过XML消息(通常使用SOAP格式)与其他应用程序进行通信;使用标准网络协议,如HTTP等。

Web Service、Web Service客户端软件应用程序及Web Service使用的资源(包括数据库、其他Web Service等)之间的关系:Web Service通过使用标准协议交换XML消息来与客户端和各种资源进行通信。

在WebLogic Server上部署Web Service后,由WebLogic Server负责将传入的XML消息路由到开发人员编写的Web Service代码中;Web Service将导出WSDL文件,以描述其接口,其他开发人员可以使用此文件来编写访问该Web Service的组件代码。

3. 存储整合

在分布式计算模式下,每个部门通常都选择各自不同的计算机系统,首先会出现数据格式的不统一导致的管理困难问题,其次管理分布式计算中所用的大量存储设备所需的费用也十分高昂。这些都有悖于分布式计算技术的初衷,所以,存储整合对分布式计算技术的发展起着不可低估的作用。

存储整合是指多个异构型主机共享集中式存储。针对不同的环境和要求,有许多不同的整合模式,但主要有以下三种。

(1)从存储在多个服务器上转变为存储在单个服务器上。此模式可以降低管理工作的复杂性和对数据中心占地面积的要求。

(2)直接将多个异构型服务器附加到一个存储设备上。此模式可以极大降低存储成本,同时可以简化管理。

(3)整合到存储局域网上。此模式既有利于提高工作效率,降低管理工作的复杂性,也可以提高可扩展性、可用性和数据可访问性。

所以,随着分布式计算技术得到越来越广泛的应用,存储整合技术也逐渐显示出它重要的地位。

1.2.3 云存储

对广大的互联网用户来说,云存储(Cloud Storage)[34]是云计算中用户体检最直接的技术。本节将详细介绍云存储[1]

1. 云存储的基本概念

随着“互联网+”概念的普及,各大传统行业也逐渐与Internet中的云计算、大数据、物联网等技术互相融合,信息存储的领域也随之变得广阔,云数据中心对存储容量的需求也越来越大。伴随着规模的扩展,中小型企业在购置、部署和维护存储服务器方面面临着成本越来越高的难题。云存储为中小型企业用户、个人用户等带来了低成本、便捷的存储服务,在云存储系统中,用户可以根据需求购买并利用存储资源,而存储设备的购置、部署、维护均由云存储服务商负责,可有效缓解用户所面临的数据存储压力,而云存储也成为各大云计算服务平台提供的重要服务之一。

云计算通过网络有效地聚合了虚拟化的计算资源,为系统中的用户提供动态、可扩展的各种计算、存储和应用服务。云存储是在云计算概念上发展起来的一种复杂存储资源池系统,它通过集群应用、分布式文件系统等将网络中数量众多不同种类的存储设备基于应用软件集中起来协同工作,并通过这些应用软件及其各自的接口为用户提供密集数据存储和共享访问功能。因此,云存储实际上是以存储和管理数据为核心业务的一种云计算系统。从本质上来看,云存储不是存储,而是一种服务,其核心是通过应用软件与存储设备的结合,实现存储设备向存储服务的转变[35]

云存储系统是由多个存储设备组成的,这些设备基于集群功能、分布式文件系统或类似网格计算等功能联合起来协同工作,并通过一定的应用软件或应用接口为用户提供一定类型的存储服务和访问服务。当使用某一个独立的存储设备时,必须清楚这个存储设备的型号、接口和传输协议,同时必须清楚存储系统中有多少个磁盘,它们各自的型号、容量,还必须清楚存储设备和服务器之间采用什么样的连接线缆。而在云存储系统中,所有设备对使用者来说都是完全透明的,任何地方经过授权的使用者都可以接入云存储系统进行数据访问。

总之,云存储对使用者来说,不是指某一个具体的设备,而是指一个由许多存储设备和服务器构成的集合体。使用者使用云存储,并不是使用某一个存储设备,而是使用整个云存储系统提供的一种数据访问服务[36]

2. 云存储系统的网络架构与系统特征

云存储系统由数量众多不同种类的存储设备组成,通过对应的应用软件或应用接口向用户提供不同类型的数据存储和共享服务。在用户使用过程中,系统中的所有设备对用户来说都是完全透明的。图1.20为云存储系统的网络架构。

图1.20 云存储系统的网络架构[1]

在云存储系统中,存储节点(Storage Node)用来存储文件;而控制节点(Control Node)则用来存放元数据,并控制各个存储节点间的负载均衡。从上层应用端的角度来看,云存储仅仅是基础文件系统,一般支持HTTP、NFS、FTP、WebDAV等标准协议,可以方便地与已有的系统结合。

表1.2为云存储系统主要特征的说明。

表1.2 云存储系统主要特征的说明

1)可管理性

云存储面临的一个重点问题是成本。如果客户可以购买并在本地管理存储,而不是在云中租赁它,那么云存储市场会消失。成本可划分为两个高级类别:物理存储生态系统本身的成本和管理它的成本。管理成本虽然是隐式的,但却是总体成本的一个长期组成部分。为此,云存储必须能在很大程度上进行自我管理。云计算系统通过自动自我配置来容纳新的存储设备,在出现错误时可以实现快速定位和自我修复。在未来,诸如自主计算这样的概念将在云存储架构中起到关键作用。

2)访问方法

云存储与传统存储之间显著的差异之一是,二者的访问方法不同。云存储的访问方法如图1.21所示。虽然大部分云存储服务商实现了多个访问方法,但是Web服务API是常见的。许多API都是基于REST原则实现的,即在HTTP之上开发的一种基于对象的方案。由于REST API是无状态的,因此可以简单而有效地予以提供。许多云存储服务商都实现了REST API,包括Amazon S3、Windows Azure和Mezeo Platform等。

图1.21 云存储的访问方法[1]

3)传输性能

在用户与远程云存储服务商之间移动数据是云存储面临的最大问题。常用的传输控制协议(Transfer Control Protocol,TCP)基于数据包在对等端点控制数据流,在数据包丢失或时延到达等情况下将启用阻塞控制,进一步限制性能以避免更多全局网络问题。TCP适用于通过全局Internet启用小量数据,但不适用于会增加往返时间(Round-Trip Time,RTT)的大量数据移动。

Amazon通过Aspera解决了上面这个问题。Amazon开发了一个称为快速且安全的协议(Fast and Secure Protocol,FASP),该协议的模型如图1.22所示,以在RTT增加和数据包丢失情况下加速批量数据移动。数据报协议(User Datagram Protocol,UDP)允许主机管理阻塞,可将这种允许面推进到FASP的应用层协议中。

图1.22 FASP协议模型[1]

4)多租户共享

云存储架构同样可以有效支持多租户安全访问和共享数据资源。多租户可应用于云存储堆栈的多个层,从应用层(其中存储名称空间在用户之间是隔离的)到存储层(其中可以为特定用户或用户类隔离物理存储)。多租户甚至可以适用于连接用户与存储的网络基础架构,向特定用户保证数据访问安全性、服务质量并优化带宽。

5)可扩展性

可扩展性是云存储最具吸引力的地方。虽然扩展存储可降低用户成本,但会增加云存储的复杂性。扩展存储不仅要为存储本身提供可扩展性(功能扩展),还必须为存储带宽提供可扩展性(负载扩展)。云存储的另一个关键特性是数据的地理可扩展性,它支持通过迁移使数据最接近用户。对于只读数据,可以使用内容传递网络进行复制和分布。云存储的可扩展性如图1.23所示。

图1.23 云存储的可扩展性[1]

云存储的架构必须能够扩展,服务器和存储必须能够在不影响用户的情况下重新调整大小。正如在可管理性部分所讨论的,自主计算是云存储架构所必需的。

6)数据可用性

如果云存储服务商托管用户的数据,那么必须能够确保将该数据顺利地提供给用户,需要解决存储故障、网络中断、用户错误等情况,从而以一种可靠而确定的方式提供数据服务。

提供私有云存储服务的CleverSafe公司使用信息分散算法(Information Dispersal Algorithm,IDA)在发生物理故障和网络中断的情况下实现了更高的可用性。IDA是Michael Rabin最初为电信系统而创建的一种算法,它支持使用Reed-Solomon代码对数据进行切片处理,以便在数据丢失的情况下实现数据重建。此外,IDA允许配置数据切片的数量。例如,为1个可接纳故障将数据对象分割成4个切片,为8个可接纳故障将数据对象分割成20个切片。与RAID类似,IDA支持通过原始数据的子集重建数据,但含有一定数量的代码错误开销(依赖于可接纳故障的数量)。IDA示意图如图1.24所示。

图1.24 IDA示意图[1]

7)控制

客户控制和管理其数据存储方式及相关成本的能力很重要。许多云存储服务商都实施相关控制,以使用户对其数据有更大的控制权。

Amazon实现了去冗余储存(Reduced Redundancy Storage,RRS),这是一种为用户提供最小化总存储成本的方式。数据是在Amazon S3基础架构内复制的,使用RRS,数据复制次数较少,但存在丢失数据的可能性。这种方式适用于可重新创建或在其他地方有副本的数据。Nirvanix还提供基于策略的复制来为如何及在何处存储数据提供更细粒度的控制。

8)存储效率

云存储的存储效率重点放在总成本上,主要关注对可用资源的高效使用。要使一个存储系统更高效,必须存储更多数据。一种常见的解决方案是数据压缩,即通过减少数据来降低对物理空间的需求。实现这种方案有两种方法:压缩,即通过使用不同的表示编码来缩减数据;删除重复数据,即移除可能存在的相同数据副本。压缩涉及重新编码数据的处理动作,而删除重复数据涉及计算数据签名以搜索副本。

9)成本

云存储最显著的特征是可以降低成本,包括购置存储的成本、驱动存储的成本、修复存储的成本,以及管理存储的成本。

3. 云存储系统的结构模型

相较于传统的存储系统,云存储系统中不仅存在一系列的存储设备,还包括网络设备、接入网、应用软件、公共访问接口、客户端程序等。云存储系统的结构模型分为4层[35],如图1.25所示。

1)存储层

存储层是云存储系统中最重要的部分。由于云存储系统是分布式的,因此存储设备大多分布在各个地域,众多设备通过网络连接。不同类型的存储设备上都存在一个系统用于统一管理存储设备,它除了对存储设备进行多链路冗余管理、逻辑虚拟化管理,还负责监控硬件设备的状态并进行故障维护。

图1.25 云存储系统的结构模型[1]

2)基础管理层

基础管理层是云存储系统中最难以实现的部分。通过集群系统、分布式文件系统等技术,基础管理层实现了云存储中大量不同类型存储设备之间的协同工作,并且数据访问的性能更为强大。在基础管理层上,还有一些技术可保证系统的安全性和稳定性。例如,内容分发、数据加密等技术可防止云存储系统中的数据被未授权的用户访问,而数据备份、数据容灾等技术则可确保云存储系统中的数据不会丢失。

3)应用接口层

应用接口层是云存储系统中最为灵活的部分。各个云服务商可以根据自己提供的业务特点,实现不同的应用服务接口和权限管理策略,提供各具特色的应用服务。

4)访问层

所有云存储的合法用户都能通过公共的应用接口来接入云存储系统,使用云服务商提供的服务。不同云服务商提供的访问控制方案和数据共享功能有所不同。

4. 云存储系统的优势

随着IT的发展,传统的存储系统在容量扩充和性能提升方面存在瓶颈,发展速度无法满足海量数据的存储需求。云存储系统具有大容量、高性能、易扩展的特点,相较于传统的集中式存储系统,分布式的云存储系统具有以下优势[36]

1)易扩容、易管理

与传统存储系统的扩容方式不同,云存储系统采用的是分布式并行扩容方式,即在云存储中,当用户需要增加容量时,新加入系统的设备只需要安装操作系统和云存储系统软件,接入云存储网络后,系统便会自动识别该设备,将其加入设备池中完成扩展。整个扩容过程十分简单。

管理人员在管理传统存储系统时,除了要熟悉不同厂商、类型存储设备的管理界面,还要了解每个设备的容量、负载等使用状况,并且安装在设备上的软件需要不断升级。而在云存储系统中,对管理人员而言,不同厂商、类型的存储设备都只不过是服务器,可通过一个管理界面来统一管理,使用情况易于查询,操作和维护也变得简单,并且云存储提供SaaS,用户通过网络使用安装在云端的软件,本地无须进行软件升级。

2)成本低廉

传统的存储系统大多采用同厂商、同规格的设备来构建系统,但在设备更新换代较快的背景下,很难找到同型号的产品来更换旧设备或扩容。而云存储系统可通过应用软件使网络中数量众多不同类型的存储设备协同工作,既能使用原有的硬件产品,也不妨碍新设备的加入和更新,便于用户选择高性价比的设备来控制成本,并充分利用系统资源。

3)可靠性更高、服务不间断

当硬件损坏时,传统存储系统的相关模块会停止服务,甚至造成数据丢失。由于传统存储系统采用的是集中式的系统架构,因此在其中加入冗余的成本过高,并且会使系统更加复杂,开销更大。当设备升级,用新设备替换旧设备时通常需要暂停服务。

云存储系统将用户的数据文件分块存储在不同的存储设备中,系统本身提供数据备份和容灾功能,某一个设备的损坏并不会造成数据不可用,而会自动找到存放在另一台存储设备中的数据。在系统更新设备时,系统先将待更换服务器上的文件转移至别的服务器,当新的服务器加入系统后,再把文件转移回来,保证服务不间断。

5. 云存储文件系统

面对海量数据的存储请求,众多IT公司和企业都在努力设计属于自己的云存储系统,如百度云盘、华为网盘等,而这些云存储系统所采用的代表性文件系统有Google文件系统(Google File System,GFS)和Hadoop分布式文件系统 (Hadoop Distributed File System,HDFS)[37-47]

1)GFS

GFS是一种能够进行大数据量分布式读写并具有日志功能的分布式文件系统。GFS包含管理中心(Master)、数据服务器(Chunk Server)及客户机(Client)[42-43]。GFS的典型特征是数据文件全部以数据块的形式存储,每个块的大小为64MB。GFS通过增加数据块副本的数量来提高数据的可靠性。

管理中心的功能包括以下三个方面。

(1)管理GFS中包括文件命名空间和访问控制信息在内的云数据信息。

(2)管理数据服务器与客户机之间的数据传输。

(3)负责系统的负载均衡、数据块的分发查找定位、数据服务器的监控等。

客户机是所有用户获取GFS服务的入口,应用程序通过客户机和管理中心与数据服务器通信。

2)HDFS

HDFS是Hadoop的三个核心组件之一,属于Hadoop的底层,其上一层是Map Reduce。HDFS具有高容错性,能够部署在大量廉价的硬件设备上,适用于具有海量数据集的应用。HDFS与GFS一样,也是基于块存储的,每个块大小为64MB。HDFS能对数据进行可扩展访问。HDFS的设计以常态的硬件故障、流式访问(Streaming Access)、大数据集、可移植性等为前提[43-45]

HDFS采用的是主从式体系结构。一个HDFS包括一个Name Node和多个Data Node。Name Node作为中央元数据服务器,负责文件系统命名空间的管理和数据块的复制等工作,其主要功能概括如下。

(1)管理元数据。

(2)管理命名空间。

(3)监听并处理请求。

(4)进行心跳(Heartbeat)监测。

Data Node是Name Node的管理对象,主要承担数据块的存储工作,是数据存储服务器[41]。在Name Node的管理下,Data Node执行副本的创建、减少、增加、更改操作,其主要功能概括如下[47]

(1)数据块的读写。

(2)向NameNode汇报工作状态。

(3)数据的流水线式复制。

1.2.4 云安全

随着云计算技术的逐渐普及,用户对云计算服务安全方面的要求越来越高。本节将详细介绍云安全[1]

1. 安全挑战

目前,大量的用户数据都托管在云平台上,尤其是公共云平台,如Apple的iCloud、小米公司的云平台,以及百度云等都存储着大量的用户数据,而且还包含通讯录、短信等私密数据。

如何保证云平台上数据的安全,使其免于他人的非法获取是目前所有云平台都必须考虑的问题。本节从目前云安全面临的挑战出发,向读者介绍目前国内外的安全技术现状,以及企业在保障云安全方面用到的关键技术。

目前,关于云计算与安全之间的关系一直存在两种对立的说法。持有乐观看法的人认为,采用云计算会增强安全性:通过部署集中的云数据中心,可以组织安全专家及专业的安全服务队伍实现整个系统的安全管理,避免不专业导致安全漏洞频出而被黑客利用的情况。而更接近现实的一种观点是,集中管理的云数据中心将成为黑客攻击的重点目标:由于系统规模巨大,并且系统具有前所未有的开放性与复杂性,因此其安全性面临比以往更为严峻的考验。

2. 技术现状

在IT产业界,各类云计算安全产品与方案不断涌现。例如,Sun发布的开源云计算安全工具可为Amazon的EC2、S3,以及虚拟私有云平台提供安全保护:OpenSolaris VPC网关软件能够帮助客户迅速和容易地创建通向Amazon虚拟私有云的多条安全通信通道;为Amazon EC2设计的安全增强的服务商管理库存(Vendor Managed Inventory,VMI)(包括非可执行堆栈),可在加密交换和默认情况下启用审核等;云安全盒(Cloud Safety Box)使用类Amazon S3接口,可以自动地对内容进行压缩、加密和拆分,简化云中加密内容的管理等。Microsoft为云计算平台Azure制定了代号为“Sydney”的安全方案,帮助企业用户在服务器和Azure云之间交换数据,以解决虚拟化、多租户环境中的安全性问题。EMC、Intel、VMWare等公司联合发布了一个“可信云体系架构”的合作项目,并提出了一个概念证明系统,该项目采用Intel的可信执行技术(Trusted Execution Technology)、VMWare的虚拟隔离技术、RSA的enVision安全信息与事件管理平台技术等,构建了从下至上值得信赖的多租户服务器集群。开源云计算平台Hadoop也推出了安全版本,引入了Kerberos安全认证技术,对共享商业敏感数据的用户加以认证与访问控制,阻止非法用户对Hadoop Clusters的非授权访问。

目前的云计算安全技术框架包括以下内容[48]

1)云用户安全目标

云用户的首要安全目标是数据安全与隐私保护,主要是为了防止云服务商恶意泄露或出卖用户隐私信息,或者对用户数据进行搜集和分析,挖掘出用户隐私数据。例如,分析用户潜在而有效的盈利模式,或者通过两个公司之间的信息交流推断二者之间可能有的合作等。数据安全与隐私保护涉及用户数据生命周期中创建、存储、使用、共享、归档、销毁等各个阶段,同时涉及所有参与服务的各层次云服务商。

云用户的另一个重要安全目标是安全管理,即在不泄露其他用户隐私且不涉及云服务商的商业机密前提下,允许用户获取所需安全配置信息及运行状态信息,并在某种程度上允许用户部署专用安全管理软件。

2)云计算安全服务体系

云计算安全服务体系由一系列云安全服务构成,是实现云用户安全目标的重要技术手段。根据云安全服务所属层次的不同可以进一步将其分为云基础设施服务、云安全基础服务及云安全应用服务,如图1.26所示。

(1)云基础设施服务。云基础设施服务为上层云应用提供安全的数据存储、计算等IT资源服务,是整个云计算体系安全的基石。这里的安全性包含两层含义:其一是抵挡外部黑客攻击的能力;其二是证明自己无法破坏用户数据与应用的能力。一方面,云平台应分析传统计算平台面临的安全问题,采取全面、严密的安全措施。另一方面,云平台应向用户证明自己具备某种程度的数据隐私保护能力。由于用户在安全需求方面存在差异,因此云平台应具备提供不同安全等级云基础设施服务的能力。

图1.26 云计算安全服务体系框架[1]

(2)云安全基础服务。云安全基础服务可为各类云应用提供共性信息安全服务,是支撑云应用满足用户安全目标的重要手段。其中,比较典型的几类云安全基础服务如下。

① 云认证服务。云认证服务主要涉及身份的供应、注销及身份认证过程。在云环境下,实现身份联合和单点登录可以支持云中合作企业之间方便地共享用户身份信息和认证服务,并减少重复认证带来的运行开销。但云认证过程应在保证用户数字身份隐私性的前提下进行。由于数字身份信息可能在多个组织间共享,因此其生命周期各个阶段的安全性管理更具有挑战性,而基于联合身份的认证过程在云计算环境下也具有更高的安全需求。

② 云访问控制服务。云访问控制服务的实现依赖于妥善地将传统的访问控制模型(如基于角色的访问控制模型,基于属性的访问控制模型,以及强制/自主访问控制模型等)和各种授权策略语言标准(如XACML、SAML等)扩展后植入云环境。此外,由于云中各企业组织提供的资源服务兼容性和可组合性日益提高,因此组合授权问题也是云访问控制服务安全框架需要考虑的重要问题。

③ 云审计服务。由于用户缺乏安全管理与举证能力,要明确安全事故责任就要求服务商提供必要的支持,因此,由第三方实施的审计显得尤为重要。云审计服务必须提供满足审计事件列表要求的所有证据,以及证据的可信度说明。当然,若要该证据不会披露其他用户的信息,则需要使用经过特殊设计的数据取证方法。此外,云审计服务也是保证云服务商满足各种合规性要求的重要方式。

④ 云密码服务。由于云用户中普遍存在数据加解密运算需求,因此云密码服务的出现也是十分自然的。除典型的加解密算法服务外,密码运算中密钥管理与分发、证书管理及分发等也都能以基础类云安全服务的形式存在。云密码服务不仅为用户简化了密码模块的设计与实施,也使得密码技术的使用更集中、规范,也更易于管理。

(3)云安全应用服务。云安全应用服务与用户的需求紧密结合,种类繁多。例如,分布式拒绝服务(Distributed Denial Of Service,DDOS)、攻击防护云服务、Botnet检测与监控云服务、云网页过滤与杀毒服务、内容安全云服务、安全事件监控与预警云服务、云垃圾邮件过滤及防治服务等。传统网络安全技术在防御能力、响应速度、系统规模等方面受到限制,难以满足日益复杂的安全需求,而云计算可以极大地弥补这些不足:云计算提供的超大规模计算能力与海量存储能力,能在安全事件采集、关联分析、病毒防范等方面实现性能的大幅提升,可用于构建超大规模安全事件信息处理平台,提升全网安全态势把握能力。此外,云计算还可以通过海量终端的分布式处理进行安全事件采集,上传到云安全中心分析,极大地提高安全事件搜集与及时进行相应处理的能力。

3)云计算安全支撑服务体系

云计算安全支撑服务体系为云计算安全服务体系提供了重要的技术与管理支撑,其核心至少应覆盖以下几方面内容。

(1)云服务安全目标的定义、度量及其测评方法规范。帮助云用户清晰地表达其安全需求,并量化其所属资产各安全属性指标。清晰而无二义的安全属性指标是解决服务安全质量争议的基础。这些安全属性指标具有可测量性,可通过指定测评机构或第三方实验室测试评估。规范还应指定相应的测评方法,通过具体操作步骤检验服务商对用户安全目标的满足程度。由于在云计算中存在多级服务委托关系,因此相关测评方法仍有待探索实现。

(2)云安全服务功能及其符合性测试方法规范。该规范定义了基础性的云安全服务,如云认证、云访问控制、云审计及云密码等服务的主要功能与性能指标,便于使用者在选择时对比分析。

(3)云服务安全等级划分及测评规范。该规范通过云服务的安全等级划分与评定,帮助用户全面了解服务的可信程度,更加准确地选择自己所需的服务。尤其是底层的云基础设施服务,以及云基础软件服务,二者安全等级评定的意义尤为突出;同样,验证服务是否达到某安全等级需要相应的测评方法和标准化程序。

3. 关键技术

1)可信访问控制

由于无法准确判断云服务商是否忠实实施用户定义的访问控制策略,因此在云计算模式下,研究者关心的是如何通过非传统访问控制类手段实施数据对象的访问控制[48]。其中,受到关注较多的有基于密码学方法实现访问控制,包括基于层次密钥生成与分配策略实施访问控制的方法[49-50];基于属性的加密算法,如基于密钥规则属性的加密方案(Key Policy-Attribute Based Encryption,KP-ABE)[51]或基于密文规则属性的加密方案(Ciphertext Policy-Attribute Based Encryption,CP-ABE)[52];基于代理重加密(Proxy Re-Encryption)[52]的方法;在用户密钥或密文中嵌入访问控制树的方法[53-57]等。基于密码学的方案面临的一个重要问题是权限撤销,Boneh等人[58]提出的方案是为密钥设置失效时间,每隔一定时间,用户从认证中心更新私钥。Ibraimi等人[59]对该基本方案加以改进,引入了一个在线的半可信第三方维护授权列表。Roy等人[60]提出基于用户的唯一ID属性及非门结构,实现对特定用户进行权限撤销。但目前来看,上述这些方法在带有时间或约束的授权、权限受限委托等方面仍存在许多问题。

2)密文检索与处理

数据在变成密文时丧失了许多其他特性,从而导致大多数数据分析方法失效。密文检索有两种典型的方法:基于安全索引的方法[61-62]通过为密文关键词建立安全索引,查询关键词是否存在;基于密文扫描的方法[63]对密文中每个单词进行比对,判断关键词是否存在,并统计其出现的次数。由于某些场景(如发送加密邮件)需要支持非属主用户的检索,因此Boneh等人[64]提出了支持其他用户公开检索的方案。

密文处理研究主要集中在秘密同态加密算法设计上。早在20世纪80年代就有人提出多种加法同态或乘法同态算法,但是由于这些算法的安全性存在缺陷,因此后续工作基本处于停顿状态。IBM研究员Gentry利用“理想格”(Ideal Lattice)的数学对象构造隐私同态(Privacy Homomorphism)算法[65](或称为全同态加密算法),使人们可以充分地操作加密状态的数据,在理论上取得了一定突破,使相关研究重新得到研究者的关注,但目前距实用化仍有很长的路要走。

3)数据完整性证明

由于大规模数据伴随着巨大通信代价,用户不可能将数据下载后再验证其完整性,因此,云用户需要在取回很少数据的情况下,通过某种知识证明协议或概率分析手段,以高置信概率判断远端数据是否完整。典型的数据完整性证明方法包括面向用户单独验证的数据可检索性证明(Proofs of Retrievability,POR)方法[66]、公开可验证的数据持有证明(Provable Data Possession,PDP)方法[67-68]。NEC实验室提出的可证明数据完整性(Provable Data Integrity,PDI)[69]方法对POR方法进行了改进,加快了处理速度,增加了验证对象规模,并且支持公开验证。其他典型的数据完整性证明方法包括Yun等人提出的基于树状结构MAC Tree的方法[70];Schwarz等人[71]提出的基于代数签名的方法;Wang等人提出的基于BLS(Boneh-Lynn-Shacham)同态签名和RS(Reed-Solomon)纠错码的方法[72]等。

4)数据隐私保护

云中数据隐私保护涉及数据生命周期的每一个阶段,Roy等人将非集中信息流控制(Decentralized Information Flow Control,DIFC)技术和差分隐私(Differential Privacy)保护技术融入云中的数据生成与计算阶段,构建了一种隐私保护系统Airavat[73],可以防止MapReduce计算过程中非授权的隐私数据泄露出去,并支持对计算结果的自动除密。在数据存储和使用阶段,Mowbray等人构建了一种基于客户端的隐私管理工具[74],提供以用户为中心的信任模型,帮助用户控制自己的敏感信息在云端存储和使用。

Muntés-Mulero等人[75]讨论了现有的隐私处理技术,包括K匿名、图匿名及数据预处理等作用于大规模待发布数据时所面临的问题和现有的一些解决方案。Raykova等人[76]则构建一种匿名数据搜索引擎,可以使交互双方搜索对方的数据,获取自己所需要的部分,同时保证搜索询问的内容不被对方所知,搜索时与请求不相关的内容不会被获取。

5)虚拟技术

虚拟技术是实现云计算的关键核心技术,使用虚拟技术的云计算平台上的云架构提供者必须向其客户提供安全和隔离保证。Santhanam等人[77]构建了基于虚拟机技术实现的Grid环境下的隔离执行机。Raj等人[78]提出了通过缓存层次可感知的核心分配,以及基于缓存划分页染色的两种资源管理方法,可以实现性能与安全隔离。这些方法在隔离影响一个虚拟机的缓存接口时是有效的,并可整合到一个样例云架构的资源管理框架中。Wei等人[79]关注了虚拟机映像文件的安全问题,每一个映像文件都对应一个客户应用,它们必须具有高度完整性,并且需要具有安全共享的机制;所提出的映像文件管理系统实现了映像文件的访问控制、来源追踪、过滤和扫描等,可以检测和修复安全性违背问题。

6)云资源访问控制

在云计算环境中,各个云应用都属于不同的安全管理域,每个安全管理域都管理着本地的资源和用户。当用户跨域访问资源时,需要在域边界设置认证服务,对访问共享资源的用户进行统一的身份认证管理。在跨多个域的资源访问中,各域都有自己的访问控制策略,在进行资源共享和保护时必须对共享资源制定一个公共、双方都认同的访问控制策略,因此,需要支持策略的合成。策略合成问题最早由Mclean在强制访问控制框架下提出,他提出了一个强制访问控制策略的合成框架,将两个安全格合成一个新的格。策略合成的同时要保证新策略的安全性,新的合成策略必须不能违背各个域原来的访问控制策略。为此,Gong等人[80]提出了自治原则和安全原则;Bonatti等人[81]提出一个访问控制策略合成代数,基于集合论,使用合成运算符来合成安全策略;Wijesekera等人[82]提出了基于授权状态变化的策略合成代数框架;Agarwal等人[83]构造了语义Web服务的策略合成方案;Shafiq等人[84]提出了新的策略,侧重于解决合成策略与各域原有策略的一致性问题。

7)可信云计算

将可信计算技术融入云计算环境,以可信赖方式提供云服务已成为云安全研究领域的一大热点。Santos等人[85]提出了一种可信云计算平台,基于此平台,IaaS服务商可以向其用户提供一个密闭的箱式执行环境,保证客户虚拟机运行的机密性。另外,该平台允许用户在启动虚拟机前检验IaaS服务商的服务是否安全。Sadeghi等人[86]认为,可信计算技术提供了可信的软件和硬件,以及证明自身行为可信的机制,可以用来解决外包数据的机密性和完整性问题,这些人还设计了一种可信软件令牌,将其与一个安全功能验证模块相互绑定,以求在不泄露任何信息的前提条件下,对外包的敏感数据进行各种功能操作。

云计算是当前发展十分迅速的新兴产业,具有广阔的发展前景,但同时其所面临的安全技术挑战也是前所未有的,需要IT领域与信息安全领域的研究者共同探索解决之道。同时,云计算安全并不仅仅包括技术问题,它还涉及标准化、监管模式、法律法规等诸多方面,因此,仅从技术角度出发去探索解决云计算安全问题的方法是不够的,还需要信息安全学术界、产业界及政府相关部门的共同努力。

1.2.5 云能源

随着近年来云计算技术的逐渐成熟,功耗也日益增加。本节将详细介绍云数据中心的云能源。

1. 云能源概述

云能源指云数据中心接收、使用或存储的能源,这些能源的形式多种多样,但最终都会被转换成电能,供云数据中心日常使用。云能源常规的两种来源途径为市电和自身发电。市电指市供电局向云数据中心提供的电能;自身发电指云数据中心通过各种手段本身产生电力供自己使用,如柴油机发电、风力发电、水力发电。云数据中心根据功耗使用规则将收到的电能通过不间断电源系统(Uninterruptible Power System,UPS)分发给云数据中心的各个系统。

云计算一个很大的优势在于,它可以提供集成的存储和计算服务,从而达到规模效应,用户按需支付费用,可以减少资源浪费。从这一点来看,云计算属于一个绿色环保的概念,可以更好地节约能源。相关资料显示,如果将美国公司的大部分网上业务(如电子邮件、客户信息管理)都托管至云数据中心,那么可以省下目前计算功耗87%的能源,该能源可供洛杉矶运转一年[87]。然而云数据中心本身需要的功耗是非常巨大的,包括云计算服务需要建立的大型数据中心硬件设施的功耗、硬件发热所需要额外散热系统的功耗。造成这些功耗的原因是多方面的,解决方案的入手点自然也是多方面的。构建一个健全的云计算系统,首先需要一个完整的大型数据中心。数据中心需要的组件大致为存储数据的硬件设备、处理计算的硬件设备、构建通信网络的相关硬件及监控管理云计算的基础设施。Google的研究分析表明,云数据中心的功耗分布主要如图1.27所示[88]

(1)IT设备产生的功耗约占数据中心总功耗的30%。其中,服务器系统产生的功耗约占数据中心总功耗的15%,存储系统产生的功耗约占数据中心总功耗的10.5%,网络通信设备产生的功耗约占数据中心总功耗的4.5%。

(2)空调系统产生的功耗约占数据中心总功耗的45%,包括用于冷却、送风、增湿的设备。

(3)电源系统产生的功耗约占数据中心总功耗的23%。其中,UPS产生的功耗约占数据中心总功耗的18%,供电单元产生的功耗约占数据中心总功耗的5%。

(4)附属设备总体(包括照明系统)产生的功耗约占数据中心总功耗的2%。

图1.27 云数据中心的功耗分布[88]

2. 云能源消耗[89]

温室气体的增加导致全球变暖,各种极端气候现象频频发生,人们越来越关注环境的变化,尽量减少自身对环境的影响。而云数据中心产生的巨大功耗给环境带来了很大的压力[90]。同时,随着社会信息化水平的逐步提高,各行各业对信息系统的依赖程度越来越大,可以预见,信息产业的功耗占各类工业总体功耗的比例会越来越大。目前,IT相关的排放已经成为较大的温室气体排放源之一,数据中心功耗费用占总功耗费用的56%(包括36%的电力和20%的机械制冷费用),其中,空调系统占35%到45%[91]。即便我们已经着重提升了云数据中心的能源利用率,减少了无谓的硬件损耗,2020年全年全球IT相关碳排放仍达到15.4亿吨[92]。所以,要保护环境,就需要对信息产业相关功耗进行控制。

上文介绍的IT设备、空调系统、电源系统和附属设备是云服务中能源消耗最大的部分,也是能源损失最多的部分。例如,在夜间温度较低时,散热系统仍在全速运行;系统无任务的时候仍在运行。2003年,单机柜服务器的功率密度介于0.25~1.5kW,2014年涨至10kW。大部分的服务器空载功率依旧比较高,功耗浪费依旧比较严重。并且经过测算,以20%性能运行的服务器,其空载时的功耗不会低于其满载时的80%,所以一定要提高服务器的能效,减少无谓的能源浪费[93]。此外,在数据中心内部,各物理机器之间的连接,数据中心之间的连接,以及数据中心与互联网的连接所需物理硬件的能源消耗也是巨大的。

可见,云计算是一个非常好的商业模式,但如果只通过毫无节制地扩大数据机房规模来提升云计算服务,势必会带来巨大的功耗问题。因此,云计算的运行模式要得到发展,降低功耗、节能管理是必经之路。

3. 绿色云计算[89]

得益于相关硬件设施的技术升级与云平台管理系统的进一步完善,云计算在人们日常生活中的应用越来越普遍,如IBM、Google等公司已经在云计算商业化上取得了成功。然而,越来越多数据机房的构建导致云计算产业的能源消耗越来越大,从而对环境产生了越来越大的负面影响。为了缓解云计算带来的环境影响,绿色云计算应运而生。绿色云计算的核心意义在于减少计算系统的能源消耗,从而达到保护环境的目的。绿色云计算是在不改变其优势的前提下,注重降低对环境的影响,以实现产业发展和环境保护的双赢。

绿色云计算的前身是绿色计算,郭荣佐等人[94]认为绿色计算是一种先进的计算技术,其目的是利用先进的思想、技术和方法来降低计算系统的功耗,从而减少对人和环境的影响。而绿色云计算实际上就是在云计算中融入绿色计算的概念。

目前,绿色云计算在节约能源、减少数据中心功耗方面已开展了许多有价值的研究。很多绿色云计算的切入点都在于减少IT设备和空调系统的功耗,具体的研究方向主要有硬件的优化(如网络架构的优化、硬件工艺的调整)和软件管理的优化(如云计算体系结构的优化、服务器整合技术等)。其中,服务器整合技术尤其受到了学者的重视,该技术的基本思想是,将虚拟机集中至若干服务器,让目标服务器高速运转,对空闲状态的服务器及其对应制冷系统进行关闭或休眠处理,目前已经有许多研究成果,并已有部分应用于生产实践。云计算是未来网络发展趋势,而绿色云计算则是云计算的必然选择,如何实现有效的绿色云计算是当前云计算研究的重点。为了建设和谐低碳社会,并推动国家的科技进步,维持社会的可持续发展,绿色计算、绿色云计算都应作为新型计算模式而受到重视。发展绿色云计算,切实落实绿色云计算,对我国的信息产业发展有着重要意义。

4. 节能优化技术[89]

关于如何实现绿色云计算,当前已经有很多研究成果,主要可以分为硬件设备的优化、平台管理系统的优化两方面,涉及建筑系统、选址、冷却系统、IT设备和电气系统等多个方面,表1.3为绿色云计算主要节能措施及说明[95]

表1.3 绿色云计算主要节能措施及说明

一套完整的节能方案会同时涉及硬件和软件两个方面,大部分绿色云计算理论都会在这两个方面有所交叉,下面分条论述。

1)硬件设备节能

从硬件入手对系统进行节能实现难度较大,而回报率也高,主要是提升服务器制作工艺和优化制冷架构的设计,目前已有一些研究成果。

(1)服务器节能。服务器节能是实现绿色云计算很重要的一环,当前新型服务器在设计时会考虑在增强计算能力的同时降低功耗。Google对其服务器的主板进行了优化设计以提高能源的利用率,不少文献也对服务器的优化进行了研究。从CPU角度来看,目前多核技术已经广泛应用于生产,但多核导致处理器的功率进一步增加了。如何降低CPU的功耗是一个经常会被忽视但却很有必要考虑的问题。Intel开发了一种通过改变CPU的运行主频进行节能的技术——SpeedStep,即只有在需要高性能的时候才切换到高频率状态。Garzon等人[96]提出通过对CPU能效进行预测来调度工作,实现异构处理器上的负载均衡,达到提升计算系统能效的目的。Intel[97]指出,采用固态硬盘来替代机械硬盘,也可以节省很多能量消耗。因为机械硬盘的工作状态切换涉及电机加速,瞬时工作电流会很大,但是固态硬盘不存在这种问题,所以使用固态硬盘更好。Salvo等人[98]指出,对服务器进行集中式直流供电,取代传统的供电方法,也可以节约大量能源。

(2)制冷技术。数据中心温控设备在一般降温方面主要采用风冷和液冷两种方式。其中,基于风冷模式温控的云数据中心目前应用较为广泛。

图1.28是基于风冷模式的温控设备室内气流方向示意图,采用气流“下送上回”的制冷方式:冷风通过架空地板上的穿孔到达目的机架;吊顶回风口将回风送入吊顶,通过吊顶中的回风风管,回风气流进入温控设备进行冷却,或者直接排到室外[99]。此种制冷方式,存在各个节点负载时空分布不均的问题,同时气流“下送上回”会造成中心内热点与冷点区域分布散乱。这样会出现两种结果:一是现有数据中心的制冷系统无法在热力学稳态的系统环境中工作;二是服务器机架顶部的服务器经常过热而宕机。可以考虑使用更加高效的冷却方法替代当前的冷却方法,从而节省更多的能源。提升散热效率的途径之一是多运用风道,如建立冷/热通风通道[99]。这种方法可以限制冷空气只在服务器和机架之间流动,而不在整个机房内进行热循环,这样可以有效减少降温所需时间与功耗,但是这种方法会频繁地启动和停止制冷系统,可能会对机械制冷系统造成损害。液冷方式,即水冷节能方式,是采用自然水通过热交换器进行降温处理的。现在,越来越多企业在构建数据中心时都会考虑制冷效率的问题,数据中心制冷效率越来越受到人们的重视。

图1.28 基于风冷模式的温控设备室内气流方向示意图[89]

2)平台管理节能

如果服务器并不提供服务但是仍在运行,就会浪费大量能源;如果网络架构与资源使用不合理,那么信息传输会产生大量无谓的功耗。云平台管理系统的作用就是提高数据中心的能效,避免上述能源损失现象的出现[100]。云平台管理系统主要把控四个环节,分别为集中监控、快捷管理、动态优化和高效备份,主要目的是对基础设施(包括服务器、虚拟机和应用程序)进行调度以实现负载平衡并提高资源利用率。在云平台管理系统节能方面,主要可以从网络通信、动态优化方面入手进行研究,而动态优化主流方法又有两个分支,即动态电压调整技术和服务器虚拟化技术。

(1)网络通信。减少网络通信中的无用功耗,可以有效达到节能的目的。Nonde等人[101]提出了一种虚拟网络嵌入云计算网络的方法,节能的思路为,整合网络、数据中心的资源,根据数据中心不同粒度下设备的功耗进行带宽的分配与使用,从而减少网络通信数据。Tziritas等人[102]从减少虚拟机之间的通信、优化虚拟机的迁移方案两方面入手进行研究,以减少网络负载带来的能源开销。

(2)动态电压调整技术。目前,新型处理器会包含更多的核与缓存,其通过充分利用频率低的处理器来实现计算目标,从而达到节能的效果。而与之配套典型技术是动态电压调节(Dynamic Voltage Scaling,DVS)技术。该技术根据负载的大小,调节系统各个部件的功耗,从而达到节能效果。Nunezyanez等人[103]提出了一种结合自适应电压调节和功率阈值控制的算法,对电压、电压频率和功率阈值进行逻辑上的结合,以此来管理硬件系统,从而更好地节省能源。Mei等人[104]建立了一个云平台利润最大化问题模型,通过求解利润最大化问题,获得云平台优化配置、电压管理的策略。Sun等人[105]为了实现大数据流计算环境中的高能量效率和低响应时间,建立了一个高效节能的资源调度和优化框架,通过使用分布式流计算理论分配任务,从而实现有效的电压管理。

(3)服务器虚拟化技术。服务器虚拟化将云数据中心的所有数据节点(Data Node,DN)及其资源虚拟为一个统一、可按需调用的资源池,同时通过在一个物理计算节点上虚拟出多个虚拟机的方式,为云计算系统多租客提供互相独立、彼此隔离、安全可靠的虚拟机,以此来承载和管理各自提交的计算任务和服务请求,从而在一定程度上提高资源的利用率,降低计算节点的数量需求[106]。服务器虚拟化如图1.29所示,首先整合数据机房的物理资源,在物理资源之上建设虚拟化平台,然后在虚拟化平台上创建虚拟机,虚拟机提供给客户使用并可以整合到少量物理服务器上,提高整体资源利用率。

图1.29 服务器虚拟化[89]

整合服务器上的虚拟机需要虚拟机迁移机制的支持。首先,服务器虚拟化可以让资源调配更加简易、灵活,根据负载情况来调整当前虚拟机的相关情况;其次,可以合理地为虚拟机选择目标物理服务器,提高能源利用率;最后,可以把数据中心呈松散部署状态的虚拟机集中至更少的物理服务器上。研究表明,即便使用简单的试探法(如服务器持续空载就将其关闭),也能节约大量能源[87]。在对虚拟机的整体管理中,集中监控、快捷管理是节能机制的基石,切实有效的负载信息获取与有效的命令执行才能让节能机制落实;高效备份可以提升系统的容错性;动态优化则对负载均衡与节约能源做出了巨大的贡献。动态优化的一个优化周期:首先通过监控获取当前服务器的资源状态及当前所有应用负载的情况;然后进行性能分析预测,以及资源动态规划和调度;最后通过动态迁移虚拟机、关闭服务器、调整电压等手段调整服务器的资源使用情况[106]

1.2.6 云网络

随着通信技术的不断提升,云计算中的网络技术也在不断发展。本节将详细介绍云计算网络技术。

1. 云计算网络[107]

云计算的快速发展和广泛应用极大地推动了云数据中心的发展,越来越多的应用和数据从客户端集中到服务端。云数据中心已经逐渐从单纯的服务器托管和维护场所演变成拥有超级计算和海量存储能力的网络集群,为云计算的服务质量提供可靠的基础资源保障。云数据中心是云计算的基础,而云数据中心网络则是云数据中心的基础。由于云平台承载的业务规模庞大且复杂多样,因此对云数据中心的服务质量提出了更高的要求。大规模的云数据中心包含成千上万台服务器,这些数量巨大的服务器通过交换机、路由器等网络设备连接成服务器集群。云计算系统通过网络实现计算、存储、信息资源的汇聚,而云数据中心作为互联网的核心,是数据通信最集中的地方。大量的网络数据被传输到云数据中心,而在云数据中心内部,各个服务器之间也在频繁通信,交换机需要转发大量的数据。可见,云数据中心的网络传输能力是决定服务质量的重要因素。

云数据中心的规模爆发式扩大,传统的网络架构已经很难满足云计算的需求,显得越来越力不从心,传统网络技术的缺陷变得越来越突兀。传统的网络暴露出许多问题,如可扩展性差、管理难等。各式各样的网络协议不断被提出,但是协议之间相对独立,每种协议往往只是为了解决某种问题,众多的网络协议增加了网络的复杂性,管理起来越来越繁重。而云计算希望将传统网络抽象,按照需要提供给用户。这要求网络能够快速响应、动态配置,传统网络越来越不能满足云平台稳定运行的要求。云数据中心的大规模服务集群依赖数量众多的网络设备,管理员需要配置不同的网络结构,如交换机、租户隔离等,而配置和管理成百上千的网络设备也使得网络变得复杂。为了解决这些问题,我们需要找到更好的方法来管理网络。

云计算的广泛应用对当前的云数据中心网络提出了以下性能要求[108]

(1)自动化。管理员可以根据意愿动态地增加、删除网络,实现网络灵活、自动化、高效且最少人为干预。

(2)可扩展性。云环境下网络中的终端数量呈指数型增长,VLAN标识和MAC地址的局限性已经阻碍网络的安装和部署。

(3)多路径。为了防止网络故障,保证网络的可靠性和高效,必须要求网络拥有备用或冗余的传输路径。多路径不应该仅作为备用路径,而应充分利用这些冗余路径,提高网络的效率和实现负载均衡。

(4)网络虚拟化。云计算多租户、自动化等特点迫切需要一个运行在物理网络上虚拟的抽象网络,实现自由创建、扩展和收缩网络等。

针对目前云数据中心网络架构存在的问题,学术界存在两种典型的解决思路:一方是“改良派”,他们认为现在的IP网络架构本质上没有问题,只需要改良现有网络,做适当的修补,但常常是解决了一部分网络问题又会引发另外一些问题,如网络架构越来越复杂、臃肿,运营成本增加;另一方面是“改革派”,他们完全不认为“改良派”的“打补丁”能够解决问题,他们认为传统的网络架构与基础设备紧紧结合一起,已不能满足当今云计算的服务要求,与其费时费力修改原来架构,不如重构现有的网络架构,用一种新型的网络架构来替换基于传统架构的网络[109]。这些改进现有网络、降低居高不下的成本等需求驱动着软件定义网络(Software Defined Network,SDN)的发展,人们围绕SDN进行了许多的技术创新。

2. 网络典型结构[110]

云数据中心需要实时地分析、处理和存储大量数据,它的正常运行离不开网络。云数据中心底层的基础设施就是云数据中心网络,它的作用主要是为云数据中心提供一个高效、正常运行的物理平台,同时为云数据中心的各种服务保驾护航。云数据中心网络的拓扑结构直观地展示了云数据中心所有交换机、服务器等网络设备的连接关系。云数据中心由于需要向外界提供各式各样的服务,因此它的内部必须拥有大量的服务器。这些服务器通过网络设备连接在一起,共享整个云数据中心的资源,并有机地结合在一起,为不同的用户提供不同的服务。如今,网络中的流量急剧增长,在传统的数据中心架构中,经常会出现网络拥堵、时延大等网络问题。传统的数据中心通常采用树状结构,但经常存在可靠性差的问题[111]。现在的云数据中心网络通常有两种结构:树状结构和递归结构。其中,胖树结构是树状结构的典型代表,递归结构常用的有Dcell结构和雪花结构。

1)Dcell结构[112]

递归的最大特点是容易按照自身规律进行扩展,在解决云数据中心网络的可扩展问题方面,递归结构往往是一种很好的选择。在递归结构中,最重要的就是最小单元,因此在利用递归设计云数据中心网络时,首先必须设计好最小单元,其次要确定一个好的递归规律,这样才能搭建高效的网络结构。Dcell结构是一种非常典型的递归结构。图1.30是具有一层递归结构的Dcell,其中,每个递归单元的服务器都连接到其他递归单元的服务器。这种连接方法使得云数据中心的服务器都连接在一起,实现了全连通,提高了云数据中心的可靠性。Dcell结构基础的递归规律就是使用完全图进行节点连接。在Dcell结构中,服务器都处于并列或平行位置,高层网络结构由低层网络结构按照递归规律实现,并且该结构对应的网络也是更高层次网络的递归单元。采用Dcell结构,不用改变既有的网络拓扑结构就可以对云数据中心进行灵活的扩展,只需要增加它的递归层次,就可以大量增加服务器的数量。

图1.30 具有一层递归结构的Dcell[110]

2)胖树结构

胖树结构是一种对传统树状结构进行了改进的结构,即Fat-Tree结构。胖树结构是一种层次化的结构,该结构以交换机为中心[113]。胖树结构根据交换机的不同位置和能力划分为三层,从上到下依次为核心层交换机、聚合层交换机和边缘交换机。理论上,这些交换机都可以使用性能指数相同的交换机。但在实际应用中,这些交换机往往存在很大的区别,边缘交换机只需要接入少量的交换机,对性能要求不是很高,所以为了节约成本,通常采用一般性能的交换机。而对于核心层交换机和聚合层交换机,因为其处于网络转发的核心位置,转发负载较大,所以需要采用性能较高的交换机。这样不仅降低了成本,还满足了网络需求。

3)雪花结构

云数据中心网络在发展的过程中,还出现了一些新型的网络结构,如雪花结构。雪花结构与Dcell结构一样,也采用递归进行定义[114],高层的雪花结构也是通过低层的雪花结构进行递归组成的,最小的单元即0级雪花结构。在雪花结构的构建过程中,虚连接和实连接是比较重要的两个概念。如图1.31(a)所示,0级雪花结构包括3个服务器(Server)和一个交换机(Switch)。从图1.31中也可以看到,0级雪花结构的服务器之间有3条虚连接,它们在实际网络中是不存在的,而实连接是实际存在的。虚连接的作用是在雪花结构进行扩展的时候,连接新加入的0级雪花结构,此时,它就变成了实连接。

如图1.31(b)所示,1级雪花结构是通过0级雪花结构扩展而来的,在扩展的过程中,实连接和虚连接的数量发生了变化。

图1.31 雪花结构[110]

3. 定义网络技术[110]

互联网中终端设备的大量增加使得网络配置变得复杂并需要耗费大量时间。此外,网络很难实现高带宽,网络集成设备的灵活性和可扩展性很难实现。要解决这些问题,必须打破纵向网络设备的集成。SDN和虚拟化有望成为解决这些问题的方案,SDN已逐渐成为云数据中心网络研究的热点[115]。SDN的主要思想是分离和转发数据,同时在控制层面提供可编程性。SDN是一种侧重于集中式的解决方案,其中单个控制器具有整个网络的全局视图,这就实现了控制逻辑的实现、管理和配置。

图1.32为SDN体系结构图,分为三个层次,分别为数据层、控制层和应用层。层与层之间通过北向接口和南向接口进行通信,南向接口在数据层和控制层之间,而北向接口在控制层和应用层之间。

图1.32 SDN体系结构图[110]

对SDN架构组件的详细描述如下。

1)数据层

数据层包含直接处理的资源和客户的流量,以及必要的支撑资源,从而保证网络的虚拟化、连接安全性、可用性和服务质量。数据层由各种各样转发网络流量的底层网络设备组成,并且基于控制器发出的指令来处理数据包。在数据层,通常对数据包进行转发、修改或丢弃。SDN是基于OpenFlow协议[116]来对数据层进行管理的。

2)控制层

控制层决定如何通过一个或多个设备转发数据包。SDN控制器的智能逻辑都在该层实现。因为SDN控制器用于管理网络,所以它必须有交换机、路由器、防火墙安全规则等的控制逻辑。

目前有很多开源的SDN控制器,如Floodlight[117]、OpenDaylight[118]和ONOS[119]等。

3)应用层

应用层包含一个或多个应用程序,每个应用程序都拥有一组资源的独立控制权,由控制层的一个或多个SDN控制器提供。应用程序和使用控制平面的服务都需要通过北向接口才能进行应用。应用层是一个开放的区域,每个用户都可以对其进行开发使用。通过使用网络信息应用程序可以自动化地进行网络管理和配置。

1.2.7 资源监控

在云计算的资源分配当中,云计算的资源监控可以帮助管理者更好地了解资源分布及使用情况。本节将详细介绍云计算中的资源监控[107]

1. 监控需求

云计算的核心就是借助网络将各种底层资源以服务的形式提供给用户,云计算中的资源不仅包括底层的计算、存储网络资源,还包括虚拟化技术抽象出的虚拟资源,这些资源的规模随着云计算的广泛应用将庞大到无法想象,管理如此庞大资源的压力可想而知,因而必须采取措施高效管理这些资源。高效地进行资源管理是很多企业一直追求的目标,高效的资源管理有利于企业合理调度资源,提高资源的利用率。资源管理主要是对CPU、内存、网络等重要的资源实施监控,并执行一定的负载均衡算法,使系统处于稳定的最佳运行状态。其中,云环境下的资源监控是云平台资源管理必不可少的部分,它不仅包括对计算、存储、网络等物理资源的监控,还包括对虚拟化资源的监控;它对云服务商和云消费者来说都是非常重要的,也是云计算平台诸多活动的前提。管理像云计算一样复杂的系统离不开准确的系统资源使用情况等信息,云计算系统作为一种大型的分布式系统,需要大量的监控数据来完成系统管理、资源调度、负载均衡、故障恢复、性能预测等任务。这些监控数据有助于云计算资源动态化管理,及时发现系统故障,提高云平台的服务质量。因此,必须有效地监控各种资源的使用情况。

传统的监控系统只能监控某一特定的资源,如只监控内存使用情况。虽然它们能够有效地监控资源的利用率,但都是相互独立的监控组件,而对云计算环境下的资源来说,传统的资源监控技术不能够完全适应云计算的要求。云监控必须从全局出发,监控与系统相关联的所有组件,给出关于基础设施资源的可用性和消费报告[120]。云计算环境下的监控需求主要如下。

(1)传统资源监控主要针对物理服务器,监控简单,而云环境下的资源种类多种多样,不仅需要监控物理服务器,还需要监控物理服务器上运行的虚拟机。

(2)云环境下资源负载多变,虚拟机不断地被创建、迁移和删除,物理服务器时常需要实现节能等目的而关机或休眠。这导致监控拓扑结构不断变化,影响监控的部署和监控负载均衡。可见,监控的可扩展性、均衡性、易部署性十分重要。

(3)海量的资源产生海量冗余的监控信息,这些监控信息充斥网络,影响正常云任务的执行。这就要求在不影响实际监控任务的基础上有效过滤冗余信息,只呈现有价值的监控信息,减少不必要的网络开销,减轻监控负载。

(4)提供可视化监控窗口,管理员从而可以方便快捷地了解资源的使用情况。

目前,云环境下资源监控还存在一些难点,主要表现在以下几个方面。

(1)资源规模巨大。云计算平台通常由数个云数据中心组成,每个云数据中心又包含成百上千个物理服务器,每个物理服务器上又运行着数十台虚拟机,这样规模庞大的云平台必然给监控系统带来巨大的压力,同时影响云平台系统性能。

(2)资源异构性。由于历史原因,在不同的阶段,企业或云数据中心会根据需要购置不同的服务器,以及安装不同的操作系统和应用。这就导致企业内部或云数据中心服务器之间的配置千差万别,产生的异构性大大增加了监控的难度。

(3)资源多样性。云平台提供了诸如计算、存储等服务,而不同的服务需要监控的内容也不尽相同。

(4)资源动态性。被监控资源本身具有动态变化性,如物理节点和虚拟机动态地增减,因而需要不时地更新监控目录。

(5)性能与监控矛盾性。在保证一定监控能力的同时,不能影响系统的正常运行,需要尽可能地减少系统开销。如何有效平衡监控性能和系统正常运行也是一个难点。云资源监控系统主要任务就是对物理节点或虚拟机的资源使用情况进行动态的跟踪,以便系统管理员全面地了解系统的运行状态。为了达到有效监控的目的,需要对资源多方面、多层次的监控信息进行采集、传输和处理。但资源监控作为系统管理员管理云平台的依据,只是云平台稳定运行的一种辅助手段,因而要求监控系统尽可能少地占用系统资源,不影响云平台的正常运行;同时尽量保证一定的监控能力,满足一些监控需要,以实现有效监控和低资源消耗的有效平衡。

2. 监控架构

目前,大规模监控系统主要采用两种监控架构:集中式监控架构和分布式监控架构。这两种监控架构的侧重点不一样,适用的监控范围也不一样,有时,二者相互补充,以满足云平台各种不同类型的监控需要。

1)集中式监控架构

集中式监控架构由监控节点(主节点)和被监控节点(数据节点)组成,即该架构属于客户端/服务器模式,监控节点直接监控所有被监控节点的运行状态,同时处理、存储获取的监控数据,并加以展示。

集中式监控架构如图1.33所示,需要在被监控节点上安装监控代理守护进程,该守护进程负责采集监控信息,并周期性主动向监控节点推送监控信息,或者接收监控节点命令被动式推送数据,来达到与监控节点进行数据传输的目的。监控节点收集由监控代理守护进程推送的监控数据并分析这些数据,同时将这些数据在管理界面上展示或存储在数据库中。集中式监控架构适用于监控节点个数少,节点地理位置相对集中的环境。这种架构具有部署简单、易于管理、时延小等优点。这种架构的缺点是,只适用于集群规模小的情况,监控节点负载大容易导致节点故障,进而引发整个监控系统失效。

图1.33 集中式监控架构[107]

2)分布式监控架构

当节点规模很大时,集中式监控架构中监控节点将面临很大的监控压力,从而不能满足监控需要,于是分布式监控架构被提出。

如图1.34所示,分布式监控架构由监控节点、局部监控节点及被监控节点组成。首先为减轻监控节点的监控负载,根据要求将整个监控网络划分为多个局部监控域,每个局部监控域内部都采用集中式架构并设置一个局部监控节点,该节点负责监控该监控域内所有被监控节点,独立处理本域的监控数据,并将信息向上汇报。而监控节点不再直接接收被监控节点的监控信息,而是接收局部监控节点汇聚的本域监控信息。分布式监控架构可以看作由多个局部的集中式监控架构构成。

图1.34 分布式监控架构[107]

这种架构的优势在于,将大量的数据收集工作分散到每个子监控系统,大大减少中心监控服务器的监控压力,从而降低网络负载,限制故障范围,降低整个系统故障风险。这种架构的缺点是,监控系统部署复杂,需要为每个监控节点指定合适的局部监控节点,并且局部监控域不可能无限,局部监控域的扩大伴随着增设局部监控节点的需求,会增加监控成本。另外,一些云数据中心采用廉价、性能一般的服务器,导致节点状态频繁变化,使得网络拓扑结构经常变化,为均衡各局部监控域的监控任务带来了难题。