《云计算毕业设计 .doc》由会员分享,可在线阅读,更多相关《云计算毕业设计 .doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、毕 业 设 计 (论 文)课题名称: 云计算与openstack 指导教师: 茹兴旺 系 别: 电子信息系 专 业: 计算机网络技术 班 级: 12计网四班 姓 名: 陈宁 目录一、绪论11.1 云计算概述11.2 云计算的特点和优势1二、 云计算核心架构32.1 IaaS核心架构安全32.2 IaaS关键技术42.3 IaaS 核心架构安全防护8三、 Openstack云计算开源解决方案113.2 OpenStack三大优势123.3 Openstack平台架构143.4 Openstack 核心组件143.4.1 Keytone143.4.2 Glance173.4.3 Nova183.4
2、.4 Dashboard193.4.5 Cinder203.4.6 Swift213.4.7 Ceilometer24四、 云计算存在的问题25五、 结论275.1 创新与意义275.2 企业信息系统在云计算平台中应用的未来展望27致谢29参考文献30摘要随着互联网带宽的不断升级,云计算在日常生活中的应用已经相当普及。云计算(Cloud Computing )从狭义上将指IT基础设施的交付和使用模式,及通过网络以按需、易扩展的方式获得所取资源。广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展获得所需服务。提供资源的网络成为“云”,其计算能力通常是由分布式大规模集群和服务器虚拟化软件搭
3、建决定的。“云”中的资源在用户端看来是可以无限扩展的,并可以随时获取、按需使用、随时扩展、按使用付费的。云计算是一种“云-管-端”的计算模型。云计算分布式计算和虚拟资源管理等技术,通过网络将分散的资源(包括计算与存储服务器、应用运行平台、软件等)集中起来形成共享的资源池,并以动态按需可度量的方法向用户提供服务。用户可以使用各种形式的终端(如PC、平台电脑、智能手机甚至只能电视等)通过互联网这个载体获取计算资源服务。【关键词】云计算 IaaS平台 openstack一、绪论1.1 云计算概述狭义云计算是指计算机基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的资源(硬件、平台、软
4、件)。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。广义云计算是指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是计算机和软件、互联网相关的,也可以是其他的服务。云计算是并行计算(ParallelComputing)、分布式计算(DistributedComputing)和网格计算(GridComputing)的发展,或者说是这些计算机科学概念的商业实现。云计算是虚拟化(Virtualization)、效用计算(UtilityComputing)、IaaS(基础设施即服务)、PaaS(
5、平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的结果。1.2 云计算的特点和优势(1) 超大规模“云”具有相当的规模,Google云计算已经拥有100多万台服务器, Amazon、IBM、微软、Yahoo等的“云”均拥有几十万台服务器。企业私有云一般拥有数百上千台服务器。“云”能赋予用户前所未有的计算能力。(2) 虚拟化云计算支持用户在任意位置、使用各种终端获取应用服务。所请求的资源来自“云”,而不是固定的有形的实体。应用在 “云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置。只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至 包括超级计算这
6、样的任务。(3) 高可靠性“云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。(4) 通用性云计算不针对特定的应用,在“云”的支撑下可以构造出千变万化的应用,同一个“云”可以同时支撑不同的应用运行。(5) 高可扩展性“云”的规模可以动态伸缩,满足应用和用户规模增长的需要。(6) 按需服务“云”是一个庞大的资源池,你按需购买;云可以像自来水,电,煤气那样计费。(7) 极其廉价。由于“云”的特殊容错措施可以采用极其廉价的节点来构成云,“云”的自动化集中式管理使大量企业无需负担日益高昂的 数据中心管理成本,“云”的通用性使资源的利用率较之传统系统
7、大幅提升,因此用户可以充分享受“云”的低成本优势,经常只要花费几百美元、几天时间就能完 成以前需要数万美元、数月时间才能完成的任务。云计算可以彻底改变人们未来的生活,但同时也要重视环境问题,这样才能真正为人类进步做贡献,而不是简单的技术提升。(8) 潜在的危险性。云计算服务除了提供计算服务外,还必然提供了存储服务。但是云计算服务当前垄断在私人机构(企业)手中,而他们仅仅 能够提供商业信用。对于政府机构、商业机构(特别象银行这样持有敏感数据的商业机构)对于选择云计算服务应保持足够的警惕。一旦商业用户大规模使用私人机 构提供的云计算服务,无论其技术优势有多强,都不可避免地让这些私人机构以“数据(信
8、息)”的重要性挟制整个社会。对于信息社会而言,“信息”是至关重要 的。另一方面,云计算中的数据对于数据所有者以外的其他用户云计算用户是保密的,但是对于提供云计算的商业机构而言确实毫无秘密可言。所有这些潜在的危 险,是商业机构和政府机构选择云计算服务、特别是国外机构提供的云计算服务时,不得不考虑的一个重要的前提。二、 云计算核心架构IaaS 的虚拟化技术、PaaS 的分布式技术以及 SaaS 的在线软件技术是构建云计 算核心架构的关键技术,是开展云计算服务的技术基础,其安全重要性不言而喻。 本节将在对 IaaS、PaaS、SaaS 关键技术进行分析的基础上,提出安全防护措施及 相关安全策略要求,
9、以提高云计算底层架构的安全性。2.1 IaaS核心架构安全虚拟化技术是开展IaaS云服务的基础。它把数据中心包括服务器、存储、网络在内的IT硬件资源抽象化成逻辑的虚拟资源池后,通过网络传递给客户,从而实现资源的统计复用。虚拟化技术是将底层物理设备与上层操作系统、软件分离的一种去耦合技术,它通过软件或固件管理程序(Hypervisor)构建虚拟层并对其进行管理,把物理资源映射成逻辑的虚拟资源,对逻辑资源的使用与物理资源差别很小甚至没有区别。虚拟化的目标是实现IT资源利用效率和灵活性的最大化。虚拟化技术具有悠久的历史,20世纪60年代为提高硬件利用率对大型机硬件进行分区就是最早的虚拟化原型。经过多
10、年的发展,业界已经形成多种虚拟化技术,包括服务器虚拟化、网络虚拟化、存储虚拟化、应用虚拟化等,与之相关的虚拟化运营管理技术也被广泛研究。虚拟化能有效整合数据中心服务器,提升资源的利用率,简化数据中心结构,减少运营成本,并能提高关键应用的可靠性。这些优点,使得虚拟化逐渐成为企业数据中心IT基础架构的关键部分。2.2 IaaS关键技术(1) 服务器虚拟化 服务器虚拟化也称系统虚拟化,它把一台物理计算机虚拟化成一台或多台虚拟计算机,各虚拟机间通过被称为虚拟机监控器(Virtual Machine Monitor,VMM)的虚拟化层共享 CPU、网络、内存、硬盘等物理资源,每台虚拟机都有独立的运 行环
11、境,如图 4-1 所示。虚拟机可以看成是对物理机的一种高效隔离复制,要求同 质、高效和资源受控。同质说明虚拟机的运行环境与物理机本质上是相同的;高效 指虚拟机中运行的软件需要有接近在物理机上运行的性能;资源受控指 VMM 对系 统资源具有完全的控制能力和管理权限。 按 VMM 提供的虚拟平台 类型可将 VMM 分为两类 :完全虚拟化( Full Virtualization),它虚拟的是现实存在的平台,现有操作系统无须进行任何修改即可 在其上运行,完全虚拟化 技术又分为软件辅助和硬 件辅助两类;类虚拟化(Para-Virtualization),它虚拟的平台是 VMM 重新定义的,需要对客户机
12、操作系统 进行修改以适应虚拟环境。按 VMM 的实现结构还可将 VMM 分为以下三类: Hypervisor 模型,该模型下 VMM 直接构建在硬件层上,负责物理资源的管理以及 虚拟机的提供;宿主模型,VMM 是宿主操作系统内独立的内核模块,通过调用宿 主机操作系统的服务来获得资源,VMM 创建的虚拟机通常作为宿主机操作系统的 一个进程参与调度;混合模型,是上述两种模式的结合体,由 VMM 和特权操作系 统共同管理物理资源,实现虚拟化。对服务器的虚拟化主要包括 CPU 虚拟化、内存虚拟化和 I/O 虚拟化三部分, 部分虚拟化产品还提供中断虚拟化和时钟虚拟化。最初的系统虚拟化主要通过软件 方式实
13、现。CPU虚拟化是服务器虚拟化最核心的部分,通常通过指令模拟和异常 陷入实现。内存虚拟化通过引入客户机物理地址空间实现多客户机对物理内存的共 享,常用的内存虚拟化技术有影子页表。I/O虚拟化通常只模拟目标设备的软件接 口而不关心具体硬件实现,可采用全虚拟化、半虚拟化和软件模拟等几种方式。为 弥补计算机硬件体系架构在虚拟化方面的缺陷,如因敏感指令导致的虚拟化漏洞, 解决软件实现虚拟化存在的性能问题,Intel、AMD等芯片厂商纷纷提出了各自的 虚拟化技术,在 CPU、芯片组、I/O 设备等硬件中增加对虚拟化的支持。Intel 在 x86 体系架构上提供了其虚拟化硬件支持技术 VT,包括 CPU
14、处理 VT 技术(VT-x)、 芯片组 VT 技术(VT-d)和网络 VT 技术(VT-c)。AMD 则提出了 AMD-V(Virtualization)技术。硬件虚拟化技术的出现,极大提高了系统虚拟化技术的性能 和效率。(2)存储虚拟化存储系统可分为直接依附存储系统(Direct Attached Storage,DAS)、附网存 储系统(Network-attached Storage,NAS)和存储区域网络(Storage Area Network, SAN)三类。DAS是服务器的一部分,由服务器控制输入/输出,目前大多数存储 系统都属于这类。NAS将数据处理与存储分离开来,存储设备独立
15、于主机安装在 网络中,数据处理由专门的数据服务器完成。用户可以通过 NFS 或 CIFS 数据传输 协议在 NAS 上存取文件、共享数据。SAN 向用户提供块数据级的服务,是 SCSI 技术与网络技术相结合的产物,它采用高速光纤连接服务器和存储系统,将数据的 存储和处理分离开来,采用集中方式对存储设备和数据进行管理。随着时间的积累,数据中心通常会配备多种类型的存储设备和存储系统,这一方面加重了存储管理的复杂度,另一方面也使得存储资源的利用率极低。于是存储 虚拟化技术应运而生,它通过在物理存储系统和服务器之间增加一个虚拟层,使物 理存储虚拟化成逻辑存储,使用者只访问逻辑存储,从而实现对分散的、不
16、同品牌、 不同级别的存储系统的整合,简化对存储的管理,如图 2-2所示。通过整合不同的 存储系统,虚拟存储具有如下优点:1)能有效提高存储容量的利用率;2)能根 据 性能差别对存储资源进行区分和利用;3)向用户屏蔽了存储设备的物理差异;4) 实现了数据在网络上共享的一致性;5)简化了管理,降低了使用成本。图2-2 虚拟化存储目前,业界尚未形成统一的存储虚拟化标准,各存储厂商一般都根据自己所掌 握的核心技术来提供虚拟存储解决方案。从系统的观点看,有三种实现虚拟存储的 方法,分别是主机级虚拟存储、设备级虚拟存储和网络级虚拟存储。主机级虚拟存储主要通过软件实现,不需要额外的硬件支持。它把外部设备转
17、化成连续的逻辑存储区间,用户可通过虚拟管理软件对它们进行管理,以逻辑卷的 形式进行使用。设备级虚拟存储包含两方面内容:对存储设备物理特性的仿真,以及对虚拟存 储设备的实现。仿真技术包含磁盘仿真技术和磁带仿真技术,磁盘仿真利用磁带设 备来仿真实现磁盘设备,磁带仿真则相反,是利用磁盘存储空间仿真实现磁带设备。 虚拟存储设备的实现,是指将磁盘驱动器、RAID、SAN设备等组合成新的存储设备。设备级虚拟存储技术将虚拟化管理软件嵌入在硬件实现,可以提高虚拟化处理 和虚拟设备 I/O 的效率,性能和可靠性较高,管理方便,但成本也高。网络级虚拟存储是基于网络实现的,通过在主机、交换机或路由器上执行虚拟 化模
18、块,将网络中的存储资源集中起来进行管理。它有三种实现方式:1)基于互 联设备的虚拟化,虚拟化模块嵌入到每个网络的每个存储设备中;2)基于交换机 的虚拟化,将虚拟化模块嵌入到交换机固件或者运行在与交换机相连的服务器上, 对与交换机相连的存储设备进行管理;3)基于路由器的虚拟化,虚拟化模块被嵌 入到路由器固件上。网络存储是对逻辑存储的最佳实现。上述三种虚拟存储技术可以单独使用,也可以在同一存储系统中配合使用。(3)网络虚拟化狭义的网络虚拟化概念就是指传统虚拟专用网络,通过 VPN 或者 VLAN 的方 式在公共网络上建立虚拟专用网。近年来随着虚拟化技术的不断发展成熟,网络虚 拟化的概念也在不断外延
19、。网络虚拟化与计算虚拟化是不可分割的,计算虚拟化的 发展及成熟给 IT 行业带来了革命性的变化,网络虚拟化是计算虚拟化发展的必然 结果,而计算虚拟化则是促进网络虚拟化发展的主要因素。计算虚拟化“多对一” 的特征对网络提出了虚拟化的要求,传统网络逐步向虚拟交换机、虚拟网卡、动态 感知技术以及大二层网络的方向发展。为了满足虚拟服务器的通信需求,网络也需要延伸到服务器内部,由此产生了 虚拟交换机,虚拟交换机技术是实现网络虚拟化的主要技术之一。如图 2-3 所示,虚拟交换机是虚拟化平台与物理网卡之间创建的一个中间层, 也就是说一台物理服务器上的各台虚拟服务器通过虚拟交换机可直接进行通信,这 部分流量并
20、不会出现在物理交换机上,而是在物理服务器内部就被消化掉了。因此, 通过虚拟交换机提供的交换能力,将虚拟服务器与物理网络无缝连接起来,满足业 务部署的需要,可解决服务器虚拟化之后的虚拟交换的基本需求。然而,由于在服 务器内部新增了虚拟网络设备,这也给数据中心管理员的运维方式带来了一定的影 响:一方面,服务器管理员需要参与网络的管理,而网络管理员也不得不参与服务 器内部的管理;另一方面,由于在服务器内部新增了虚拟交换机,这也给服务器带 来了额外的性能开销。同时,由于虚拟化之后热迁移技术的支持,如何保证虚拟机 的网络属性也能够迅速迁移,适应虚拟机的迁移需求,也成为亟待解决的问题。图2-3 网络虚拟化
21、2.3 IaaS 核心架构安全防护从功能角度看,IaaS 系统的逻辑架构如图 2-4 所示,包含业务管理平台、虚拟网络系统、虚拟存储系统、虚拟处理系统,以及最上层的客户虚拟机。 图 2-4 IaaS 系统逻辑架构其中虚拟网络系统是通过在物理网络上运行虚拟化将物理网络虚拟成多个逻 辑独立的网络,如虚拟交换机等。主要涉及的物理设备有服务器、交换机、路由器、 网卡等部件。虚拟存储系统是通过在主机和物理存储系统上运行虚拟化软件将物理存储虚 拟成满足上层需要的特定存储服务。主要涉及的物理设备有存储交换机、磁盘阵列 等部件。虚拟处理系统是通过在物理主机上运行虚拟机平台软件将异构的物理主机虚 拟成满足上层需
22、要的虚拟主机。主要涉及的物理设备有主机服务器。虚拟处理系统 可以使用本地硬盘、SAN、iSCSI等作为存储,也可以使用虚拟存储系统作为存储。 客户虚拟机是虚拟处理系统将物理主机进行虚拟产生的虚拟机,是客户操作系统安 装的位置。业务管理平台负责向用户提供业务受理、业务开通、业务监视、业务保障等能 力。业务平台通过与客户、计费系统、虚拟化平台的交互实现 IaaS 业务的端到端 运营和管理。在虚拟化安全方面,应充分利用虚拟化平台提供的安全功能,进行合理配置,防止客户虚拟机恶意访问虚拟平台或其他客户的虚拟机资源。(1)服务器虚拟化安全虚拟机管理器 VMM 是用来运行虚拟机 VM 的内核,代替传统操作系
23、统管理 着底层物理硬件,是服务器虚拟化的核心环节。其安全性直接关系到上层的虚拟机 安全,因此 VMM 自身必须提供足够的安全机制,防止客户机利用溢出漏洞取得高 级别的运行等级,从而获得对物理资源的访问控制,给其他客户带来极大的安全隐 患。在具体的安全防护及安全策略配置上,应满足如下要求。l 虚拟机管理器应启用内存安全强化策略,使虚拟化内核、用户模式应用程 序及可执行组件(如驱动程序和库)位于无法预测的随机内存地址中。在 将该功能与微处理器提供的不可执行的内存保护结合使用时,可以提供保 护,使恶意代码很难通过内存漏洞来利用系统漏洞。l 虚拟机管理器应开启内核模块完整性检查功能,利用数字签名确保由
24、虚拟 化层加载的模块、驱动程序及应用程序的完整性和真实性。l 在安全管理上采取服务最小化原则:虚拟机管理器接口应严格限定为管理 虚拟机所需的 API,并关闭无关的协议端口。l 规范虚拟机管理器补丁管理要求。在进行补丁更新前,应对补丁与现有虚 拟机管理器系统的兼容性进行测试,确认后与系统提供厂商配合进行相应 的修复。同时应对漏洞发展情况进行跟踪,形成详细的安全更新状态报表。l 对每台物理机之上的虚拟平台,严格控制对虚拟平台提供的 HTTP、Telnet、 SSH 等管理接口的访问,关闭不需要的功能,禁用明文方式的 Telnet 接口。l 在用户认证安全方面,采用高强度口令,降低口令被盗用和破解的
25、可能性。 另外,在服务器虚拟化高可用性方面,目前一些主流虚拟化软件提供商推出了成熟的虚拟化高可用性技术或方案,如高可用性 HA(High Availability)、零宕机容错 FT(Fault Tolerance)、备份与恢复 DT(Data Recovery)等方式快速恢复故障 用户的虚拟机系统,提高用户系统的高可用性。1)高可用性:在宿主物理机发生故障时,受影响的虚拟机在其他宿主物理机 上的备份自动重启,从而为虚拟机用户提供易于使用和经济高效的高可用性。其具 体原理是虚拟化平台实时监控系统内虚拟机的运行状态,若该虚拟机没有在指定时间内生成检测信号,就认为其发生了故障并自动重新启动该虚拟机
26、。对于启用该服 务,要求虚拟机与其备份虚拟机必须不在一台宿主物理机上。2)零宕机容错:通过构建容错虚拟机的方式,在虚拟机发生数据、事务或连 接丢失等故障时快速启用容错虚拟机。容错可提供比HA更高级别的业务连续性。 其具体要求是虚拟机与其容错虚拟机必须不在同一台宿主物理机上,容错保护的虚 拟机文件也必须存储在共享存储器上。3)备份和恢复:可以实现对虚拟机进行全面和增量的恢复,也能进行个别文 件和目录的恢复。在不中断虚拟机的使用或虚拟机提供的数据和服务的情况下,创 建并管理虚拟机备份,并在这些备份过时后将其删除。可以根据故障虚拟机的状态 选定虚拟机的存储点,然后将该虚拟机重新写入目标主机或资源池。
27、在重写的过程 中,Data Recovery 仅改写有变动的数据,重写完后该虚拟机即可重新启动。(2)网络虚拟化安全 网络虚拟化安全主要通过在虚拟化网络内部加载安全策略,增强虚拟机之间以及虚拟机与外部网络之间通信的安全性,确保在共享的资源池中的信息应用仍能遵从企业级数据隐私及安全要求。 (3)存储虚拟化安全 存储虚拟化通过在物理存储系统和服务器之间增加一个虚拟层,使物理存储虚拟化成逻辑存储,使用者只访问逻辑存储,从而把数据中心异构的存储环境整合起来,屏蔽底层硬件的物理差异,向上层应用提供统一的存取访问接口。虚拟化的存 储系统应具有高度的可靠性、可扩展性和高性能,能有效提高存储容量的利用率, 简
28、化存储管理,实现数据在网络上共享的一致性,满足用户对存储空间的动态需求。三、 Openstack云计算开源解决方案就如同在实体的计算机上,操作系统可以用来控制实体计算机上的硬件机制,让应用程序和底层实体硬件隔离。操作系统提供了一个可以跨硬件的共通执行环境,让应用程序不用受制于不同服务商、规格的硬件功能。同样的逻辑,云操作系统作为云端应用程序和实体数据中心的中间层,让云端应用不用受制于实体数据中心内各种硬设备的局限,同样可以提供一个共通的云端执行环境。OpenStack不是唯一一套可以实现这个构想的技术,已有不少成熟的商用软件,如VMware和微软的虚拟化平台,同样也能实现这样的目标。但是,Op
29、enStack不一样,它是一套免费开源的云操作系统(Cloud OS)。就像早在Linux出现之前,已有不少商用操作系统。但是免费开源Linux却掀起了新的开放革命。随着计算机硬件成本越来越低,Linux让计算机的进入门坎更低,甚至软件成本几乎可以忽略,也不用受限于特定软硬件厂商的绑定。任何人只要买了一台实体计算机,就能用免费的Linux打造出一个低成本的桌面执行环境,甚至是应用系统的执行环境。Linux提供了商用软件产品以外的另一个选择,打破了IT厂商垄断OS平台的局面。同样道理, OpenStack对云端平台的价值,如同是Linux对个人计算机的价值一样。OpenStack可以让企业打造出
30、一套免费的云平台,来实现上云端的目标,不论是公有云、私有云,都可以使用OpenStack来建设。 3.1 Openstack简介OpenStack是一套使用Python程序语言撰写的软件,也是个开放原始码计划,以Apache许可证授权。OpenStack内部包括运算模 块、网通模块和储存模块,再搭配一个可集中管理上述三大类模块的仪表板模块,最后组合而成一套OpenStack共享服务,并且可以提供虚拟机器的方式, 对外提供运算资源以便弹性扩充或调度。换句话说,OpenStack也是一套可以用来打造IaaS服务的开源软件。对应用程序而言,只要通过API就可以和OpenStack沟通,例如用API来
31、调度虚拟机器的部署等,OpenStack再负责和不同厂商的硬件设备,或是软件系统沟通。3.2 OpenStack三大优势OpenStack有三大优势。首先,OpenStack可解决云服务被单一厂商绑定的问题。惠普企业业务事业群总经理监范钦辉表示,假设企业选择 使用某家服务供货商的云服务,厂商会提供管理接口让企业了解硬件资源的运作情形,还会提供API,让企业在云平台上,客置化更多的加值服务,像是负载平 衡、监控工具等。不过,若是有天,企业想使用其它厂商的云服务,势必就要重新建立各式各样的应用程序,因为不同厂商的API是无法共通的。 而若是服务供货商提供的云平台,都是基础OpenStack,企业就
32、可以将应用程序无缝转移到其它厂商的平台上。 其次,对于想要打造云服务,而不想花费大量成本购买商业化解决方案的企业来说,OpenStack可帮助他们节省部署成本。这是因 为,OpenStack是个开源的软件,只要不违背软件授权的规范,每个人都可以从网站上公开取得。像是CERN在选择使用OpenStack打造私有云 之前,就曾评估过,若是使用公有云服务,虽然一开始的成本负担不多,但是,一旦需要增加网络资源时,所需的成本就会提升35倍之多。 第三个优势就是是开源社群的技术支持,在OpenStack网站上注册的开发人员近万人,遍布全球87个国家。不只在网络上已有许多参考文件或是视频,可作为企业IT人员
33、的学习范本,若是遇到无法解决的问题,也可求助几乎遍布全球的OpenStack用户社群。 目前OpenStack共有9个不同的项目套件,9个不同的项目套件分别提供虚拟化技术、网络、储存、镜像文件管理等功能,许多程序代码甚至是来自这些 IT技术领域的领导厂商所贡献的,像是x86服务器、刀片服务器、路由器、交换器、储存设备、Linux、虚拟化技术这七大领域的市占率前3名领导业者都 参与OpenStack的开发。 3.3 Openstack平台架构3.4 Openstack 核心组件3.4.1 Keytone Keystone(OpenStack Identity Service)是OpenStack
34、框架中,负责身份验证、服务规则和服务令牌的功能, 它实现了OpenStack的Identity API。Keystone类似一个服务总线, 或者说是整个Openstack框架的注册表, 其他服务通过keystone来注册其服务的Endpoint(服务访问的URL),任何服务之间相互的调用, 需要经过Keystone的身份验证, 来获得目标服务的Endpoint来找到目标服务。Keystone基本概念介绍1. UserUser即用户,他们代表可以通过keystone进行访问的人或程序。Users通过认证信息(credentials,如密码、API Keys等)进行验证。2. TenantTena
35、nt即租户,它是各个服务中的一些可以访问的资源集合。例如,在Nova中一个tenant可以是一些机器,在Swift和Glance中一个tenant可以是一些镜像存储,在Quantum中一个tenant可以是一些网络资源。Users默认的总是绑定到某些tenant上。3. RoleRole即角色,Roles代表一组用户可以访问的资源权限,例如Nova中的虚拟机、Glance中的镜像。Users可以被添加到任意一个全局的 或 租户内的角色中。在全局的role中,用户的role权限作用于所有的租户,即可以对所有的租户执行role规定的权限;在租户内的role中,用户仅能在当前租户内执行role规定的
36、权限。4. ServiceService即服务,如Nova、Glance、Swift。根据前三个概念(User,Tenant和Role)一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service,这里通常使用一些不同的名称表示不同的服务。在上文中谈到的Role,实际上也是可以绑定到某个service的。例如,当swift需要一个管理员权限的访问进行对象创建时,对于相同的role我们并不一定也需要对nova进行管理员权限的访问。为了实现这个目标,我们应该创建两个独立的管理员role,
37、一个绑定到swift,另一个绑定到nova,从而实现对swift进行管理员权限访问不会影响到Nova或其他服务。 5. Endpoint Endpoint,翻译为“端点”,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道他的endpoint。因此,在 keystone中包含一个endpoint模板(endpoint template,在安装keystone的时候我们可以在conf文件夹下看到这个文件),这个模板提供了所有存在的服务endpoints信息。一个 endpoint template包含一个URLs列表,列表中的每个URL都对应一个服务实例的访问地址,并且具
38、有public、private和admin这三种权 限。public url可以被全局访问(如),private url只能被局域网访问(如),admin url被从常规的访问中分离。 3.4.2 GlanceGlance 项目主要功能是提供虚拟机镜像的发现、注册和检索服务。它通过提供标准的REST 接口,接受对不同后端存储的镜像的查询请求和返回镜像的相关信息。IaaS 系统支持 KVM、 XEN、 VMWARE、 Hyper-V 多种虚拟平台的整合, 默认支持 KVM的虚拟化技术。基于 KVM 可以制作和部署 Linux 镜像、Window 镜像,可以完成 CentOS、Window7、Ce
39、ntOS 桌面的加载和部署。通过Glance,虚拟机镜像可以被存储到多种存储上,比如简单的文件存储或者对象存储(比如OpenStack中swiftx项目)。Glance,像所有的OpenStack项目一样,遵循以下思想:(1).基于组件的架构 便于快速增加新特性(2).高可用性 支持大负荷(3).容错性 独立的进程避免串行错误(4).开放标准 对社区驱动的API提供参考实现Glance的架构:Glance被设计为可以使用多种后端存储。前端通过API Server向多个Client提供服务。Glance目前提供的参考实现中Registry Server仅是使用Sql数据库存储metadataGl
40、ance目前支持S3,Swift,简单的文件存储及只读的HTTPS存储。后续也可能支持其他后端,如分布式存储系统(SheepDog或Ceph)。3.4.3 Nova为云组织的控制器,它提供一个工具来部署云,包括运行实例、管理网络以及控制用户等等。Nova架构总的来说, nova的各个组件是以数据库和队列为中心进行通信的, 下面对其中的几个组件做一个简单的介绍:Queue ,也就是消息队列,它就像是网络上的一个hub,nova各个组件之间的通信几乎都是靠它进行的,当前的Queue是用RabbitMQ实现的,它和database一起为各个守护进程之间传递消息。database 存储云基础架构中的绝
41、大多数状态。这包括了可用的实例类型,在用的实例,可用的网络和项目。当前广泛使用的数据库是sqlite3(仅适合测试和开发工作)、MySQL和PostgreSQL。nova-compute 负责决定创造虚拟机和撤销虚拟机,通过运行一系列系统命令(例如发起一个KVM实例,)并把这些状态更新到nova-database中去,其过程相当复杂,但是基本原理很简单。nova-schedule 负责从queue里取得虚拟机请求并决定把虚拟机分配到哪个服务器上去。schedule的算法可以自己定义,目前有Simple (最少加载主机),chancd(随机主机分配) ,zone(可用区域内的随机节点)等算法。n
42、ova-volume 负责记录每一个计算实例,相当于一个计算请求吧,并负责创建,分配或撤销持久层容器(Amazon的,iSCSI,AoE等等)给这些compute instances。nova -netwok 负责处理队列里的网络任务。nova-api 守护进程是OpenStack Compute的中心。它为所有API查询提供一个入口, 并且同时支持OpenStack API 和 Amazon EC2 API。 3.4.4 DashboardDashboard 是一个 Web 前端控制台,用来展示 OpenStack 的功能。一个 Dashboard 通常情况下由四个组件组成,分别为 pane
43、l、tab(可选) 、table 和 view。其中,panel、tab 和 table用于导航的,真正展示数据的在 view 里面。图4-1为openstack功能展示 Dashboard 图4-1 dashboard3.4.5 Cinder为了实现服务提供按需, 自助服务访问数据块存储资源。 通过抽象化和自动化的各种传统后端块存储设备的顶部提供了软件定义的块存储。Cinder 是一个块存储服务。 它的虚拟化块存储设备池和为最终用户提供一个自助服务的API 请求,并消耗这些资源,而不需要在他们的存储实际上是部署或设备上的什么类型的任何知识。Cinder架构Cinder服务 API servi
44、ce:负责接受和处理Rest请求,并将请求放入RabbitMQ队列。Cinder提供Volume API V2, 我没有找到格式很好的在线文档,大体可以参见Openstack block storage API V1 Scheduler service: 处理任务队列的任务,并根据预定策略选择合适的Volume Service节点来执行任务。目前版本的cinder仅仅提供了一个Simple Scheduler, 该调度器选择卷数量最少的一个活跃节点来创建卷。 Volume service: 该服务运行在存储节点上,管理存储空间。每个存储节点都有一个Volume Service,若干个这样的存储
45、节点联合起来可以构成一个存储资源池。为了支持不同类型和型号的存储,当前版本的Cinder为Volume Service如下drivers。当然在Cinder的blueprints当中还有一些其它的drivers,以后的版本可能会添加进来。l 本地存储:LVM, Sheepdogl 网络存储: NFS, RBD (RADOS)l IBM: XIV, Storwize V7000, SVC storage systemsl Netapp: NFS存储;ISCSI存储则需要OnCommand 5.0和Data ONTAP 7-mode storage systems with installed i
46、SCSI licensesl EMC: VNX, VMAX/VMAXel Solidfire: Solidfire clusterCinder服务的部署上述的Cinder服务都可以独立部署,cinder同时也提供了一些典型的部署命令: cinder-all: 用于部署all-in-one节点,即API, Scheduler, Volume服务部署在该节点上。 cinder-scheduler: 用于将scheduler服务部署在该节点上。 cinder-api: 用于将api服务部署在该节点上。cinder-volume: 用于将volume服务部署在该节点上。3.4.6 SwiftSwift
47、用到的算法和存储理论并不复杂,主要有几下几个概念。一致性哈希算法Swift利用一致性哈希算法构建了一个冗余的可扩展的分布式对象存储集群。Swift采用一致性哈希的主要目的是在改变集群的Node数量时,能够 尽可能少地改变已存在Key和Node的映射关系。 该算法的思路分为以下三个步骤。 首先计算每个节点的哈希值,并将其分配到一个0232的圆环区间上。其次使用相同方法计算存储对象的哈希值,也将其分配到这个圆环上。随后从数据映射到 的位置开始顺时针查找,将数据保存到找到的第一个节点上。如果超过232仍然找不到节点,就会保存到第一个节点上。 假设在这个环形哈希空间中存在4台Node,若增加一台Node5,根据算法得出Node5被映射在Node3和Node4之间,那么受影响的将仅是沿 Node5逆时针遍历到Node3之间的对象(它们本来映射到N