云基础及其运维 9_第1页
云基础及其运维 9_第2页
云基础及其运维 9_第3页
云基础及其运维 9_第4页
云基础及其运维 9_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

私有云基础架构与运维项目8OpenStack云平台Nova计算服务计算服务在OpenStack中的项目代号是Nova。Nova是OpenStack中最核心的组件,OpenStack云平台使用计算服务的作用是管理虚拟机的生命周期,用户可以通过Nova来创建、调度和销毁虚拟机,提供计算资源的自动伸缩和负载均衡功能。OpenStack计算服务需要与其他服务进行交互,如通过Keystone认证服务用于认证、采用Glance镜像服务为其提供磁盘和服务器镜像、使用Dashboard提供用户与管理员接口。1.知识目标(1)了解计算服务Nova的功能;(2)掌握计算服务Nova的组件架构;(3)熟悉计算服务Nova的基本工作流程;(4)熟练掌握计算服务Nova的部署过程。2.技能目标(1)具备根据项目需求设计并制定计算服务方案的能力;(2)具备安装和部署Nova组件的能力;(3)具备检测、发现、解决Nova服务问题的能力。3.素质目标(1)具备自我学习、探究学习和创新学习的能力;(2)具有整合和综合运用知识分析问题和解决问题的能力;(3)具有触类旁通、举一反三的能力;(4)具有较强的集体意识和团队合作的能力。学习目标学习导图目录任务8.1项目需求分析任务8.2认识Nova计算服务任务8.3控制节点部署Nova服务任务8.4计算节点部署Nova服务任务8.5验证Nova服务任务8.1项目需求分析OpenStack云平台是一个开源的云计算平台,它提供了构建和管理私有云、公有云以及混合云环境的能力。与传统的数据中心网络相比较,OpenStack云平台在灵活性、成本效益以及安全性与可靠性等方面都有了显著的提高,但OpenStack云平台与传统的数据中心网络在基础网络架构原则、数据传输与处理机制、对硬件资源的依赖等方面都保持着不变。这些共同点反映了网络技术发展的连续性和稳定性,同时也为OpenStack云平台在数据中心网络中的应用提供了坚实的基础。因此,无论用户对OpenStack云平台需要怎样的服务模式,该服务都需要底层硬件资源,都需要IaaS(基础设施即服务)平台的支撑。由此,OpenStack云平台需要提供给用户最核心的功能仍然是计算服务功能,计算服务是云计算的基石。同时,计算服务还需要对CPU、内存、存储等硬件资源进行管理,确保这些资源被合理分配和使用,有助于优化资源利用率,降低运营成本。计算服务不仅是OpenStack的技术核心,更是用户实现业务敏捷性和成本优化的关键。在OpenStack云平台中,Nova提供计算服务的功能,它是整个云平台的基础和核心组件。几乎所有的OpenStack服务和功能都依赖于Nova提供的计算资源管理能力。Nova为其他OpenStack服务提供了底层计算资源。用户通过Nova-api与虚拟化资源进行交互,来请求计算资源。Nova的设计允许它与其他OpenStack组件无缝集成,同时也支持与外部存储和网络的集成,提供了很好的扩展性和灵活性。Nova服务是OpenStack云平台的核心组件,在云平台中承担的功能如下。项目需求分析

(1)计算资源管理Nova负责管理计算节点,其通常是通过KVM、Xen或QEMU等虚拟化技术生成的虚拟机来实现的,其功能包括对虚拟机的创建、删除、启动、停止等生命周期管理,用户可以根据自己的需求选择最适合的虚拟化技术。它还负责管理虚拟机的配置文件和元数据。

(2)实例调度Nova计算服务使用计算节点(ComputeNodes)来运行虚拟机。它通过内置的调度器(Scheduler)来决定在哪个计算节点来运行新的虚拟机实例,以优化资源使用和提高性能。

(3)镜像服务Nova使用Glance(OpenStack的镜像服务)来管理虚拟机镜像。用户可以通过Glance上传、下载和管理虚拟机镜像,Nova则利用这些镜像来创建新的虚拟机实例。

(4)虚拟网络管理Nova与OpenStack的Neutron网络服务协同工作,提供网络连接和安全组规则管理,确保虚拟机可以正确地进行网络通信。

(5)存储管理虽然Nova主要负责计算资源的调度,但它也与Cinder(OpenStack的块存储服务)协同工作,为虚拟机提供持久存储卷的支持。Nova可以挂载或卸载Cinder卷到虚拟机上。

(6)API和Dashboard支持Nova提供了RESTAPI,使得用户可以通过命令行工具、SDK或者Dashboard(Horizon)来管理虚拟机。项目需求分析任务8.2认识Nova计算服务1.Nova服务的系统架构8.2.1Nova服务的系统架构和子服务调用

Nova是OpenStack云计算平台的核心组件之一,负责提供计算资源和服务。掌握Nova服务的系统架构及其子服务,可以帮助用户深入理解OpenStack的整体架构和工作原理,从而更好地使用和管理云计算平台。对于系统管理员来说也是至关重要的。可以帮助其更好地进行系统配置、性能调优、故障排查和恢复等工作。Nova采用了模块化架构,将计算节点、调度器、API等模块分离,以实现高可用性和可扩展性。Nova支持多种虚拟化技术,如KVM、Xen、VMware等,这使得它能够在不同的硬件和虚拟化环境中灵活部署。Nova通过一个与AmazonWebServices(AWS)EC2API兼容的WebServicesAPI来对外提供服务,便于用户和开发者进行集成和扩展。1.Nova服务的系统架构8.2.1Nova服务的系统架构和子服务调用

(1)API(

ApplicationProgrammingInterface,应用程序编程接口)

Nova-api是客户端访问Nova的HTTP接口,用于接收和处理客户端发送的HTTP请求。所有对Nova的请求都首先由Nova-api进行处理。Nova-api对接收到的HTTPAPI请求会做如下处理:检查客户端传入的参数是否合法有效。调用Nova其他子服务的处理客户端HTTP请求。格式化Nova其他子服务返回的结果并返回给客户端。访问API的方式有CLI命令行方式、web方式、第三方工具软件访问方式等。

(2)Conductor管理器Nova-conductor是OpenStack中一个RPC(RemoteProcedureCall,远程过程调用)服务,主要提供数据库查询功能。由于Nova-compute经常需要更新数据库,例如更新和获取虚拟机的状态,出于安全性和伸缩性的考虑,Nova-compute并不会直接访问数据库(早期版本Nova-compute可以直接访问数据库,计算节点一旦被入侵,整个库都危险),而是将这个任务委托给Nova-conductor。Nova-conductor作为Nova-compute和数据库之间交互的中介,避免直接访问由Nova-compute服务创建的云数据库。因此,应该避免Nova-compute和Nova-conductor部署在同一个计算节点上。本项目中将Nova-conductor部署在Controller节点上,而将Nova-compute部署在Compute节点上。1.Nova服务的系统架构8.2.1Nova服务的系统架构和子服务调用

(3)Scheduler调度器Nova-scheduler是Nova服务负责调度的子服务。当客户端向Nova服务器发起创建虚拟机请求时,Nova-scheduler根据需求和计算资源的分布情况决定虚拟机创建在哪个节点上。(4)Compute计算Nova-compute是管理虚拟机的核心服务,在计算节点上运行。通过调用HypervisorAPI实现节点上的虚拟机实例的生命周期管理。OpenStack对虚拟机实例的操作,最后都是交给Nova-compute来完成的。Nova-compute与Hypervisor一起实现OpenStack对虚拟机实例生命周期的管理。(5)DB(DataBase数据库)Nova会有一些数据需要存放到数据库中,一般使用MySQL数据库安装在控制节点上(名为nova的数据库)。1.Nova服务的系统架构8.2.1Nova服务的系统架构和子服务调用除此之外,还有NovaCert子服务,主要用于管理证书,为了兼容AWS(AWS提供一整套的基础设施和应用程序服务,使得几乎所有的应用程序在云上运行)。Nova包含众多的子服务,这些子服务之间需要相互协调和通信。为解耦各个子服务,Nova通过MessageQueue作为子服务的信息中转站。在Nova中的各个组件之间具有很松的耦合性,意思就是其中有些服务不启动,Nova服务也能正常工作。在Nova中,要实现基本的虚拟机管理功能,至少需要启动Nova-api、Nova-conductor、Nova-compute和Nova-scheduler服务。其中Nova-compute需要在每个计算节点中都启动,而Nova-api、Nova-conductor、和Nova-scheduler服务只需要在Controller节点上启动即可。2.Nova子服务的调用8.2.1Nova服务的系统架构和子服务调用

Nova的各个子服务之间需要相互协调和通信,共同完成虚拟机的创建、管理、调度和删除等操作。子服务之间正确的调用关系,可以确保系统能够正常运行。例如,Nova-api负责接收和响应客户的API调用,如果它不能正确调用Nova-scheduler和Nova-compute等子服务,就无法完成虚拟机的创建和管理。掌握Nova不同子服务之间的调用关系,可以帮助系统管理员更快地定位和解决故障。当系统出现问题时,管理员可以根据调用关系,迅速找到问题所在,并采取相应的措施进行修复。此外,了解调用关系还可以帮助管理员更好地进行系统维护和优化,提高系统的性能和稳定性。下面通过创建一台虚拟机为例,简述Nova不同子服务之间的调用关系。2.Nova子服务的调用8.2.1Nova服务的系统架构和子服务调用

(1)客户(可以是OpenStack最终用户,也可以是其他程序)向API(Nova-api)发送请求:“帮我创建一个虚拟机”。(2)API对请求做一些必要处理后,向Messaging(RabbitMQ)发送了一条消息:“让Scheduler创建一个虚拟机”。(3)Scheduler(Nova-scheduler)从Messaging获取到API发给它的消息,然后执行调度算法,从若干计算节点中选出节点A。(4)Scheduler向Messaging发送了一条消息:“在计算节点A上创建这个虚拟机”。(5)计算节点A的Compute(Nova-compute)从Messaging中获取到Scheduler发给它的消息,然后在本节点的Hypervisor上启动虚拟机。(6)在虚拟机创建的过程中,Compute如果需要查询或更新数据库信息,会通过Messaging向Conductor(Nova-conductor)发送消息,Conductor负责数据库访问。1.调度管理8.2.2Nova计算服务核心技术在创建实例的过程中,Schedule是一个非常重要的环节,可以应用多种规则,考虑内存使用率、CPU负载率、CPU架构等多种因素,根据一定的算法,确定虚拟机实例能够运行在哪一台计算机服务器上。Nova-scheduler服务会从消息队列中接收一个虚拟机实例的请求,通过读取数据库的内容,从可用资源池中选择最合适的计算节点,创建新的虚拟机实例。Scheduler调度器的类型有随机调度器(Chance-scheduler)、缓存调度器(Caching-scheduler)和过滤器调度器(Filter-scheduler),Filter-scheduler是Scheduler默认的调度器,其调度过程主要分为以下两个步骤。通过指定的过滤器选择满足条件的计算节点,比如内存使用率,可以使用多个过滤器依次进行过滤。(预选)对过滤之后的主机列表进行权重计算(Weighting)并排序,选择最优的计算节点来创建虚拟机实例(Instance)。(优选)Nova允许使用第三方Scheduler,配置Scheduler_driver即可,这体现了OpenStack的开放性。Scheduler可以使用多个Filter-scheduler依次进行过滤,过滤之后的节点再通过计算权重选出最适合的节点。1.调度管理8.2.2Nova计算服务核心技术最开始有6个计算节点,分别是主机1、主机2…主机6,通过多个Filter层层过滤,主机2和主机4没有通过,被刷掉了。余下的主机1、主机3、主机5和主机6,经过计算权重,结果主机5得分最高,最终入选。1.调度管理8.2.2Nova计算服务核心技术当Filter-scheduler需要执行调度操作时,会让Filter对计算节点进行判断,Filter返回True或False。当有多个计算节点通过了过滤,Scheduler会对每个计算节点打分,得分最高的获胜。打分的过程就是Weighting(计算权重值)。目前Nova-scheduler是根据计算节点空闲的内存量计算权重值,空闲内存越多,权重越大,虚拟主机将被部署到当前空闲内存最多的计算节点上,最终将消息通过RPC传给Nova-compute供后面使用。当过滤调度器需要执行调度操作时,会调用过滤器对计算节点进行判断,返回True或False,按照主机列表中的顺序依次过滤。在/etc/nova/nova.conf配置文件中的scheduler_available_filters选项用于配置可用过滤器,默认是所有Nova自带的过滤器都可以使用;scheduler_default_filters选项用于指定Nova-schedule服务真正使用的过滤器,过滤调度器将按照列表中的顺序依次过滤。默认的顺序为再审过滤器(RetryFilter)、可用区域过滤器(AvailabilityZoneFilter)、内存过滤器(RamFilter)、磁盘过滤器(DiskFilter)、核心过滤器(CoreFilter)、计算过滤器(ComputeFilter)、计算能力过滤器(ComputeCapabilitiesFilter)、镜像属性过滤器(ImagePropertiesFilter)、服务器组反亲和性过滤器(ServerGroupAntiAffinityFilter)、服务器组亲和性过滤器(ServerGroupAffinityFilter)。2.虚拟化技术8.2.2Nova计算服务核心技术

Nova管理着OpenStack云里的计算资源、网络、授权和扩展需求。但是Nova本身不能提供虚拟化功能,Nova通过独立的软件管理模块实现XenServer、Hyper-V和VMWareESX的调用与管理。同时对于其他的Hypervisor,如KVM、LXC、QEMU、UML和Xen则通过Libvirt标准接口统一实现。Libvirt是一种实现虚拟化平台能力交互的工具集,它为所支持的Hypervisor提供一种通用的API接口套件,上层管理平台(如Nova)通过Libvirt实现对虚拟机的生命周期的管理。Hypervisor是计算节点上的虚拟化管理程序,虚拟机管理最底层的程序。不同虚拟化技术提供自己的Hypervisor。Nova-compute为这些Hypervisor定义了统一的接口,Hypervisor只需要实现这些接口,就可以以Driver的形式即插即用到OpenStack系统中。1.Nova物理部署8.2.3Nova服务的部署架构

OpenStack是一个无中心结构的分布式系统,其物理部署非常灵活,可以部署到多个节点上,以获得更好的性能和高可用性。当然,也可以将所有的服务都安装在一台物理机上作为一个All-in-One测试环境。Nova只是OpenStack的一个子系统,由多个组件和服务组成,可将它们部署在计算节点和控制节点这两类节点上。在计算节点上安装Hypervisor以运行虚拟机,只安装Nova-compute即可。其他Nova组件和服务等则一起部署在控制节点上,如Nova-api、Nova-scheduler、Nova-conductor等,以及RabbitMQ和SQL数据库。客户端使用计算实例并不是直接访问计算节点的,而是通过控制节点提供的API来访问。如果一个控制节点同时也作为一个计算节点,则需要在上面运行Nova-compute。通过增加控制节点和计算节点可实现简单方便的系统扩容。Nova是可以水平扩展的,可以将多个Nova-api、Nova-conductor部署在不同节点上以提高服务能力,也可以运行多个Nova-scheduler来提高可靠性。1.Nova物理部署8.2.3Nova服务的部署架构

Nova经典部署模式是一个控制节点对应多个计算节点。1.Nova物理部署8.2.3Nova服务的部署架构

Nova负载均衡部署模式则通过部署多个控制节点实现,当多个节点运行Nova-api时,要在前端做负载均衡。2.Nova的Cell架构8.2.3Nova服务的部署架构

Nova为了增加横向扩展以及分布式、大规模部署能力,同时又不增加数据库和消息中间件的复杂度,引入了Cell概念。OpenStack将大的Nova集群划分成小的逻辑单元Cell,每个Cell逻辑单元都有自己的消息队列和数据库,可以解决规模增大时引起的瓶颈问题。在Cell中,Keystone、Neutron、Cinder、Glance等资源是共享的。Cell的功能允许以更加灵活的分布式的方式实现对OpenStackCompute云的缩放,而不需要更加复杂的技术。Cell的结构是树型结构。最顶层的Cell为一个APICell(父Cell)和下面多个ChildCell(子Cell),每个Cell具备独立消息队列和数据库,降低APICell的负载压力,共同协作以支持超大规模资源管理和调度。APICell中的主机运行一个Nova-api服务,主要负责接收用户请求,并将请求通过消息队列路由到指定的ChildCell,ChildCell则包含除Nova-api之外的所有Nova服务,实现具体的计算节点服务。Cell之间的通信通过Nova-cells服务进行,支持消息路由、分级调度和资源统计等功能。在Cell结构中,调度分为两级,首先选择Cell,然后在选定的Cell内进行主机调度。这种设计提高了系统的扩展性和性能,支持更大规模的部署。通过Cell的划分,OpenStack能够支持更多的计算节点,提升集群管理规模。Cell常用的部署模式有两种,包括单Cell部署和多Cell部署。2.Nova的Cell架构8.2.3Nova服务的部署架构(1)单Cell部署在OpenStack云平台中,单Cell部署是指仅使用一个Cell管理所有计算节点的部署模式。在该模式下,所有计算节点(Hypervisor)由单一Cell管理,无需跨Cell通信;虚拟机(VM)的创建、迁移、删除等操作均在单一Cell内完成,调度决策集中,降低了复杂度。此模式适合小规模环境(如测试云、边缘计算场景),部署成本低,管理便捷。例如,一个小型企业搭建私有云,初期仅部署50台服务器,采用单Cell即可高效管理;若后续扩展到千台、万台规模,单Cell可能成为性能瓶颈,则需引入多Cell分布式架构。2.Nova的Cell架构8.2.3Nova服务的部署架构(2)多Cell部署由一个APICell和多个ChildCell组成,多Cell部署通过分布式资源管理与调度,使OpenStack能够高效应对超大规模计算需求,成为构建大规模云计算基础设施的关键设计。多Cell的部署涉及Nova_api数据库中的3个表,分别是cell_mappings、host_mappings和instance_mappings表。cell_mappings表中记录了每个Cell的名字和其消息队列连接地址与数据库连接地址。通过该表中记录的信息,APICell中的Nova-api服务和Nova-conductor服务就知道该如何连接到Cell中的消息队列和数据库了,并进一步将消息发送到Cell中的消息队列,或者直接访问Cell中的Nova数据库。在host_mappings表中记录了计算节点和Cell之间的对应关系,而instance_mappings表则记录了instance虚拟机和Cell之间的对应关系。通过这两个表的映射关系,APICell中的服务就可以轻易知道计算节点或者虚拟机所处的Cell,并通过cell_mappings数据表中提供的链接对其进行操作。2.Nova的Cell架构8.2.3Nova服务的部署架构多Cell部署由三部分组成,分别是Cell0、Cell1和Cell2。其中位于最上层的Cell0,也就是APICell,而下层的Cell1与Cell2则是平行对等的关系,他们之间无交互,相互独立,还可以继续增加Cell3、Cell4。上层的APICell主要包括了Nova-api、Nova-scheduler、Nova-conductor这3个Nova服务,同时在APICell中还需要MQ提供组件内的通信服务。在每个Cell中,都有自己独立使用的数据库、消息队列和Nova-conductor服务(如蓝框Cell1和红框Cell2所示),当前Cell中的所有计算节点,全部将数据发送到当前Cell中的消息队列,由Nova-conductor服务获取后,保存至当前Cell的Nova数据库中。整个过程都不会涉及到APICell中的消息队列。因此通过对计算节点进行Cell划分,可以有效降低APICell中消息队列和数据库的压力。假如一个MQ能支持200个计算节点,则在划分Cell以后,每个Cell都可以支持200个计算节点,有N个Cell就可以支持N*200个计算节点,因此可以极大提升单个OpenStack的集群管理规模。2.Nova的Cell架构8.2.4Nova服务的工作过程

Nova作为OpenStack的核心计算服务,直接管理虚拟机全生命周期,包括创建、调度、迁移和销毁。深入理解Nova服务的工作过程至关重要。掌握其工作原理能够清晰理解整个云平台资源调度逻辑;熟悉Nova组件的交互流程,可快速定位虚拟机部署、性能瓶颈等问题;掌握Nova与Glance、Cinder等组件的协作,为日后扩展异构硬件支持(如GPU、FPGA)奠定基础。因此,精通Nova服务是驾驭OpenStack计算资源、确保云平台高效稳定运行的关键。本节内容通过在OpenStack云平台上创建虚拟机,通过该创建流程来学习Nova的整个工作过程。2.Nova的Cell架构8.2.4Nova服务的工作过程(1)当用户通过web界面或命令行要求执行创建实例的操作时,web界面或命令行通过RESTfulAPI向Keystone获取认证信息。(2)Keystone通过验证用户请求认证信息,并生成auth-token返回给对应的认证请求。(3)验证通过后,web界面或命令行通过RESTfulAPI向Nova-api发送一个bootinstance的请求(携带auth-token)。(4)Nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token。(5)Keystone验证token是否有效,如有效则返回有效的认证和对应的角色(注:有些操作需要有角色权限才能操作)。(6)通过认证后Nova-api和数据库通讯。(7)初始化新建虚拟机的数据库记录。(8)Nova-api通过rpc.call向Nova-scheduler请求是否有创建虚拟机的资源(HostID)。(9)Nova-scheduler进程侦听消息队列,获取Nova-api的请求。(10)Nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。2.Nova的Cell架构8.2.4Nova服务的工作过程(11)对于有符合虚拟机创建的主机,Nova-scheduler更新数据库中虚拟机对应的物理主机信息。(12)Nova-scheduler通过rpc.cast向Nova-compute发送对应的创建虚拟机请求的消息。(13)Nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。(14)Nova-compute通过rpc.call向Nova-conductor请求获取虚拟机消息。(Flavor)(15)Nova-conductor从消息队队列中拿到Nova-compute请求消息。(16)Nova-conductor根据消息查询虚拟机对应的信息。(17)Nova-conductor从数据库中获得虚拟机对应信息。(18)Nova-conductor把虚拟机信息通过消息的方式发送到消息队列中。(19)Nova-compute从对应的消息队列中获取虚拟机信息消息。(20)Nova-compute通过keystone的RESTfullAPI拿到认证的token,并通过HTTP请求Glance-api获取创建虚拟机所需要镜像。2.Nova的Cell架构8.2.4Nova服务的工作过程(21)Glance-api向Keystone认证token是否有效,并返回验证结果。(22)Token验证通过,Nova-compute获得虚拟机镜像信息(URL)。(23)Nnova-compute通过Keystone的RESTfullAPI拿到认证k的token,并通过HTTP请求Neutron-server获取创建虚拟机所需要的网络信息。(24)Neutron-server向Keystone认证token是否有效,并返回验证结果。(25)Token验证通过,Nova-compute获得虚拟机网络信息。(26)Nova-compute通过Keystone的RESTfullAPI拿到认证的token,并通过HTTP请求Cinder-api获取创建虚拟机所需要的持久化存储信息。(27)Cinder-api向Keystone认证token是否有效,并返回验证结果。(28)Token验证通过,Nova-compute获得虚拟机持久化存储信息。(29)Nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。2.Nova的Cell架构8.2.4Nova服务的工作过程(21)Glance-api向Keystone认证token是否有效,并返回验证结果。(22)Token验证通过,Nova-compute获得虚拟机镜像信息(URL)。(23)Nnova-compute通过Keystone的RESTfullAPI拿到认证k的token,并通过HTTP请求Neutron-server获取创建虚拟机所需要的网络信息。(24)Neutron-server向Keystone认证token是否有效,并返回验证结果。(25)Token验证通过,Nova-compute获得虚拟机网络信息。(26)Nova-compute通过Keystone的RESTfullAPI拿到认证的token,并通过HTTP请求Cinder-api获取创建虚拟机所需要的持久化存储信息。(27)Cinder-api向Keystone认证token是否有效,并返回验证结果。(28)Token验证通过,Nova-compute获得虚拟机持久化存储信息。(29)Nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。任务8.3控制节点部署Nova服务8.3.1创建数据库并授权1.进入数据库以root用户身份进入MariaDB数据库。命令如下所示。[root@controller~]#mysql-uroot-p0000002.创建数据库

Nova服务为了区分不同的服务功能和权限管理需要创建3个数据库,分别是“nova_api”、“nova”、“nova_cell0”。命令如下所示。MariaDB[(none)]>createdatabasenova_api;MariaDB[(none)]>createdatabasenova;MariaDB[(none)]>createdatabasenova_cell0;‌nova_api‌:这个数据库用于存储API相关的数据,包括API的调用记录、用户认证信息等。通过将API数据单独存储,可以更好地管理API的访问和权限,确保API服务的稳定性和安全性。‌nova‌:这个数据库存储了与虚拟机实例相关的所有数据,包括虚拟机的创建、运行状态、快照等。通过将虚拟机数据单独存储,可以更好地管理和优化虚拟机的性能和稳定性。‌nova_cell0‌:这个数据库主要用于cell架构中的数据存储,特别是在分布式部署中,用于存储跨节点的数据同步和状态管理信息。通过将跨节点数据单独存储,可以确保数据的一致性和同步性。8.3.1创建数据库并授权3.创建用户并授权使用nova数据库创建MySQL的nova用户,允许用户从本地主机(localhost表示)和任意远程主机(%表示)都能访问,使用密码“000000”。因为上一步创建了3个数据库,需要让nova用户对每个数据库都拥有这样的权限,所以需要用到6条授权命令来实现。命令如下所示。MariaDB[(none)]>grantallprivilegesonnova_api.*to'nova'@'localhost'identifiedby'000000';MariaDB[(none)]>grantallprivilegesonnova_api.*to'nova'@'%'identifiedby'000000';MariaDB[(none)]>grantallprivilegesonnova.*to'nova'@'localhost'identifiedby'000000';MariaDB[(none)]>grantallprivilegesonnova.*to'nova'@'%'identifiedby'000000';MariaDB[(none)]>grantallprivilegesonnova_cell0.*to'nova'@'localhost'identifiedby'000000';MariaDB[(none)]>grantallprivilegesonnova_cell0.*to'nova'@'%'identifiedby'000000';说明:此时还可以查看nova数据库的情况、权限的授予情况,操作过程同Keystone服务,请参考项目5中5.3.1任务中4、5的操作。通过上面的设置,可以确保Nova服务的各个组件能够正确地访问和使用这些数据库,从而保证整个OpenStack平台的稳定性和高效性‌。4.退出数据库在数据库中操作结束之后,可以使用“exit”命令退出。MariaDB[(none)]>exit;8.3.2部署Nova服务1.安装Nova软件包使用yum命令安装Nova服务在控制节点所需要的4个软件包,分别是“openstack-nova-api”、“openstack-nova-conductor”、“openstack-nova-novncproxy”、“openstack-nova-scheduler”。命令如下所示。[root@controller~]#yuminstall-yopenstack-nova-apiopenstack-nova-conductoropenstack-nova-novncproxyopenstack-nova-scheduler

openstack-nova-api:Nova与外部的接口模块。

openstack-nova-conductor:提供数据库访问。

openstack-nova-novncproxy:Nova虚拟网络控制台(VirtualNetworkConsole,VNC)代理模块,支持用户通过VNC访问云主机。

openstack-nova-scheduler:Nova调度服务,用来选择某台主机进行云主机创建。安装“openstack-nova-api”软件包会自动创建名为“nova”的Linux操作系统用户和同名的用户组,可以用下面的方法查看用户和用户组信息。8.3.2部署Nova服务2.查看用户和用户组信息在/etc/passwd文件中查找含有“nova”字符串的行,显示的内容是nova用户的相关信息,包括用户名nova,用户ID为166,所在组的ID为166等。[root@controller~]#cat/etc/passwd|grepnovanova:x:166:166:OpenStackNovaDaemons:/var/lib/nova:/sbin/nologin在/etc/group文件中查找含有“nova”字符串的行,显示的内容是nova用户组的信息。[root@controller~]#cat/etc/group|grepnovanova:x:166:8.3.2部署Nova服务3.修改Nova配置文件(1)精简配置文件[root@controller~]#cp/etc/nova/nova.conf/etc/nova/nova.bak第2步,通过使用grep命令对备份文件nova.bak采用反向查找空行(^$)和注释行(以“#“开头)的方式,实际是去掉了文件中的空行和注释行,将文件中生效的部分保留。通过“>”输出重定向符将内容输出到/etc/nova/nova.conf文件中,变成了精简版的配置文件。[root@controller~]#grep-Ev'^$|#'/etc/nova/nova.bak>/etc/nova/nova.conf第1步,先对文件做备份操作,生成的新文件名为nova.bak,依然保存在/etc/nova目录中。命令如下所示。8.3.2部署Nova服务3.修改Nova配置文件(2)编辑配置文件nova.conf[root@controller~]#vi/etc/nova/nova.conf第2步,将[api_database]段落中“connection”属性添加“mysql+pymysql(数据库类型)://nova(登录数据库用户名):000000(用户密码)@controller(数据库主机名)/nova_api(数据库)”内容,实现与nova_api数据库的连接。将[database]段落中“connection”属性添加“mysql+pymysql(数据库类型)://nova(登录数据库用户名):000000(用户密码)@controller(数据库主机名)/nova(数据库)”内容,实现与nova数据库的连接。[api_database]connection=mysql+pymysql://nova:000000@controller/nova_api[database]connection=mysql+pymysql://nova:000000@controller/nova第1步,使用vi编辑器打开配置文件/etc/nova/nova.conf进行编辑。8.3.2部署Nova服务3.修改Nova配置文件(2)编辑配置文件nova.conf[api]auth_strategy=keystone#认证策略设置为使用Keystone服务[keystone_authtoken]www_authenticate_uri=http://controller:5000auth_url=http://controller:5000memcached_servers=controller:11211auth_type=passwordproject_domain_name=Defaultuser_domain_name=Defaultproject_name=projectusername=novapassword=000000第3步,修改“[api]”与“[keystone_authtoken]”部分,实现与Keystone交互。8.3.2部署Nova服务3.修改Nova配置文件(2)编辑配置文件nova.conf以下是Keystone认证信息中每条语句的作用。

www_authenticate_uri输入Keystone服务的URI,即位置信息。对于外部用户Keystone服务定义了一个端口号为5000的auth_url,这里输入的是auth_url。

memcached_servers输入Memcached服务所在主机地址以及端口号。

auth_type输入Keystone认证所使用的类型,通常使用password类型。

username输入Nova服务在Keystone中注册时的用户名。

password输入Nova服务在Keystone中注册时所使用的密码,这里为000000,在实际OpenStack生产环境的部署过程中该密码值必须与后续添加Nova用户时所使用的密码一致。

project_domain_name输入项目所在的域名。

user_domain_name输入用户所在的域名。

project_name输入Nova服务所属的项目名,OpenStack所有的组件均使用service项目。8.3.2部署Nova服务3.修改Nova配置文件(2)编辑配置文件nova.conf[placement]auth_url=http://controller:5000auth_type=passwordproject_domain_name=Defaultuser_domain_name=Defaultproject_name=projectusername=placementpassword=000000region_name=RegionOne第4步,修改“[placement]”部分,实现与Placement交互。8.3.2部署Nova服务3.修改Nova配置文件(2)编辑配置文件nova.conf[glance]api_servers=http://controller:9292第五步,修改“[glance]”部分,实现与Glance交互。[oslo_concurrency] #指定锁路径lock_path=/var/lib/nova/tmp第六步,修改[oslo_concurrency] 段落下“lock_path”属性,设置其值为“/var/lib/nova/tmp”,配置锁路径。这里的“/var/lib/nova/tmp”是在安装软件包时由“nova”用户创建的,因此“nova”对它拥有所有权限。不要随意更改该路径。8.3.2部署Nova服务3.修改Nova配置文件(2)编辑配置文件nova.conf[DEFAULT]enabled_apis=osapi_compute,metadata

transport_url=rabbit://rabbitmq:000000@controller:5672my_ip=0use_neutron=truefirewall_driver=nova.virt.firewall.NoopFirewallDriver第七步,修改“[DEFAULT]”部分,配置使用消息队列及防火墙等信息。[vnc]enabled=trueserver_listen=$my_ipserver_proxyclient_address=$my_ip第八步,修改“[VNC]”部分,配置VNC连接模式,VNC代理使用控制节点的管理接口IP地址。8.3.2部署Nova服务3.修改Nova配置文件(3)配置文件修改完成后查看文件内容如下所示:[root@controller~]#cat/etc/nova/nova.conf[DEFAULT]enabled_apis=osapi_compute,metadatamy_ip=0transport_url=rabbit://openstack:000000@controller:5672/use_neutron=truefirewall_driver=nova.virt.firewall.NoopFirewallDriver[api]auth_strategy=keystone[api_database]connection=mysql+pymysql://nova:000000@controller/nova_api[barbican][cache][cinder][compute][conductor][console][consoleauth][cors][cyborg][database]connection=mysql+pymysql://nova:000000@controller/nova8.3.2部署Nova服务3.修改Nova配置文件(3)配置文件修改完成后查看文件内容如下所示:[devices][ephemeral_storage_encryption][filter_scheduler][glance]api_servers=http://controller:9292[guestfs][healthcheck][hyperv][image_cache][ironic][key_manager][keystone][keystone_authtoken]www_authenticate_uri=http://controller:5000/auth_url=http://controller:5000/memcached_servers=controller:11211auth_type=passwordproject_domain_name=Defaultuser_domain_name=Defaultproject_name=serviceusername=novapassword=000000[libvirt]8.3.2部署Nova服务3.修改Nova配置文件(3)配置文件修改完成后查看文件内容如下所示:[metrics][mks][neutron][notifications][oslo_concurrency]lock_path=/var/lib/nova/tmp[oslo_messaging_amqp][oslo_messaging_kafka][oslo_messaging_notifications][oslo_messaging_rabbit][oslo_middleware][oslo_policy][pci][placement]region_name=RegionOneproject_domain_name=Defaultproject_name=serviceauth_type=passworduser_domain_name=Defaultauth_url=http://controller:5000/v3username=placementpassword=000000[powervm]8.3.2部署Nova服务3.修改Nova配置文件(3)配置文件修改完成后查看文件内容如下所示:[privsep][profiler][quota][rdp][remote_debug][scheduler]discover_hosts_in_cells_interval=300[serial_console][service_user][spice][upgrade_levels][vault][vendordata_dynamic_auth][vmware][vnc]enabled=trueserver_listen=$my_ipserver_proxyclient_address=$my_ip[workarounds][wsgi][xenserver][zvm]8.3.2部署Nova服务4.初始化Nova数据库

Nova安装文件提供了数据库的基础表数据,此时还没有将数据导入“nova”相关数据库中,需要手动进行操作中。[root@controller~]#su-s/bin/sh-c"nova-manageapi_dbsync"nova(1)初始化“nova_api”数据库(2)创建“cell1”单元,该单元将使用“nova”数据库[root@controller~]#su-s/bin/sh-c"nova-managecell_v2create_cell--name=cell1--verbose"nova(3)映射“nova”到“cell0”数据库,使“cell0”的表结构和“nova”的保持一致。[root@controller~]#su-s/bin/sh-c"nova-managecell_v2map_cell0"nova初始化“nova”数据库,由于映射的存在,在“cell0”中同时创建相同数据表。[root@controller~]#su-s/bin/sh-c"nova-managedbsync"nova8.3.2部署Nova服务4.初始化Nova数据库

sunova:su命令用于用户切换。这里切换到“nova”用户,该用户已经拥有对“nova”数据库的管理权限。

-s/bin/sh:-s为su命令的选项,指定用什么编译器(Shell)来执行命令,“/bin/sh”就是指定的编译器。

-c:su命令的选项,在其后引号内的是具体执行的命令。

nova-manage:管理OpenStack的Nova组件的各种任务和资源

dbsync:实现了数据同步到数据库。注意:此命令执行后会出现两个警告,后续版本会改进,再执行一遍就不报错了。8.3.2部署Nova服务4.初始化Nova数据库(4)检查确认cell0和cell1注册成功[root@controller~]#su-s/bin/sh-c"nova-managecell_v2list_cells"nova+-------+--------------------------------------+---------------+-------------------------------------------------+----------+|名称|UUID|TransportURL|数据库连接|Disabled|+-------+--------------------------------------+---------------+-------------------------------------------------+----------+|cell0|00000000-0000-0000-0000-000000000000|none:/|mysql+pymysql://nova:****@controller/nova_cell0|False||cell1|f92b40ef-bdd1-4bfa-9a5f-172b0f886a9d|rabbit:|mysql+pymysql://nova:****@controller/nova|False|+-------+--------------------------------------+---------------+-------------------------------------------------+----------+8.3.2部署Nova服务4.初始化Nova数据库(5)查看nova和nova_api数据库中表的同步情况,命令及结果如下所示。[root@controller~]#mysql-uroot-p000000-e“usenova;showtables;”+--------------------------------------------+|Tables_in_nova|+--------------------------------------------+|agent_builds||aggregate_hosts||aggregate_metadata||aggregates||allocations||block_device_mapping||bw_usage_cache||cells||certificates||compute_nodes||console_auth_tokens||console_pools||consoles||dns_domains||fixed_ips||floating_ips|8.3.2部署Nova服务4.初始化Nova数据库(5)查看nova和nova_api数据库中表的同步情况,命令及结果如下所示。|instance_actions||instance_actions_events||instance_extra||instance_faults||instance_group_member||instance_group_policy||instance_groups||instance_id_mappings||instance_info_caches||instance_metadata||instance_system_metadata||instance_type_extra_specs||instance_type_projects||instance_types||instances||inventories||key_pairs||migrate_version||migrations||networks||pci_devices||project_user_quotas||provider_fw_rules|8.3.2部署Nova服务4.初始化Nova数据库(5)查看nova和nova_api数据库中表的同步情况,命令及结果如下所示。|quota_classes||quota_usages||quotas||reservations||resource_provider_aggregates||resource_providers||s3_images||security_group_default_rules||security_group_instance_association||security_group_rules||security_groups||services||shadow_agent_builds||shadow_aggregate_hosts||shadow_aggregate_metadata||shadow_aggregates||shadow_block_device_mapping||shadow_bw_usage_cache||shadow_cells

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论