Openstack基础知识介绍2OpenStack概念架构Horizon(Dashboard)与其他主要模块的关联(包括Nova,Cinder,Glance,Swift,Neutron,keystone)通过Ceilometer(监控功能)可以监控的模块(包括Nova,Glance,Cinder,Neutron)Keystone(身份验证功能)模块可以对其他模块进行相应操作进行身份及权限验证(包括Nova,Glance,Cinder,Swift,Neutron,Ceilometer)VMNova为VM提供计算资源Glance为VM提供镜像Cinder为VM提供块存储资源Neutron为VM提供网络资源及网络连接Cinder连接VM后所产生的数据可以备份到Swift对象存储中Glance提供镜像可以保存在Switf对象存储中3OpenStack核心系统架构图HorizonKeystoneNovaGlanceCinderSwiftNeutron4OpenStack最简物理架构2个节点:CloudControllerNode:Keystone(身份验证服务)Glance(镜像管理服务)Nova(计算资源管理服务)数据库服务(MySQL)消息服务(RabbitMQ或QPid)ComputeNode:Nova-ComputeNova-NetworkKVM虚拟化系统2种网络:InternalNetwork(内部网络)用于提供Provider网络(VMtoProvider)用于tenant网络(VMtoVM)ExternalNetwork(外部网络)用于外部用户与VM通信及控制(VMtoInternet)5OpenStack主要逻辑模块–HorizonDashboard服务在整个Openstack应用体系框架中,Horizon就是整个应用的入口。它提供了一个模块化的,基于web的图形化界面服务门户。用户可以通过浏览器使用这个Web图形化界面来访问、控制他们的计算、存储和网络资源,如启动实例、分配IP地址、设置访问控制等。基于Django框架实现6OpenStack主要逻辑模块–Horizon两种功能界面Horizon为以下两种角色的用户提供了不同的功能及使用界面:云管理员:提供一个整体视图,可以总览整个云的资源规模及运行状况.可以创建终端用户和项目,想终端用户分配项目并进行项目可使用的资源配额管理。终端用户(云用户):提供了一个自助服务门户,可以在由云管理分配的项目中,在不超过配额限制的范围内,自由的操作、使用和分配资源。云管理员云用户7OpenStack主要逻辑模块–Keystone身份验证服务Keystone作为Openstack的核心模块,为Nova(计算),Glance(镜像),Swift(对象存储),Cinder(块存储),Neutron(网络)以及Horizon(Dashboard)提供认证服务8Keystone基本概念介绍之一UserUser即用户,他们代表可以通过keystone进行访问的人或程序。Users通过认证信息(credentials,如密码、APIKeys等)进行验证。TenantTenant即租户,它是各个服务中的一些可以访问的资源集合。例如,在Nova中一个tenant可以是一些机器,在Swift和Glance中一个tenant可以是一些镜像存储,在Neutron中一个tenant可以是一些网络资源。Users默认的总是绑定到某些tenant上。RoleRole即角色,Roles代表一组用户可以访问的资源权限,例如Nova中的虚拟机、Glance中的镜像。Users可以被添加到任意一个全局的或租户的角色中。在全局的role中,用户的role权限作用于所有的租户,即可以对所有的租户执行role规定的权限;在租户内的role中,用户仅能在当前租户内执行role规定的权限。ServiceService即服务,如Nova、Glance、Swift。根据前三个概念(User,Tenant和Role)一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service,这里通常使用一些不同的名称表示不同的服务。9Keystone基本概念介绍之二EndpointEndpoint,翻译为“端点”,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道他的endpoint。因此,在keystone中包含一个endpoint模板,这个模板提供了所有存在的服务endpoints信息。一个endpointtemplate包含一个URLs列表,列表中的每个URL都对应一个服务实例的访问地址,并且具有public、private和admin这三种权限。publicurl可以被全局访问(如),privateurl只能被局域网访问(如),adminurl被从常规的访问中分离。TokenToken是访问资源的钥匙。它是通过Keystone验证后的返回值,在之后的与其他服务交互中只需要携带Token值即可。每个Token都有一个有效期,Token只在有效期内是有效的。10各种概念之间关系解释1、租户下,管理着一堆用户(人,或程序)。2、每个用户都有自己的credentials(凭证)用户名+密码或者用户名+APIkey,或其他凭证。3、用户在访问其他资源(计算、存储)之前,需要用自己的credential去请求keystone服务,获得验证信息(主要是Token信息)和服务信息(服务目录和它们的endpoint)。4、用户拿着Token信息,就可以去访问特点的资源了。11Keystone在OpenStack中的访问流程范例12•计算管理(codenamed“Nova”)基于用户需求为VM提供计算资源管理.基于Python语言编写。•Nova-API:对外统一提供标准化接口.接受和响应最终用户ComputeAPI的请求,同时还实现与Openstack其他各逻辑模块的通讯与服务提供•Nova-Scheduler:从队列上得到一个虚拟机实例请求并且决定它应该在哪里运行(使用多种过滤器或算法调度)•Queue:提供了一个守护进程之间传递消息的中央枢纽。消息队列系统作用还可以实现与Openstack其他各逻辑模块之间的通信建立连接枢纽•Nova-Database:存储云基础设施的编译时和运行时的状态,从理论上讲,OpenStackNova可以支持任何SQL-Alchemy支持的数据库,但是目前被广泛使用的数据库有sqlite3(只适用于测试和开发工作),MySQL和PostgreSQL。•Nova-Compute:主要是一个人工守护进程,它可以通过虚拟机管理程序的API(XenAPIforXenServer/XCP,libvirtforKVMorQEMU,VMwareAPIforVMware等)来创建和终止虚拟机实例。支持多种虚拟化平台•Nova还提供控制台的服务,让最终用户通过代理服务器访问他们的虚拟实例的控制台。这涉及到多个守护进程(nova-console,nova-novncproxy、nova-xvpnvncproxy和nova-consoleauth)OpenStack主要逻辑模块-Nova13Nova的架构14Nova处理过程15请求一个虚拟机实例过程16Nova支持的虚拟化平台Openstack支持的虚拟化技术KVMLXCQEMUUMLvSphereXen支持的调度器和过滤器•SimpleScheduler简单调度器•FilterScheduler过滤调度器•MultiScheduler多重调度器•ChanceScheduler随机调度器•ImagePropertiesFilter•AvailabilityZoneFilter•ComputeFilter•CoreFilter•AllHostFilter•DifferentHostFilter•IsolateHostFilter•RamFilter•SimpleCIDRAffinityFilter•SameHostFilter18•块存储管理模块(codenamed“Cinder”)提供到虚拟机的永久性块存储卷.类似AWS的EBS块存储服务•多个卷可以被挂载到单一虚拟机实例,同时卷可以在虚拟机实例间移动,单个卷在同一时刻只能被挂载到一个虚拟机实例•块存储系统管理块设备到虚拟机的创建,挂载以及卸载.•块设备卷完全与OpenstackCompute集成,并支持云用户在Dashboard中管理数据自己的存储.•除了支持简单的Linux服务器本地存储之外,还支持众多的存储平台,包括Ceph,NetApp,Nexenta,SolidFire,Zadara.•快照管理提供了强大的在块存储上实现数据备份的功能可以用来作为引导卷使用•块存储适合性能敏感性业务场景,例如数据库存储大规模可扩展的文件系统或服务器需要访问到块级裸设备存储.OpenStack主要逻辑模块-块存储Cinder19Cinder的架构20Cinder架构解释APIService:负责接受和处理Rest请求,并将请求放入RabbitMQ对列。SchedulerService:处理任务队列的任务,并根据预定策略选择合适的VolumeService节点来执行任务。目前版本的Cinder仅仅提供了一个SimpleScheduler,该调度器选择卷数量最少的一个活跃节点来创建卷。VolumeService:该服务运行在存储节点上,管理存储空间。每个存储节点都有一个VolumeService,若干个这样的存储节点联合起来可以构成一个存储资源池。为了支持不同类型和型号的存储,均通过Drivers的形式为Cinder的VolumeService提供相应的Cinder-Volume。Cinder目前支持的存储类型•本地存储:LVM,Sheepdog•网络存储:NFS,RBD(Ceph)•HP:3PAR(iSCSI/FC),LeftHand(iSCSI)•IBM:Storwizefamily/SVC(iSCSI/FC),XIV(iSCSI),GPFS,zVM•Netapp:NetApp(iSCSI/NFS)•EMC:VMAX/VNX(iSCSI),Isilon(iSCSI)•Solidfire:Solidfirecluster(iSCSI)21Cinder补充Cinder主要核心是对卷的管理,允许对卷、卷的类型、卷的快照进行处理。它并没有实现对块设备的管理和实际服务,而是为后端不同的存储结构提供了统一的接口,不同的块设备服务厂商在Cinder中实现其驱动支持以与OpenStack进行整合。在CinderSupportMatrix中可以看到众多存储厂商如HP、NetAPP、IBM、SolidFire、EMC和众多开源块存储系统对Cinder的支持。Havana版本中Cinder新增特性如下:Volume-Resize:在可用情况下调整卷大小。Volume-Backup-To-Ceph:现在卷可以备份到Ceph集群中。Volume-Migration:现在不同用户间可以透明地转移和交换卷。QoS:增加限速相关的元信息供Nova和其Hypervisor使用。More-Drivers:更多的存储厂商加入和完善了自己的Cinder驱动。22Cinder如何支持典型存储1.本地存储对于本地存储,cinder-volume可以使用LVM驱动,该驱动当前的实现需要在主机上事