云计算的集群与分布式云计算论文

上传人:d**** 文档编号:141986996 上传时间:2022-08-24 格式:DOCX 页数:20 大小:43.17KB
返回 下载 相关 举报
云计算的集群与分布式云计算论文_第1页
第1页 / 共20页
云计算的集群与分布式云计算论文_第2页
第2页 / 共20页
云计算的集群与分布式云计算论文_第3页
第3页 / 共20页
点击查看更多>>
资源描述
云计算的集群与分布式摘要尽管我们已经有了高速的个人计算机,尽管我们有了储存大量信息的网络, 但是随着社会的发展我们对其的要求也越来越高,为了满足越来越高的需求水平 并降低升级的成本,一个新的观念出现了,并为IT业的发展指明了方向,这就 是“云计算”。无疑,近年来,云计算已经成为最热门的技术话题之一,云计算技术已经成 为了继个人计算机、互联网之后出现的第三次技术革命浪潮。国家“十二五”规 划纲要和国务院关于培育和发展战略性新兴产业的决定均把“云计算”作为 新一代信息技术的重要组成部分。由此可见“云计算”重要性和发展云计算的必 要性。本文将从云计算组成的角度来粗浅的介绍云计算的概念。关键词集群技术与虚拟化,并行计算技术,分布式文件系统。第一章绪论1.1课题背景技术是云计算发展的基础。首先是云计算自身核心技术的发展,如:硬件技 术,虚拟化技术,并行编程模型、海量数据分布存储技术、海量数据管理技术、 云平台管理技术;其次是云计算赖以存在的移动互联网技术的发展,如:高速、 大容量的网络,无处不在的接入,灵活多样的终端,集约化的数据中心,WEB技 术。可以将云计算理解为八个字按需即用、随需应变,使之实现的各项技术已 基本成熟。1.2什么是云计算云计算是通过使计算分布在大量的分布式计算机上,而非本地计算机或远程 服务器中,企业数据中心的运行将与互联网更相似。这使得企业能够将资源切换 到需要的应用上,根据需求访问计算机和存储系统。按照云计算的服务层次可以把云计算服务分为基础设施即服务(IaaS),平 台即服务(PaaS)和软件即服务(SaaS)。IaaS :基础设施即服务IaaS(Infrastructure-as-a- Service):基础设施即服务。消费者通过 Internet可以从完善的计算机基础设施获得服务。PaaS:平台即服务PaaS(Platform-as-a- Service):平台即服务。PaaS实际上是指将软件研 发的平台作为一种服务,以SaaS的模式提交给用户。因此,PaaS也是SaaS模 式的一种应用。但是,PaaS的出现可以加快SaaS的发展,尤其是加快SaaS应 用的开发速度。SaaS :软件即服务SaaS(Software-as-a- Service):软件即服务。它是一种通过 Internet 提 供软件的模式,用户无需购买软件,而是向提供商租用基于Web的软件,来管理 企业经营活动。1.3云计算的基本技术高可靠的集群技术与虚拟化,并行计算技术,分布式文件系统。第二章集群技术与虚拟化2.1集群技术集群技术就是将多台服务器用集群软件连接在一起,组成一个 高度透明的大型服务器群的计算机系统,作为一个整体为客户端提 供服务,客户 端能共享网络上的所有资源,如数据或应用软件等, 同时客户端的用户并不关心其应用Server运行在那台服务器上, 只关心其应用Server是否能连续工作。当集群系统内某一台服务 器出现故障时,其备援服务器便立即接管该故障服务器的应用服务, 继续为前端的用户提供服务。从客户端看来,集群中的所有服务器 是一个系统,就像一台大型的计算机系统,其上运行着客户端需 要的应用服务。集群系统能够保证用户的业务是连续的并且具有持 续可用的特性,即具有7x24的可用性,从而将系统停止运行的时 间降到了最低,提供了高可靠性的保障。从客户端看来,集群中所有的服务器是一个整体,就像一台大 型的计算机,为了完成一些普通计算机或服务器难以胜任的计算密 集型应用,集群可以可以集中几十台甚至成百上千台计算机服务器 的计算能力来提供更高的计算能力。用户若想扩展系统能力性能,往往不得不购买更高性能的服务 器并停止系统运行来更新设备,但是采用集群技术的话,只需将新 的服务器加入集群中,并不需要停机和极其昂贵的服务器,通过大 量性价比高的服务器的叠加和集合就可以做的更出色,大大提高了 系统的可扩展性并大大降低了成本。集群技术在提高性能、增强可靠性的同时提供了更好的可扩展 能力和更低的成本。2.1.1高可用性集群在一年之内可达99.99%可用性时,这样的集群系统我们称 为高可用性的集群系统。可用性:当用户需要数据和服务时,计算机能够根据请求完成 响应则定义为可用性。可用性是以百分比形式表示的一种系统正常 工作的时间。高可用性系统是由集群软件监控、具有多台服务器互 相冗余的系统。此系统通过集群软件提供的故障监测和故障处理能 力,可提供业务连续性的能力。高可用性系统的主要目的是将计划 内及计划外宕机时间减少到最少;其次是减少恢复一个失败系统的 时间,即应在最短的时间内恢复系统。的运行。高可用性即确保计 算机系统的运行时间达到99.99%。容错系统:是由一台计算机系统采用专用的、昂贵的和有复 制功能的设备组成的系统。如计算机内部采用特殊的双主机板、CPU 锁步运行、冗余磁盘、专有的操作系统等。它是为防止系统出错、 获得较高可用性的一种方法。容错性是整个操作系统统筹设计的一 个功能,系统完全自发、自动响应系统故障,并提供不问断服务。高可用性的集群系统主要包括以下几方面硬件组件:(1) 服务器组:在高可用性的集群系统中每个节点的服务器必 须有自己的CPU、内存和磁盘。每个服务器节点的磁盘是用于安装 操作系统和集群软件程序。(2) 对外提供服务的网路:集群系统中的服务器一般采用TCP/ IP网络协议 与客户端相连。每个服务器上都有自己的应用服务, 客户端必须通过集群服务器 中的网络通路来得到自己的服务。(3) 心跳信号通路:在高可用性的集群系统中每个节点必须有 心跳接口,用于服务器节点之间互相监视和通信,以取得备援服务 器的工作状态。(4 )数据共享磁盘:在高可用性的集群系统中由于运行的都是 关键业务,故使用的存储服务器都应是企业级的存储服务器,这 些存储服务器应具有先进技术来保障其数据安全。一般数据放在 企业级的存储服务器的共享磁盘的空间中,它是各服务器节点之 间维持数据致性的桥梁,各服务器节点在集群软件的控制下不 会同时访问共享磁盘。2.1.2负载均衡性集群当前,无论在局域网还是在广域网上,业务量的发展都超出了 过去最乐观的估计,即使按照当时最优配置建设的网络,也很快会 感到吃不消。尤其是各个网络的核心部分,其数据流量和计算强度 之大,使得单一设备根本无法承担,而如何在完成同样功能的多个 设备之间实现合理的业务量分配,使之不致于出现一台设备过忙、 而别的设备却未充分发挥处理能力的情况,负载均衡集群机制也因 此应运而生。负载均衡建立在现有网络结构之上,它提供了一种廉 价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能 力,提高网络的灵活性和可用性。它为用户提供更好的访问质量; 提高服务器响应速度;提高服务器及其他资源的利用效率避避,免 了网络关键部位出现单点失效。负载均衡又可以分为静态负载均衡和动态负载均衡。静态负载均衡:它只是把有可能拥塞于一个服务器的负载交给 多个服务器分担。就像轮流值日制度,把任务分给大家来完成,以 免让一台服务器超负荷运算。不过,这种意义上的均衡一般是静态 的,也就是事先确定的“轮值”策略。动态负载均衡:它是通过一些工具实时地分析数据包,掌握网 络中的数据流量状况,把任务合理分配出去。结构上分为本地负载 均衡和地域负载均衡(全局负载均衡),前一种是指对本地的服务器 集群做负载均衡,后一种是指对分别放置在不同的地理位置、在 不同的网络及服务器群集之间作负载均衡。在现有网络结构之上, 负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐 量,加强网络数据处理能力,提高网络的灵活性和可用性。它主要 解决网络拥塞问题,服务就近提供,实现地理位置无关性;为用户 提供更好的访问质量,提高服务器响应速度,提高服务器及其他资 源的利用效率,避免了网络关键部位出现单点失效。负载均衡集群通常采用专门的负载均衡路,负载均衡器通过虚 拟IP地址方法,解决了轮流排程所面临的许多问题。使用了负载 均衡器的集群系统,在外部看来,像是具有一个IP地址的单一服 务器一样,当然,这个IP地址是虚拟的,它映射了集群中的每一 台机器的地址。所以,在某种程度上,负载均衡器是将整个集群的 IP地址报漏给外部网络。当请求到达负载均衡器时,它会重写该 请求的头文件,并将之指定到集群中的机器上。如果某台机器被从 集群中移除了,请求不会别发往已经不存在的服务器上,因为所有 的机器表面上都具有同一个IP地址,即使集群中的某个节点被移 除了,该地址也不会发生变化。而且,internet上缓存的DNS条 目也不再是问题了。当返回一个应答时,客户端看到的只是从负载 均衡器上所返回的结果。也就是说,客户端操作的对象是负载均衡 器,对于其更后端的操作,对客户端来讲,是完全透明的。负载均衡路由设备由于采用了特殊的硬件结构及专门开 发的配置软件,通常易于配置及管理,性能较好,但是其价格较高 负载均衡器的优点:(1)通过故障恢复机制获得高可靠性。某一故障发生在当集 群中某个节点不能处理请求,需将请求重新导向到其他节点时,负 载均衡器会将之发送到集群中其他的节点上。(2)便于统计计量。既然所有的请求都经过负载均衡器,那 么系统就可以确定活动的数量,在任何实例访问中的活动的数目, 应答的次数,高峰负载次数,以及在高峰期和低谷期的会话的数目, 还有其他更多的。所有的这些统计信息都可以被很好的用来调整整 个系统的性能。负载均衡器的缺点在于费用、复杂性以及单点失败的。由于所有的 请求均是通过硬件负载均衡器来传递,因此,负载均衡器上的任何 故障都将导致整个站点的崩溃而且负载均衡器将会成为整个系统 性能提升的瓶颈。2.2虚拟化技术随着近年集群、网格甚至云计算的广泛部署,虚拟化技术在商 业应用上的优势日益体现,不仅降低了 IT成本,而且还增强了系 统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与 生活中。虚拟机管理器(VMM)是整个虚拟机系统的核心,它承担了资源 的调度、分配和管理、保证多个虚拟机能够相互隔离的同时运行多 个客户操作系统。虚拟机管理器运行在硬件平台之上,操作系统之 下,不同的系统需求有不同的实现方式。虚拟机管理器主要包括对CPU的虚拟化,对内存的虚拟化,对 I/O的虚拟化。2.2.1 CPU的虚拟化CPU的虚拟化是为每个虚拟机提供一个或多个虚拟 CPU(virtual CPU,VCPU)。多个虚拟CPU分时复用物理CPU,任意 时刻一个CPU只能被一个虚拟CPU使用。VMM必须为各个虚拟CPU 合理分配时间片并维护所有虚拟CPU的状态,当一个虚拟CPU的 时间片用完需要切换时,要保存当前虚拟CPU状态,将被调度的虚 拟CPU的状态载入物理CPU。因此VMM对于CPU虚拟化需要解决一下两个问题:(1)虚拟CPU的正确运行。(2)虚拟CPU的调度。虚拟CPU正确运行的关键是保证虚拟机的指令正确执行并且 保证各个虚拟机之间不互相影响。现有的实现技术包括模拟执行和 监控执行。模拟执行是指由VMM模拟所有指令的运行效果,包括解 释执行和二进制代码翻译。通常用在物理机器指令集与虚拟机指令 集不同的情况下,模拟执行方式效率较低。监控执行是指虚拟机的 绝大部分指令都能在物理主机上直接执行,少量可能影响虚拟机运 行或影响其他虚拟机状态的指令,必须由VMM监控并模拟其执行效 果,监控执行方式效率较高,在理想状态下,虚拟机甚至可以达到 接近物理主机的速度。虚拟CPU的调度是指由VMM决定当前哪一个虚拟CPU实际在物 理CPU上运行。虚拟CPU的调度除了保证虚拟机之间的性能隔离性, 还应该保证虚拟CPU的性能,保证调度的公平性:要考虑调度算 法既能够充分利用物理CPU资源,又能实现精确的CPU资源分配; 要根据虚拟机上运行的应用服务的特点以及虚拟机之间的依赖关 系合理调度虚拟CPU。对运行虚拟机的环境来说,有如下调度需求:充分利用CPU资源:为了减小虚拟化的性能开销,使虚拟机尽 可能接近物理主机的性能,调度算法需要保证物理CPU资源能充分 利用,不浪费任何处理器周期。因此,通常采用连续工作型调度算 法。性能隔离:VCPU的调度必须保证一个VCPU的运行不会影响其 他VCPU的性能。考虑虚拟机之间的不对等:目前虚拟机常见的应用是服务器整 合,可以把若干应用服务器合并在一台物理主机上分别作为不同的 虚拟机同时运行。这些虚拟机可能有不同的应用特点,例如,交 互/批处理,I/O密集/计算密集等,VCP U的调度策略必须考虑 这些虚拟机之间的不对等。常用的VCPU的调度算法有:BVT算法,sEDF算法,credit算法。2.2.1.1 8寸法BVT(Borrowed VirtualTime)算法:BVT是一种公平性优先的 调度算法。该算法将时间分为实际时间和虚拟时间:真实时间为硬 件计时器记录的时间;虚拟时间为对真实时间经过某种规则计算后 得到的时间值。该算法用虚拟时间来监控进程的执行时间,每次总是调度具有 最早的有效虚拟时间的VCPU。这种调度算法允许这些操作系统 “借” 一些时间片,就是说:在一定范围内将未来分配给它运行的 时间片先“借”过来用一段时间。这种“借”过来的虚拟时间片只 能是当前真实的时间片中的某个虚拟时间片,不能借下一个真实时 间片中的虚拟时问片。在系统初始化时,每个VCPU将分配一个权 值来代表该VCPU能获得的处理器份额。VCPU根据其权值来实现处 理器的公平共享。系统用实际虚拟时间和有效虚拟时间来记录 VCPU运行状态。其计算方式如下:每一个 VCPU 维护一组状态:Et,At,Wt,warpBackt,其中: Et表示它某时刻t的EVT; At表示它实际的virtual time; Wt 表示它可以借的virtual time; warpBackt表示是否允许借 virtual time。当选择下一个要运行的VCPU时,选择Et最小的VCPU,Et按 照下式计算:Et=At-(warpBackt?Wt: 0)若是延迟敏感的VCPU,warpBackt是1,需要从实际的At减 去一个Wt值,从而能够获得较小的Et,使得能较早执行。BVT的优缺点:BVT调度算法的优点在于可以将物理时间片公平、均匀地分配 两次被调度的时间间隔不会超过一个真实的时间片;能够满足I/O 密集型和实时应用的低时延要求,能较好地调度某些实时性要求比 较高的操作系统;在单CPU和多CPU环境下的调度开销都比较小。BVT调度算法的缺点:首先,每当当前虚拟机被加载运行时,它将获得整个CPU。用户不 能把某个将某个虚拟机对CPU的使用限制在某个比例以下。其次, 每个虚拟机只能借用分给它的时间片部分,而不会剥夺其他虚拟机 的时间片。即当确定了各个虚拟机的时间片分配比例后,这个比例 在下次分配之前不会改变。2.2.1.2 sEDF 算法简单最小时限调度 sEDF(simple Earliest Deadline First) 源于EDF(Earliest Deadline First)算法是一种动态调度算法, 用于实时操作系统中。他将所有任务放在优先级队列中,当发生调度事件时(如任务 结束、新任务加入等),从队列中找出时限最短的任务并调度运行。 sEDF是一种最小时限调度算法,它为每个VCPU设置一个三元组(s, p,x),其中s,p指的是在p毫秒内,虚拟机至少运行s毫秒,而 x指的是如果在p时间片内,还有空余时间的话,是否允许该VCPU 占用这些空余的时间片;而每个VCPU都有一个“最迟调度时 间”(例如,0-100ms这个时间片内,若VCPU至少运行30ms那么 它的最迟运行时间是70ms),sEDF用一个队列管理所有当前周期内 还有可运行时间的VCPU,这些VCPU按照时限递增排列;用一个等 待队列管理当前周期的运行时间已用完的VCPU,这些VCPU按照下 一周期的开始时间递增排列。每次调度时,从可运行队列头取得可 以运行的VCPU。如果虚拟机A还在运行,虚拟机B的调度时间片 已经到来,那么sEDF将选用虚拟机B进行调度。sEDF的优缺点:sEDF调度算法是根据任务满足截止期限的紧迫性,来修改任 务的优先级,以保证最紧迫的任务能够及时完成。当系统的负载相 对较低时,这种算法非常有效;但是当系统负载极端沉重时,这就 会使大量的任务发生时间错误,因此很可能使一些进程来不及处理 而夭折。在sEDF算法中,一旦VCPU的调度参数被初始化后,就不 能根据该VCPU的运行状况进行修改。sEDF算法同时支持连续工作和断续工作模式,在断续工 作模式下可以精确限定某个虚拟机使用的CPU资源比例,即使没有 其他虚拟机运行,该虚拟机也只能使用一定的CPU资源。sEDF并 不支持全局(多个CPU情况下)的负载均衡。例如存在如下分配: 分配 CPU1: VCPU-1- 80% CPU,分配 CPU2: VCPU-2- 80% CPU, 如果 此时有VCPU3,需要30% CPU空间,那么VCPU3将无法被分 配和加载。即使两个CPU的剩余部分相加起来足够VCPU3的使用, 但是由于每个CPU的剩余部分都不足,VCPU3只能等待。2.2.1.3 credit基于额度的调度算法每个CPU管理一个本地可运行的VCPU队列,该队列根据VCPU的优 先级排序,每个VCPU的优先级可能是over或者under,表示该VCPU 当前是否已经透支了它应该分配到的CPU资源。当一个VCPU被放 入一个运行队列时,将其插在相同优先级的VCPU后面。一个VCPU 运行时,将消耗它的CPU额度。每隔一段时间,由一个结算线程重 新计算每个VCPU消耗了或者获得了多少额度。当额度为负时,则 将优先级改为over;直到一段时间以后,额度又积累为整数,则 优先级变为under,每结算一次,则运行队列要重排一次。当一 个VCPU的时间片用完或被阻塞时,排在CPU的运行队列头的VCPU 将被调度运行。若此时该CPU的运行队列中没有优先级为under 的VCPU,则将从其它CPU的运行队列中寻找一个under的VCPU, 也就是说,当一个CPU空闲时,将运行等待其它CPU的VCPU。这 一策略保证了虚拟机共享整个物理主机的资源,也保证了在整个物 理主机环境内所有CPU的负载均衡,也保证了对系统资源的充分利 用:当系统中有可运行的VCPU时,不会有任何一个CPU空闲。2.2.2内存虚拟化内存虚拟化是VMM的重要功能之一。VMM通常采用分块共享的 思想来虚拟计算机的物理内存。也就是说,VMM需要将机器的内存 分配给各个虚拟机,并维护机器内存和虚拟机所见到的“物理内存 的映射关系,使得这些内存在虚拟机看来是一段从地址0开始的、 连续的物理地址空间。现代计算机通常都具备内存分页保护机制, 这给VMM进行内存虚拟化提供了必要的硬件支持,因为VMM能够以 页面为单位建立虚拟地址到机器地址的映射关系,并利用页面权限 设置实现不同虚拟机间内存的隔离和保护。但是,由于客户操作系 统本身也会进行叶式内存管理,虚拟机与传统计算机相比,其内存 系统多了一种地址,共包括以下3种地址:(1) 机器地址(machine address)指真实硬件的机器地址, 即地址总线上应该出现的地址信号。(2) 物理地址(physical address)指经过VMM抽象的、虚 拟机所看到的伪物理地址。(3) 虚拟地址(virtual address)指虚拟机提供给其应用程序 使用的线性地址空间。显然,VMM的内存模块负责完成物理地址到机器地址的映射, 将这个映射记为f;虚拟机的内存管理模块要完成虚拟地址到物理 地址的映射,将这个映射记为g,则虚拟地址、物理地址和真实地 址之间的关系。虚拟机会把虚拟地址映射到物理地址,而VMM再进一步把物理 地址映射到机器地址。在两个不同的虚拟机中的进程,分别有一个 页表(page table)进行地址转换。页表将进程的虚拟地址转换为物 理地址。为了将物理地址转为最终使用的机器地址,虚拟机管理器 维护着从物理地址到机器地址的真正的页表。如图所示。为了使虚拟机系统具有更好的伸缩性和可扩展性,在充分保证 虚拟机访问内存的性能的前提下,提出了理想的VMM应该提供以下 一些内存管理功能:(1) 按需取页只有当虚拟机真正需要的时候,VMM才将物理 内存分配给它,而不是简单地将固定大小的内存空间划分给虚拟机。 按需取页能够提高内存资源的利用率。(2) 虚拟存储VMM能够利用交换(swap)等技术,给虚拟机提 供超过实际机器内存大小的内存空间。虚拟机上的操作系统能够像 运行在裸机上一样,透明地使用VMM提供的整个“物理内存。(3) 内存共享VMM应该允许虚拟机之间只读地共享完全相同的内 存区域,从而缓解大量虚拟机并发运行时的内存资源紧缺。实现内 存共享的重要基础是内存写时复制机制(copy On write)。2.2.3 I/O虚拟化I/O虚拟化往往是VMM设计最复杂的部分。它涉及中断的捕获 和分发、I/O地址空间的隔离和转换、大量I/O数据的传递、DMA 页面的保护等I/O的效率对于系统的成败更加至关重要。实现I/O 虚拟最简单的方法是:将一台物理主机作为特殊的I/O处理机,它 连接所有I/O设备,其它任何接点需要进行I/O操作时都要先与该 主机联系,由它完成I/O操作,再将操作的结果用虚拟中断的方法 通知请求接点。这种设计的优点在于实现简单、易于维护,但是其 缺点也是显而易见的,即瓶颈问题和单点故障问题。为了提高整个 系统的I/O能力,人们当然希望每个接点都具有I/O吞吐能力: 它对于上层的操作系统仍然表现为一个单一的I/O设备,而I/O 请求会被分流到各个不同的结点并行处理,从而大大提高I/O吞 吐量。对于网络设备,可以通过路由技术实现上述功能。而对于 存储设备,应该在实现网络I/O高效分流的基础上,充分利用现 在已近非常成熟的分布式存储系统,结合网络文件系统来实现。 由于I/O虚拟化技术目前仍然不够成熟,即使在很多传统的系统 级虚拟化系统中,其效率仍然比较低下。因此,关于多级I/O虚拟 化 技术仍然存在广阔的可探索空间。2.3虚拟化集群在集群中由一台vCenter主机可以管理多台的vServer主机, 而在这些vServer主机上可以运行多台的虚拟机,这些虚拟机可以 组成虚拟机池。vCenter通过对虚拟机池的管理间接地实现对集群 中物理资源的管理。其中vCenter的重要功能是保证虚拟化的集群 中高可用性和负载均衡性的实现。在物理服务器上创建出的虚拟机 可以组成虚拟机池,对于多虚拟机来说,一个非常重要的方面是减 少用户对动态的和复杂的物理设备的管理和维护,通过软件和工 具实现管理任务。通常将应用程序部署到服务器内部运行的多个虚 拟机中。通过一个一致的方式管理运行于大量物理结点之上的虚拟 机系统,以便能够形成一个基于服务器合并技术的高性能虚拟计算 环境以及高效管理技术。服务器方面,采用虚拟化技术的主要驱动 力就是服务器合并,主要是通过在集群中的每一个结点上安装 vServer系统,然后就可以在这台物理结点上创建虚拟机,再把这 些虚拟机根据具体需求组成任意大小规模的虚拟池来达到服务器 合并的目的。这样使得管理人员只需与控制结点进行交互,而集群 事实上可以包含很多的处理器或结点。从vCenter的角度来看,通 过服务器合并减少管理复杂度,把不同资源整合成具有巨大能力的 系统,提高了系统性能。2.3.1虚拟化集群总体框架要把虚拟化技术引入到集群中,主要是通过在集群中的每一个 结点上安装vServer系统,然后就可以在这台物理结点上创建虚 拟机,再把这些虚拟机根据具体需求组成任意大小规模的虚拟池来 达到服务器合并的目的。这样使得管理人员只需与控制结点进行交 互,而集群事实上可以包含很多的处理器或结点。从vCenter的 角度来看,通过服务器合并减少管理复杂度,把不同资源整合成具 有巨大能力的系统,提高了系统性能。一个典型的虚拟化集群包括:一个vCenter、多个vServer和 一套共享存储。vServer直接安装在服务器硬件上,vServer将一 个物理服务器划分 为可在同一物理服务器上运行的多个安全、隔 离的、可移植的虚拟机。集群中的所有的vServer主机通过光通道 或者网络连接到共享的存储,这样当一台主机发生故障时,可以将 主机上的业务转移到其它主机上,由于使用了共享存储,使转移后 的业务的执行不会因为存储设备的关系而受到影响。在集群中, vCenter不是直接对vServer的主机进行管理,而是对运行在 vServer上的虚拟机进行管理,这样间接的对vServer进行了管理。vCenter的所有管理操作都是在vCenter Client的操作界面上进 行。在对虚拟机进行集群化架构中,主要的功能实现部分由 vCenter和vServer两大模块组成。2.3.2 vCentervCenter的主要功能是管理集群中的vServer。一个集群中只 有一台主机安装vCenter,这台安装vCenter系统的主机在集群中 处于核心管理的位置,管理集群中其它vServer主机。vCenter具有以下功能:(1) 寻找可用主机:首先vCenter会在集群当中寻找可用的主 机资源,即安装有vServer系统并且与vCenter连接正常主机, 这样的主机才能与vCenter正常通信,才能接受vCenter的控制。(2) 创建硬件池:在vCenter寻找到机器中所有可用主机资源 以后,会对这些主机根据需要创建任意数量的硬件池,也就是对这 些主机进行划分和组合,硬件池的大小由包含的主机数量而定。(3) 创建虚拟机池:vCenter创建出硬件池以后,可以在硬件 池的基础上创建虚拟机池。,虚拟机池是由一定数量的虚拟机组成, 这些虚拟机是由vCenter创建出来。没有启动的虚拟机只是一个资 源标记,需要为虚拟机划分一定的CPU和内存资源,并且指定一块 存储设备,这样虚拟机才能启动和运行。(4) 启动虚拟机:vCenter在启动一台虚拟机的时候,会选择 资源占用率最低的主机来运行,这样体现出集群的负载均衡性。负 载均衡性将是启动虚拟机和管理虚拟机的重点功能。启动一个虚拟机可以分为以下的步骤:(1) 寻找可用主机 由vCenter负责在集群中寻找可用主机,在 集群中除了 vCenter以外的主机 都是安装了 vServer,集群中的 可用主机是指vCenter能收到vServer心跳包的主机,能收到 vServer的心跳包,表明vServer与vCenter的通信正常,这样 vCenter才能对vServer进行管理和控制。(2) 创建虚拟机创建虚拟机是为虚拟机起一个虚拟机名,重要 的是为虚拟机指定一个UUID,UUID是一个资源标签,唯一的标识 了一个虚拟机,这样可以与集群中的其它虚拟机区别开来,便于 vCenter对集群中的虚拟机管理。(3) 在硬件池中寻找资源占用率最低的主机启动一台虚拟机 的时候并不是在集群中随机的指定一台主机来运行虚拟机,而是 优先选择一台资源占用率最少的主机来运行,这一步骤实现集群当 中的负载均衡性。(4) 分配虚拟CPU /内存 预先为虚拟机划分一定的CPU和内存 资源,这时候为虚拟机划分的资源只是资源标签,等真正运行虚拟 机的时候,会在虚拟机所运行的主机上虚拟出与预先划分好的资源 数量相等的硬件资源。(5) 启动启动虚拟机之前已经为虚拟机指定了 CPU /内存资源,也 指定了存储设备。这时可以由vCenter发出启动虚拟机的命令, 这个命令会传递给选定的vServer(即资源占用率最低的主机), vServer会通过虚拟机启动一个具有独立CPU、内存、I/O设备和 共享存储设备的虚拟机,除了存储设备,其它的设备都是在硬件物 理资源的基础上虚拟出来的。2.3.3 vServervServer的主要功能是划分和管理共享存储。对主机的物理资 源(CPU、内 存、I/O)进行虚拟化。vServer同时给vCenter发送 心跳包,通知vCenter自己的 通信状态是否正常。(1)创建存储存储设备被所有的vServer共享,vServer会根 据需求从共享存储中划出一块设备供自己使用,如果虚拟机要在某 个vServer上运行,那么虚拟机就会占用该vServer的存储设备。 创建存储是对共享存储设备的组织和划分,vServer利用工具对磁 盘设备进行格式化,并在磁盘设备上创建物理卷,逻辑卷组,逻辑 卷,创建逻辑卷组是为了对磁盘设备进行合并,这样可以对所有的 存储设备统一规划,方便重新分配。(2)监测资源空闲率vServer要实时监测自身硬件资源的占 用情况,主要是CPU空闲率,内存的空闲率和Swap交换空间的空 闲率,这三者的加权值将表明整个主机硬件资源空闲率的高低。每 台vServer上的加权值会返回给vCenter,由vCenter找出资源使 用率最低的主机。这一功能模块是集群虚拟化架构中实现负载均衡 性的基础。2.4本章小结虚拟化技术在提高硬件利用率、安全性、可维护性等方面的帮 助很大。而利用集群技术,则可以把多台服务器(物理的或者虚拟 的)组成一台虚拟服务器,对提高系统性能和可靠性的作用明显。 将集群技术和虚拟机技术结合起来应用在对服务器的管理中,虚拟 机把一台服务器分成多台,集群又把多台合成一台。这样一分一合, 表面上服务器还是那些服务器,实际上已经把各种负载重新优化组 合,更合理地分布在各处。从而物理服务器数量不变的情况下,达 到了类似于增加服务器的效果并可以实现计算资源利用的最大化。, 而且大大提高了灾难恢复速度。不过虚拟化技术是要在服务器上运行尽可能多的系统和应用,虚拟 化本身会带来系统开销,同时也要消耗部分资源。这个开销主要 集中在CPU资源消耗、内存资源消耗和硬盘存储资源消耗上。所 以虚拟化平台不适合 在低配置的机器上运行,高配置的单台机器 要比低配置的单台机器更适于 部署虚拟化系统,这算是虚拟机集 群化架构的不足之处。另外,虽然虚拟 化技术已经获得了长足发 展。但是面向复杂的不同时代的硬件设备,快速 高效的兼容特性 仍然难以迅速满足。第三章分布式并行计算技术3.1分布式并行计算概述云计算技术包括两个似乎对立的技术,这两个技术都是用于对 资源进行分配、使用和管理。一个技术是对资源进行分割,将资源的分配、使用的粒度变细, 上一章节介绍的虚拟化集群技术就是这样的技术。通过引入虚拟 主机,将物理主机的能力进行分割。简单地说,虚拟化技术就是对 资源进行拆分的技术。另一个技术是利用多个物理主机的能力完成一个任务。分布式 并行计算就是这样的技术。分布式并行计算将任务分解为多个子任 务分派给主机集群中的各个主机,子任务在多个主机上协调并行运 行。简单地说,分布式并行计算技术就是对资源进行聚合的技术。事实上,分布式并行计算才更加体现出云计算的本质。云计算 的名称和分布式并行计算、网格计算是一脉相承的。不过,分布式 并行计算应该只是并行计算的一种,从下文的分析可以看出,对 于云计算除了分布式并行计算这个主要的并行模式外,还有其他的 并行模式。并行计算pc集群为云计算的诞生奠定了基础。云计算就是在 PC集群的基础上发展起来的。云计算的机群由遍布全球的PC通过 广域网连接而成。并行计算的实现层次有两个:单机(单个节点)内部的多个CPU、多个核并行计算,虽 然单节点内部的并行计算不是实施云计算的主流,但由于目前多 CPU、多核已经成为主机提高性能的一个非常重要的方面。集群内部节点间的并行计算。对于云计算来说,更加强调的是 集群节点间的并行。目前,集群中的节点一般是通过IP网络连接, 在带宽足够的前提下,各节点不受地域、空间限制。所以,云计算 中的并行计算在很多时候被称作分布式并行计算。不过,多CPU、多核是主机的发展趋势,所以在一个集群内, 一般2个级别的并行都要求存在,集群内多节点之间并行,节点内 部多处理器、多核并行。节点间的并行计算,通常就等同于常说的 分布式并行计算。分布式并行计算和虚拟化成熟的产品不同,并行计算没有成熟 的产品,只有相对成熟的工具。并行计算的实现,依赖于开发者和 用户对业务的熟悉,对并行工具正确、熟练的使用。并行应用软件从需求分析到设计再到部署,可以分为3个步骤。(1)在需求分析阶段,根据业务特点,将任务尽可能地分为 可以并行执行的多个任务。这是实现并行计算最基础的、往往也是 最有效的阶段。(2)在设计、编码阶段,采用并行工具进行程序设计。这个 阶段所应用的并行技术是最核心的并行技术,难度最大,技术也不 成熟,而且目前大部分技术人员对这个阶段 所应用的技术还没有 足够程度的掌握(3)在应用部署阶段,采用并行部署架构和工具部署应用。 这个阶段就是通过部署,使应用所占用的设备能够实现负载均衡。 负载均衡本质上也属于并行计算。常用的方法为采用负载均衡设 备,如F5交换机、ESB等。这个阶段所涉及的技术比较成熟,已 为业界广泛采用。并行计算编程模型一直是并行计算研究领域中的重点内容,它 和并行计算机体系结构紧密相关。共享存储体系结构下的并行编程 模型主要是共享变量编程模型,它具有单地址空间、编程容易、可 移植性差等特点。分布式存储体系结构下的并行编程模型主要有消 息传递编程模型和分布式共享编程模型两种。消息传递编程模型的 特点是多地址空间、编程困难、可移植性好;分布式共享编程模型 是指有硬件或软件的支持,在分布式体系结构下实现的具有共享变 量编程模型特点的编程模型。并行计算编程模型一般包括两类:一 类是在原有串行编程语言基础上,引入并行控制机制,提供并行 API、运行库或者并行编译指令,这类模型包括OpenMP、MPI以及 MapReduce;另一类则是并行编程语言,其语言本身就是基于并行 算法的,相对影响比较大的主要有Erlang。前面说过,并行计算 的实现有两个层次,一个是集群节点间的并行,另一个节点内的并 行。OpenMP 一般用于实现节点内并行,MPI 一般用于实现节点间 的并行;而Erlang既可以实现节点间的并行,也可以实现节点内 的并行。本章重点分析OpenMP、MPI和Erlang这3个并行计 算编程技术。3.2 OpenMP目前从x86到小型机,多核是CPU的主流,对于单线程的程序, 多核的处理器并没有办法提升它的处理效能;对于多线程(multi thread)的程序,就可以通过不同的核同时计算来达到提高性能的 目的。当然,多线程程序的执行性能依赖于对任务的分解。多线程 程序的编写、维护,比单线程的程序要复杂不少。一般而言,采用 了多线程编程技术,只要主机是多处理器、多核或者拥有同时执行 多个线程的能力,那么多线程程序的执行性能还是远远高于单线程 的。传统的多线程程序编写一般有两种方法:(1)通过调用操作系统功能、开发工具自己的多线程控制语 句或控制函数来实现;(2)采用POSIX标准和方法,利用POSIX的线程控制库函 数来实现。这些方法都是通过主线程去产生多个子线程,由主线程把工 作拆开,分给各个子线程去运算,最后再由主线程回收、整合结果。 使用这两种方法存在以下问题:(1) 程序的开发复杂性较单线程程序增加很多。(2) 第一种方法的移植性还存在问题。(3) 若要具有好的扩展性,则更加复杂。多线程应该不只是 创建固定数量的线程,而应该随着CPU核数的增加而增加线程。如 果用上述方法,虽然可以实现良好的扩展性,但控制十分复杂。(4) 多线程对多核处理器的负载均衡调度需要开发者自己实 现,十分复杂。使用OpenMP则解决了上述问题。OpenMP是多线程的一种 编程方法,它的并行粒度是线程级别的。它的适用范围是单机内的 并行计算,可以很好地利用单机内多CPU或者多核。OpenMP就是 一套API和运行库,可以简化单机内的多线程开发,让设计人员和 开发人员的主要精力集中到对任务的理解和拆分上,而具体的细节 交给OpenMP去完成,用OpenMP的编程效率要远远高于使用一般函 数库或者操作系统自带函数库的多线程编程,也大大优于POSIX 标准和方法。OpenMP是作为共享存储标准而问世的。它是为在多 处理机上编写并行程序而设计的一个应用编程接口,包括一套编译 指导语句和一个用来支持它的函数库。OpenMP能通过伪指令,彳艮 简单地将程序多线程化。最简单的情形,甚至可以只加一行指导编 译程序的编译伪指令就可以将循环内的语句并行处理了。OpenMP 起源于C/C+,但目前已经有OpenMP的Java开发包,使其可以用 于Java编程。3.3 MPIOpenMP虽然很优秀,但只是单机内的并行计算技术。无论是 并行计算还是云计算,其并行计算的主流是主机之间的并行而并非 单机内的并行。因此MPI (message passing interface)才是并 行计算的代表性技术。1994年5月MPI标准诞生,该标准提出了 一种基于消息传递的函数接口描述。目前,MPI已发展到2.0版, 成为高性能计算的一种公认标准。MPI本身并不是一个具体的实 现,而只是一种标准描述MPI最为著名且被广泛使用的一个具体 实现是由美国Argoone国家实验室开发小组完成的MPICH,MPICH 是一个免费软件,它提供对Fortran和C语言等的绑定支持,以函 数库的形式提供给开发者使用。采用MPI在程序设计上有较大的自 由度,甚至可以用它实现Hadoop中的MapReduce功能。消息传递 方式是广泛应用于并行机的一种模式。特别是分布存储并行机。10 多年来,这种模式在重要的计算应用中已取得了实质进步。在设计 MPI时,目标不是选择采用现存消息传递系统中的某一个,而是充 分利用这些系统的最抽象特点。建立消息传递标准的主要优点是 可移植性和易于使用。以低级消息传递程序为基础的较高级和(或) 抽象程序所构成的分布存储通信环境中,标准化的效益特别明显。 消息传递标准的定义能提供给生产商清晰定义的程序库,以便他们 能有效地实现这些库或在某些情况下为库程序提供硬件支持,因此 加强了可扩展性。简单地说,MPI是为编写消息传递程序而开发 的广泛使用的标准。像这个接口一样,应为消息传递建立一个实际的、可移植的、有效的和灵活的标准。全部目标如下:(1) 设计一个应用编程接口 (不必为编译器或系统实 现 库);-允许有效的通信,避免存储器到存储器的拷贝,而允 许计算和通信的重叠,尽可能给通信协同处理器 卸载;(2) 对于接口,允许方便的C语言和Fortran 77联接;(3) 设定一个可靠的通信接口,用户不必处理通信失 败, 这些失败由基本的通信子系统处理;(4) 定义一个接口,提供更大灵活性的扩展;(5) 定义一个接口,它能在基本的通信和系统软件无重 大改 变时,在许多生产商的平台上实现,接口的语 义是独立于语言的;(6) 接口应设计成允许线索一安全(thread-safety)。MPI的一 个非常大的优势是大范围的可移植性,在标准Unix处理器间通 信协议的上层实现的MPI将给工作站群机系统和不同种类的工 作站网络提供可移植性。这个标准包括点对点通信、集合操作、 进程组、通信上下文、进程拓扑结构、与Fortran 77和C语言 绑定、环境管 理和查询、描述接口。3.4 ErlangErlang首先是一种类似于函数的编程语言,这种语言天生就 是为并行计算而设计的。本来这种比Java还古老的语言,一直无 人问津,但是主机的多处理器、多核的发展趋势,特别是云计算的 兴起,给Erlang又带来了生机。业界对于并行计算的探索一直没 有停止,尤其是云计算的发展促进了并行计算各种方法、模式的发 展,如 Java Concurrency 库、Intel 推出的 Threading Building Blocks库、微软为Robotics Studio提供的CCR库等。但这些措 施只是为先天串行的程序设计语言提供了后天的并行能力,属于亡 羊补牢。而Erlang则是先天并行的,在单台主机上利用多处理器 和多核的优势,Erlang将传统编程方法远远甩在后面。据说使用 Erlang编写的Yaws Web服务器,其并发性能是使用C编程的 apache的15倍! apache在并发4 000连接时就已经崩溃,而Yaws Web服务器可实现并发8万连接。Erlang不仅是程序设计语言, 还是包括一个类似于Java的虚拟机在内的一个完整的平台。通过 虚拟机,Erlang独立于硬件平台和操作系统,在这个平台上实现 了网络通信、内存管理、进程调度、并发机制和分布式计算等功能。 Erlang最初是为通信应用设计的,因此非常适合于构建分布式、 实时软并行计算系统。Erlang具有以下特点:(1) 并发性Erlang的轻量级进程可以支持极高的并发性, 而且在高并发的情况下内存使用相当少。Erlang的并发性并不会 受到宿主操作系统并发性的限制。(2) 分布式最开始Erlang的设计目标就是实现分布式环境, Erlang的一个虚拟机就是Erlang网络上的一个节点。一个Erlang 节点可以在另一个Erlang节点上创建自己的并发进程,而子进程 所在的节点可能是运行其他操作系统的服务器。不同节点之间可 以进行极为高效而又精确的通信,就像这些通信运行在同一个节点一样。(3) 健壮性Erlang内部建设有多种错误检测原语,可以通 过这些 原语来架设高容错性的系统。在分布式状态下,可以把系 统配置成具有Fail-over功能的分布式系统。当有其他节点出错 的时候,系统会把它的运行场景自动快速地切换到备份节点上。 Erlang支持9个9级别的故障率,一年只有几分钟的故障时间。(4) 软实时它可以提供毫秒级别的响应。(5) 热代码升级 对于不能中断运行的系统,Erlang允许程 序代码在 运行系统中被修改。旧代码被逐步淘汰后能被新代码替 换。在此过渡期间,新旧代码是共存的。这也使得安装bug补丁在 运行系统上升级而不干扰系统操作成为了可能。(6) 递增式代码装载用户能够控制代码被装载的细节。在嵌 入式系统中,所有代码通常是在启动时就被完全装载。在开发系统 中,代码是按需装载的,甚至在系统运行时被装载的。如果测试到 了未覆盖的bug,那么需替换有bug的代码。(7) 外部接口 Erlang进程与外部世界之间的通信使用和在 Erlang进程之间通信相同的消息传送机制。这种机制被用于和操 作系统通信、与其他语言编写的程序交互。使用Erlang编写出的应用程序运行时通常由成千上万个轻量 级进程组成,并通过消息传递相互通信。进程间上下文切换对于 Erlang来说仅仅只是一两个环节,比起C程序的线程切换要高效 得多了。使用Erlang来编写分布式应用要简单得多,因为它的分布式 机制是透明的,对于程序来说并不知道自己是在分布式运行。 Erlang运行时的环境是一个虚拟机,有点像Java虚拟机,这样代 码一经编译,同样可以随处运行。它运行时的系统甚至允许代码 在不被中断的情况下更新。另外,如果需要更高效的话,字节代码 也可以编译成本地代码运行。Erlang能够创建和管理大量的进程 (不是操作系统级别的)。那些进程在不同的操作系统上有同样的 行为,可以被垃圾回收,对运行地点透明,不会破坏其他进程的运 行。任意两个进程间完全独立,不共享任何状态,一切交流通过 消息来传递,当然也就无需上锁。这样的设计思想造就了适合解 决如下问题的Erlango(1) 系统高度并发Erlang具有优秀的并行性能,特别适合 高度并发操作。(2) 实时处理 在并行情况下,Erlang响应迅速,性能优良。(3) 计算高度分布Erlang适合集群节点间的并行,也就是 基于网络的分布式并行。(4) 系统要求高度可靠 每年的脱机时间以分钟算,甚至永不 宕机。(5) 可靠性高Erlang内容的检测原语,极大地提高了系统 的容错 性,进而提高了系统的可靠性。(6) 系统要求持续在线更新对于经常需要更新、升级的系统, Erlang 能够在线更新,无需中断系统运行,新旧代码可以同时运 彳亍。3.5本章小结并行计算技术是云计算技术的骨干。对于大型应用系统实施云 计算的主要内容就是实施并行计算。并行计算技术除了目前炙手可 热的MapReduce以外,值得推荐的还有OpenMP、MPI和Erlang。 这3个技术主要应用于并行程序的开发和其他并行策略(如SOA) 一起,用于从根本上实现应用的并行化,以提高应用运行效率和可 靠性,降低采购和运营成本。第四章分布式文件系统4.1文件系统文件系统是操作系统的一个重要组成部分,通过对操作系统所 管理的存储空间的抽象,向用户提供统一的、对象化的访问接口, 屏蔽对物理设备的直接操作和资源管理。根据计算环境和所提供功能的不同,文件系统可划分为四个层 次,从低到高依次是:(1)单处理器单用户的本地文件系统(如 DOS的文件系统);(2)多处理器单用户的本地文件系统(如OS/2 的文件系统);(3)多处理器多用户的本地文件系统(如Unix的本 地文件系统);(4)多处理器多用户的分布式文件系统(如Lustre 文件系统)。分布式文件系统(Distributed File System)是指文件系统 管理的物理存储资源不一定直接连接在本地节点上,而是通过计算 机网络与节点相连。上述按照层次的分类中,高层次的文件系统都 是以低层次的文件系统为基础,实现了更高级的功能。比如(2)需 要比(1)多考虑并发控制(Concurrency Control),因为可能存在 多个处理器同时访问文件 系统的情况;(3)需要比(2)多考虑数 据安全访问方面的设计,因为多个用户存在于同一个系统中,保 证数据的授权访问是一个关键;(4)需要比(3)多考虑分布式体系 结构带来的诸多问题,比如同步访问、一致性等。随着层次的提高, 文件系统在设计和实现方面的难度也会成倍的提高。计算机技术 在飞速的发展,文件系统面临的新的挑战也随之而来:如何管理更 多的设备,提供更好的性能,更加有效地降低管理成本等。各种新 的存储技术和分布式文件技术都被不断地设计和实现出来,以满足 用户日益增长的需求。基本的分布式文件系统:网络文件系统(NFS)、虚拟文件系统 (VFS)、Andrew 文件系统(AFS)4.2体系结构分布式文件系统的体系结构在多年来经历了多次变化。这其中 有软硬件技术发展的作用,也有应用需求变化的因素。下面我们根 据不同的标准分析一下多年来分布式文件系统设计和实现过的主 要的体系结构。4.2.1数据访问方式在传统的分布式文件系统中,所有的数据和元数据都存放在一 起,通过服务器提供。这种模式一般称之为带内模式(in-band mode)。随着客户端数目的增加,服务器就会成为整个系统的瓶颈。因 为系统所有的数据传输和元数据处理都要通过服务器,不仅单个服 务器的处理能力有限,存储能力受到磁盘容量的限制,吞吐能力也 受到磁盘I/O和网络I/O的限制。于是一种新的分布式文件系统 的结构出现了,那就是利用SAN技术,将应用服务器直接和存储设 备相连接,大大提高数据的传输能力,减少数据传输的延时。在这 样的结构里,所有的应用服务器都可以直接访问存储在SAN中的 数据,而只有关于文件信息的元数据才经过 元数据服务器处理提 供,减少了数据传输的中间环节,提高了传输效率
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!