Openstack基础知识介绍目录1、openstack介绍2、openstack结构Openstack是当今最流行的开源云平台管理项目,可以控制整个数据中心计算、存储和网络资源的大小资源池。Openstack是一个非常年轻的开源项目,最初是由美国国家航空航天局(NASA)和Rackspace合作研发的项目,2010年7月以Apache2.0许可证授权开源,源代码来自于NASA的Nebula云平台和Rackspace的分布式云存储(Swift)项目。当今的数据中心,许多服务器都遇到过同样的问题,即计算、电源、网络带宽等资源利用率不足。云计算服务让用户通过一个共享的计算资源、网络带宽、存储池,运行应用程序或服务来完成计算工作。例如,某个项目可能会需要大量计算资源来完成计算,而一旦完成了计算任务,将不再需要那么多的计算资源。当用户想要一种灵活的、按需供给计算资源的服务,Openstack的优势:1、解除厂商绑定2、具有可扩展性及很好的弹性,可定制化IaaS3、良好的社区氛围openstack的劣势:1、入手难、学习曲线较高,在对整体把握不足的情况下,很难快速上手2、偏底层,需要根据实际应用场景进行二次开发3、现阶段的厂商支持较弱、商业设备的openstack驱动相对不够全面云计算按照服务类型可以分为IaaS(基础架构即服务):最位于最底层,以Amazon和阿里云为代表。通过虚拟化技术将服务器,存储等资源打包,以API接口的形式提供给用户。用户不再需要租用机房,自己维护服务器。云服务商还可以通过自身强大的数据中心为用户提供多路供电,灾备等高级功能。PaaS(平台即服务):构建在Iass之上,在基础架构之上还提供业务软件运行的环境,比如数据库服务、web服务等,以GoogleAppEngine为代表。SaaS(软件即服务):是最成熟,知名度最高的云计算服务类型。SaaS的目标是将一切业务运行的后台环境放在云端,用户通过一个瘦客户端,通常是web浏览器,使用服务。典型的案例是Salesforce,Salesforce通过向大企业销售云端CRM服务,10年时间,已经成为一个年收入超过20亿美金的上市公司。云计算按照部署模式又可以分为公有云、私有云、混合云和行业云等等。Openstack的结构openstack包含了许多组件。有些组件会首先出现在孵化项目中,待成熟以后进入下一个openstack发行版的核心服务中。同时也有部分项目是为了更好的支持openstack社区和项目开发管理,不包含在发行版代码中。Openstack核心服务包括:1、Nova计算服务(ComputeasaService)2、Neutron网络服务(NetworkingasaService)3、Swift对象存储服务(ObjectStorageasaService)4、Cinder块存储服务(BlockStorageasaService)Openstack公共服务包括:1、Glance镜像服务(ImageasaSeriver)2、Keystone认证服务(IdentityasaService)3、Horizon仪表盘服务(DashboardasaService)Openstack的依赖库项目包括:Oslo基础设施代码共享依赖库(CommonLabasaService)Openstack的孵化项目包括:1、Ceilometer计费&监控服务2、Heat编排服务3、Ironic物理设备服务(BareMetalasaService)4、Marconi消息队列服务(MessageQueueasaService)5、Savanna大数据处理(MapReduceasaService)6、Trove数据库服务(DataBaseasaService)openstack的其它项目5OpenStack概念架构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对象存储中6Openstack设计原则78OpenStack核心系统架构图HorizonKeystoneNovaGlanceCinderSwiftNeutron9OpenStack最简物理架构2个节点:CloudControllerNode:Keystone(身份验证服务)Glance(镜像管理服务)Nova(计算资源管理服务)数据库服务(MySQL)消息服务(RabbitMQ或QPid)ComputeNode:Nova-ComputeNova-NetworkKVM虚拟化系统2种网络:InternalNetwork(内部网络)用于提供Provider网络(VMtoProvider)用于tenant网络(VMtoVM)ExternalNetwork(外部网络)用于外部用户与VM通信及控制(VMtoInternet)10OpenStack主要逻辑模块–HorizonDashboard服务在整个Openstack应用体系框架中,Horizon就是整个应用的入口。它提供了一个模块化的,基于web的图形化界面服务门户。用户可以通过浏览器使用这个Web图形化界面来访问、控制他们的计算、存储和网络资源,如启动实例、分配IP地址、设置访问控制等。基于Django框架实现11OpenStack主要逻辑模块–Horizon两种功能界面Horizon为以下两种角色的用户提供了不同的功能及使用界面:云管理员:提供一个整体视图,可以总览整个云的资源规模及运行状况.可以创建终端用户和项目,想终端用户分配项目并进行项目可使用的资源配额管理。终端用户(云用户):提供了一个自助服务门户,可以在由云管理分配的项目中,在不超过配额限制的范围内,自由的操作、使用和分配资源。云管理员云用户12OpenStack主要逻辑模块–Keystone身份验证服务Keystone作为Openstack的核心模块,为Nova(计算),Glance(镜像),Swift(对象存储),Cinder(块存储),Neutron(网络)以及Horizon(Dashboard)提供认证服务13Keystone基本概念介绍之一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,这里通常使用一些不同的名称表示不同的服务。14Keystone基本概念介绍之二EndpointEndpoint,翻译为“端点”,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道他的endpoint。因此,在keystone中包含一个endpoint模板,这个模板提供了所有存在的服务endpoints信息。一个endpointtemplate包含一个URLs列表,列表中的每个URL都对应一个服务实例的访问地址,并且具有public、private和admin这三种权限。publicurl可以被全局访问(如),privateurl只能被局域网访问(如),adminurl被从常规的访问中分离。TokenToken是访问资源的钥匙。它是通过Keystone验证后的返回值,在之后的与其他服务交互中只需要携带Token值即可。每个Token都有一个有效期,Token只在有效期内是有效的。15各种概念之间关系解释1、租户下,管理着一堆用户(人,或程序)。2、每个用户都有自己的credentials(凭证)用户名+密码或者用户名+APIkey,或其他凭证。3、用户在访问其他资源(计算、存储)之前,需要用自己的credential去请求keystone服务,获得验证信息(主要是Token信息)和服务信息(服务目录和它们的endpoint)。4、用户拿着Token信息,就可以去访问特点的资源了。16Keystone在OpenStack中的访问流程范例17•计算管理(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主要逻辑模块-Nova18请求一个虚拟机实例过程19Nova支持的虚拟化平台Openstack支持的虚拟化技术KVMLXCQEMUUMLvSphereXen支持的调度器和过滤器•SimpleScheduler简单调度器•FilterScheduler过滤调度器•MultiScheduler多重调度器•ChanceScheduler随机调度器•ImageProperties