1.云计算概述
云计算提供的计算机资源服务是与水、电、煤气和电话类似的公共资源的服务。亚马逊云计算服务(Amazon Web Services,AWS)是提供专业的云计算服务,于2006年推出,以Web服务的形式向企业提供IT基础设施服务,通常称为云计算,其主要优势之一是能够以根据业务发展来扩展较低可变成本来替代前期资本基础设施费用,它已成为公有云的事实标准,而OpenStack是开源云计算管理平台的一面旗帜,也已经成为开源云架构的事实标准。

2.云计算的起源
1959年克里斯托弗·斯特雷奇(Christopher Strachey)提出虚拟化的基本概念,2006年3月,亚马逊公司首先提出弹性计算云服务,2006年8月,Google首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会首次提出“云计算(Cloud Computing)”的概念,从那时候起,云计算开始受到关注,这也标志着云计算的诞生。2010年工信部联合发改委联合印发《关于做好云计算服务创新发展试点示范工作的通知》,到2015年工信部关于印发《云计算综合标准化体系建设指南》的通知,云计算由最初的美好愿景到概念落地,目前已经进入到广泛应用阶段。云计算经历了集中时代向网络时代转变,最终向分布式时代转换,在分布式基础之上形成了云时代,如图所示。
图片 1.png

3.云计算的基本概念
相信读者都听到过阿里云、华为云、百度云、腾讯云等,那么到底什么是云计算?云计算又能做什么呢?云计算(cloud computing)是一种基于网络的超级计算模式,基于用户的不同需求提供所需要的资源,包括计算资源、网络资源、存储资源等。云计算服务通常运行在若干台高性能物理服务器之上,提供每秒10万亿次的运算能力,可以用来模拟核爆炸、预测气候变化以及市场发展趋势等。

(1)云计算的定义。
云计算将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务,这种资源池称为“云”。“云”是一些可以自我维护和管理的虚拟计算资源,通常为一些大型服务器集群,包括计算服务器、存储服务器、宽带资源等,云计算将所有的计算资源集中起来,并由软件实现自动管理,无需人为参与。之所以称为“云”,是因为它在某些方面具有现实中云的特征:云一般都较大;云的规模可以动态伸缩,它的边界是模糊的;云在空中飘忽不定,你无法也无需确定它的具体位置,但它确实存在于某处。

云计算有狭义和广义之分:狭义上讲,“云”实质上就是一个网络,云计算就是一种提供资源的网络,包括硬件、软件和平台,使用者可以随时获取“云”上的资源,按需求量使用,并且可以看成是无限扩展的,只要按使用量付费就可以,云都可以提供,“云”就像自来水厂一样,我们可以随时接水,并且不限量,按照自己家的用水量,付费给自来水厂就可以,在用户看来,水的资源是无限的。广义上说,云计算是与信息技术、软件、互联网相关的一种服务,是通过网络以按需、易扩展的方式获得所需要的服务,这种计算资源共享池叫做“云”,云计算把许多计算资源集合起来,通过软件实现自动化管理,只需要很少的人参与,就能让资源被快速提供。也就是说,计算能力作为一种商品,可以在互联网上流通,就像水、电、煤气一样,可以方便地取用,且价格较为低廉,这种服务可以是与IT和软件、互联网相关的,也可以是任意其他的服务。

总之,云计算不是一种全新的网络技术,而是一种全新的网络应用概念,云计算的核心概念就是以互联网为中心,在网站上提供快速且安全的云计算服务与数据存储,让每一个使用互联网的人都可以使用网络上的庞大计算资源与数据中心。云计算是继互联网、计算机之后信息时代一种新的革新,云计算是信息时代的一个巨大飞跃,未来的时代可能是云计算的时代,虽然目前有关云计算的定义有很多,但总体上来说,云计算虽然有许多的含义,但概括来说,云计算的基本含义是一致的,即云计算具有很强的扩展性和需要性,可以为用户提供一种全新的体验,云计算的核心是可以将很多的计算机资源协调在一起,因此,使用户通过网络就可以获取到无限的资源,同时获取的资源不受时间和空间的限制。

(2)云计算的服务模式。
云计算的服务模式由3部分组成,包括基础设施即服务(Infrastructure as a Service,IaaS)、平台即服务(Platform as a Service,PaaS)和软件即服务(Software as a Service,SaaS),如图所示。
图片 2.png

①基础设施即服务IaaS。什么是基础设施呢?服务器,硬盘,网络带宽,交换机等等物理设备都是基础设施。云计算厂商购买服务器、硬盘、网络设施等等,搭建基础服务。我们便可以在云平台根据需求购买相应的计算能力内存空间,磁盘空间大小,网络带宽大小,搭建自己的云计算平台。这类云计算服务提供商典型的代表便是阿里云、腾讯云、华为云等。
优点:能够根据业务需求灵活配置所需,扩展伸缩方便。
缺点:开发维护需要投入较多人力,专业性要求较高。

②平台即服务PaaS。什么是平台呢?平台你可以理解成中间件,这类云计算厂商在基础设施上进行开发,搭建操作系统,提供一套完整的应用解决方案。开发大多数所需中间件服务,比如Mysql数据库服务、RocketMQ服务等等,无需深度开发,专注业务代码即可。典型的代表便是Pivatol Clound Foundary、Google App Engine等。
优点:无需开发中间件,所需及所用,能够快速使用。部署快速,减少人力投入。
缺点:灵活通用性较低,过度依赖平台。

③软件即服务SaaS。软件及服务是大多数人每天都接触到的,比如办公OA系统、腾讯公众号平台,SaaS可直接通过互联网为用户提供软件和应用程序的服务,用户通过租赁的方式获取安装在厂商或者服务供应商那里的软件。虽然这些服务是用于商用或者娱乐,但是它也属于云计算的一部分,一般面向对象是普通用户,最常见的模式是提供用户一组账号和密码。
优点:所见即所得,无需开发。
缺点:需定制,无法快速满足个性化需求。
IaaS主要是对应基础设施,可实现底层资源虚拟化以及实际云应用平台部署,这是一个网络架构由规划架构到最终物理实现的过程;PaaS基于IaaS技术和平台,部署终端用户使用的应用或程序,提供对外服务的接口或者服务产品,最终实现整个平台的管理和平台的可伸缩化;SaaS基于现成的PaaS的基础,作为终端用户的最后接触产品,完成现有资源的对外服务以及服务的租赁化。

(3)云计算的部署类型。
①公有云:在此种模式下,应用程序、资源、存储和其他服务,都由云服务供应商来提供给用户,这些服务多半都是免费的,也有部分按需按使用量来付费,这种模式只能使用互联网来访问和使用。同时,这种模式在私人信息和数据保护方面也比较有保证。这种部署模型通常都可以提供可扩展的云服务并能高效设置。
②私有云:这种云基础设施专门为某一个企业服务,不管是自己管理还是第三方管理,自己负责还是第三方托管,都没有关系。只要使用的方式没有问题,就能为企业带来很显著的帮助。不过这种模式所要面临的是,纠正、检查等安全问题则需企业自己负责,否则出了问题也只能自己承担后果,此外,整套系统也需要自己出钱购买、建设和管理。这种云计算模式可广泛的产生正面效益,从模式的名称也可看出,它可以为所有者提供具备充分优势和功能的服务。
③混合云:混合云是两种或两种以上的云计算模式的混合体,如公有云和私有云混合。他们相互独立,但在云的内部又相互结合,可以发挥出混合的多种云计算模型各自的优势,使用标准的或专有的技术将它们组合起来,具有数据和应用程序的可移植性。

(4)云计算的生态系统。
云计算的生态系统主要涉及硬件、软件、服务、网络和安全5个方面,如图所示。
图片 3.png
①硬件。云计算相关硬件包括服务器、存储设备、网络设备、数据中心成套装备以及提供和使用云服务的终端设备。
②软件。云计算相关软件主要包括资源调度和管理系统、云平台软件和应用软件等。
③服务。服务包括云服务和面向云计算系统建设应用的云支撑服务。
④网络。云计算具有泛在网络访问特性,用户无论通过电信网、互联网或广播电视网,都能够使用云服务。
⑤安全。云安全涉及服务可用性、数据机密性和完整性、隐私保护、物理安全、恶意攻击防范等诸多方面,是影响云计算发展的关键因素之一。

4.虚拟化技术
虚拟化是指为运行的程序或软件营造它所需要的执行环境,在采用虚拟化技术后,程序或软件的运行不再独享底层的物理计算资源,它只是运行在一个完全相同的物理计算资源中,而底层的影响可能与之前所运行的计算机结构完全不同。虚拟化的主要目的是对IT基础设施和资源管理方式的简化。虚拟化的消费者可以是最终用户、应用程序、操作系统、访问资源或与资源交互相关的其他服务。虚拟化是云计算的基础,虚拟化使得在一台物理服务器上可以运行多台虚拟机,虚拟机共享物理机的CPU、内存、I/O硬件资源,但逻辑上虚拟机之间是相互隔离的。IaaS是基础架构设施平台,可实现底层资源虚拟化,云计算、OpenStack都离不开虚拟化的内容,因为虚拟化是云计算重要的支撑技术之一。OpenStack作为IaaS云操作系统,最主要的服务就是为用户提供虚拟机,在目前OpenStack实际应用中,主要使用KVM和Xen这两种Linux虚拟化技术。

5.虚拟化的基本概念
(1)虚拟化定义。
虚拟化就是把物理资源转变为逻辑上可以管理的资源,以打破物理结构之间的壁垒,是在虚拟而不是真实的环境中运行,是一个为了简化管理、优化资源的解决方案。所有的资源都透明地运行在各种各样的物理平台上,资源的管理都将按逻辑方式进行,完全实现资源的自动化分配,而虚拟化技术就是实现它的理想工具。
①虚拟化前。一台主机对应一个操作系统,后台多个应用程序会对特定的资源进行争抢,存在相互冲突的风险;在实际情况下业务系统与硬件进行绑定,不能灵活部署;就数据的统计来说,虚拟化前的系统资源利用率一般只有15%左右。
②虚拟化后。一台主机可以虚拟出多个操作系统,独立的操作系统和应用拥有独立的CPU、内存和I/O资源,相互隔离;业务系统独立于硬件,可以在不同的主机之间进行迁移;充分利用系统资源,对机器的系统资源利用率可以达到60%。

(2)虚拟化体系结构。
虚拟化主要是指通过软件实现的方案,常见的虚拟化体系结构,如图所示。
图片 4.png
这是一个直接在物理主机上运行虚拟机管理程序的虚拟化系统。在X86平台虚拟化技术中,这个虚拟机管理程序通常被称为虚拟机监控器(Virtual Machine Monitor,VMM),又称为Hypervisor。它是运行在物理机和虚拟机之间的一个软件层,物理机被称为主机(Host),虚拟机被称为客户机(Client),中间软件层即Hypervisor。

①主机。指物理存在的计算机,又称宿主计算机。当虚拟机嵌套时,运行虚拟机的虚拟机也是宿主机,但不是物理机。主机操作系统是指宿主计算机的操作系统,在主机操作系统上安装的虚拟机软件可以在计算机模拟一台或多台虚拟机。

②虚拟机。指在物理计算机上运行的操作系统中模拟出来的计算机,又称客户机,理论上完全等同于实体的物理计算机,每个虚拟机都可以安装自己的操作系统或应用程序,并连接网络,运行在虚拟机的操作系统称为客户操作系统。Hypervisor基于主机的硬件资源给虚拟提供了一个虚拟的操作平台并管理每个虚拟机的运行,所有虚拟机独立运行并共享主机的所有硬件资源。

Hypervisor就是提供虚拟机硬件模拟的专门软件,可分为两类:原生型和宿主型。
①原生型(Native)。原生型又称为裸机型(Bare-metal),Hypervisor作为一个精简的操作系统(操作系统也是软件,只不过它是一个比较特殊的软件)直接运行在硬件之上以控制硬件资源并管理虚拟机,比较常见的有VMware ESXi、Microsoft Hyper-V等。

②宿主型(Hosted)。宿主型又称托管型,Hypervisor运行在传统的操作系统之上,同样可以模拟出一整套虚拟硬件平台,比较著名的有VMware Workstation、Oracle Virtual Box等。从性能角度来看,无论原生型还是宿主型都会有性能损耗,但宿主型比原生型的损耗更大,所以企事业生产环境中基本使用的是原生型Hypervisor,宿主型的Hypervisor一般用于实验或测试环境中。

(3)虚拟化分类。
虚拟化分类包括平台虚拟化、资源虚拟化、应用程序虚拟化等。

①平台虚拟化(Platform Virtualization),它是针对计算机和操作系统的虚拟化,又分成服务器虚拟化和桌面虚拟化。
1、服务器虚拟化是一种通过区分资源的优先次序,并将服务器资源分配给最需要它们的工作负载的虚拟化模式,它通过减少为单个工作负载峰值而储备的资源来简化管理和提高效率。如微软的Hyper-V、Citrix的XenServer、VMware的ESXi。
2、桌面虚拟化是为提高人对计算机的操控力,降低计算机使用的复杂性,为用户提供更加方便适用的使用环境的一种虚拟化模式。
如微软的Remote Desktop Services、Citrix的XenDesktop、VMware的View。平台虚拟化主要通过CPU虚拟化、内存虚拟化和I/O接口虚拟化来实现。

②资源虚拟化(Resource Virtualization),针对特定的计算资源进行的虚拟化,例如,存储虚拟化、网络资源虚拟化等。存储虚拟化是指把操作系统有机地分布于若干内外存储器,两者结合成为虚拟存储器。网络资源虚拟化最典型的是网格计算,网格计算通过使用虚拟化技术来管理网络上的数据,并在逻辑上将其作为一个系统呈现给消费者,它动态地提供了符合用户和应用程序需求的资源,同时还将提供对基础设施的共享和访问的简化。当前,有些研究人员提出利用软件代理技术来实现计算网络空间资源的虚拟化。

③应用程序虚拟化(Application Virtualization),它包括仿真、模拟、解释技术等。Java 虚拟机是典型的在应用层进行虚拟化。基于应用层的虚拟化技术,通过保存用户的个性化计算环境的配置信息,可以实现在任意计算机上重现用户的个性化计算环境。服务虚拟化是近年研究的一个热点,服务虚拟化可以使业务用户能按需快速构建应用的需求,通过服务聚合,可屏蔽服务资源使用的复杂性,使用户更易于直接将业务需求映射到虚拟化的服务资源。现代软件体系结构及其配置的复杂性阻碍了软件开发生命周期,通过在应用层建立虚拟化的模型,可以提供最佳开发测试和运行环境。

(4)全虚拟化与半虚拟化。
根据虚拟化实现技术的不同,虚拟化可分为全虚拟化和半虚拟化两种,其中,全虚拟化产品将是未来虚拟化的主流。

①全虚拟化(Full Virtualization)。
也称为原始虚拟化技术,用全虚拟化模拟出来的虚拟机中的操作系统是与底层的硬件完全隔离的,虚拟机中所有的硬件资源都通过虚拟化软件来模拟,包括处理器、内存和外设,支持运行任何理论上可在真实物理平台上运行的操作系统,为虚拟机的配置提供了较大的程序的灵活性,在客户操作系统看来,完全虚拟化的虚拟平台和现实平台是一样的,客户机操作系统察觉不到是运行在一个虚拟平台上,这样的虚拟平台可以运行现有的操作系统,无须对操作系统进行任何修改,因此这种方式被称为完全虚拟化。全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为Hypervisor需要占用一些资源。

②半虚拟化(Para Virtualization)。
它是另一种类似于全虚拟化的技术,需要修改虚拟机中的操作系统来集成一些虚拟化方面的代码,以减小虚拟化软件的负载。半虚拟化模拟出来的虚拟机整体性能会更好一些,因为修改后的虚拟机操作系统承载了部分虚拟化软件的工作,不足之处是,由于要修改虚拟机的操作系统,用户会感知使用的环境是虚拟化环境,而且兼容性比较差,用户使用时比较麻烦,需要获得集成虚拟化代码的操作系统。

6.虚拟化与云计算关系
云计算是很大很广泛的含义范畴,是中间件技术、分布式计算(网格计算)、并行计算、效用计算、网络存储、虚拟化和负载均衡等网络技术发展融合的产物。
虚拟化技术也不一定必须与云计算相关,如CPU虚拟化技术、虚拟内存等也属于虚拟化技术,但与云概念无关,如图所示。
图片 5.png

(1)虚拟化技术的特征。
①更高的资源利用率。
虚拟可支持实现物理资源和资源池的动态共享,提高资源利用率,特别是针对那些平均需求远低于需要为其提供专用资源的不同负载。
②降低管理成本。
虚拟可通过以下途径提高工作人员的效率:减少必须进行管理的物理资源的数量;隐藏物理资源的部分复杂性;通过实现自动化、获得更好的信息和实现中央管理来简化公共管理任务;实现负载管理自动化。另外,虚拟还可以支持在多个平台上使用公共的工具。
③提高使用灵活性。
通过虚拟可实现动态的资源部署和重配置,满足不断变化的业务需求。
④提高安全性。
虚拟可实现较简单的共享机制无法实现的隔离和划分,这些特性可实现对数据和服务进行可控和安全的访问。
⑤更高的可用性。
虚拟可在不影响用户的情况下对物理资源进行删除、升级或改变。
⑥更高的可扩展性。
根据不同的产品,资源分区和汇聚可支持实现比个体物理资源小得多或大得多的虚拟资源,这意味着您可以在不改变物理资源配置的情况下进行规模调整。
⑦互操作性和兼容性。
虚拟资源可提供底层物理资源无法提供的与各种接口和协议的兼容性。
⑧改进资源供应。
与个体物理资源单位相比,虚拟能够以更小的单位进行资源分配。

(2)云计算的特征。
①按需自动服务。
消费者不需要或很少需要云服务提供商的协助,就可以单方面按需获取云端的计算资源。例如,服务器、网络存储等资源是按需自动部署的,不需要与服务供应商进行人工交互。

②广泛的网络访问。
消费者可以随时随地使用云终端设备接入网络并使用云端的计算资源。常见的云终端设备包括手机、平板、笔记本电脑、PDA掌上电脑和台式机等。

③资源池化。
云端计算资源需要被池化,以便通过多租户形式共享给多个消费者,也只有池化才能根据消费者的需求动态分配或再分配各种物理的和虚拟的资源。消费者通常不知道自己正在使用的计算资源的确切位置,但是在自助申请时允许指定大概的区域范围(比如在哪个国家、哪个省或者哪个数据中心)。

④快速弹性。
消费者能方便、快捷地按需获取和释放计算资源,也就是说,需要时能快速获取资源从而扩展计算能力,不需要时能迅速释放资源,以便降低计算能力,从而减少资源的使用费用。对于消费者来说,云端的计算资源是无限的,可以随时申请并获取任何数量的计算资源。但是我们一定要消除一个误解,那就是一个实际的云计算系统不一定是投资巨大的工程,也不一定要购买成千上万台计算机,也不一定具备超大规模的运算能力。其实一台计算机就可以组建一个最小的云端,云端建设方案务必采用可伸缩性策略,刚开始时采用几台计算机,然后根据用户数量规模来增减计算资源。

⑤按需按量可计费。
消费者使用云端计算资源是要付费的,付费的计量方法有很多,比如根据某类资源(如存储、CPU、内存、网络带宽等)的使用量和时间长短计费,也可以按照每使用一次来计费。但不管如何计费,对消费者来说,价码要清楚,计量方法要明确,而云服务提供商需要监视和控制资源的使用情况,并及时输出各种资源的使用报表,做到供需双方费用结算清楚明白。

7.OpenStack所支持的虚拟化技术
在OpenStack环境中,计算服务通过API服务器来控制虚拟机管理程序,它具备一个抽象层,可以在部署时选择一种虚拟化技术创建虚拟机,向用户提供云服务,OpenStack可用的虚拟化技术如下。

(1)KVM。
基于内核的虚拟机(Kernel-based Virtual Machine,KVM)是通用的开放虚拟化技术,也是OpenStack用户使用较多的虚拟化技术,它支持OpenStack的所有特性。

(2)Xen。
Xen是部署快速、安全、开源的虚拟化软件技术,可使多个同样的操作系统或不同操作系统的虚拟机运行在同一主机上,Xen技术主要包括服务器虚拟化平台(XenServer)、云基础架构(Xen Cloud Platform)、管理XenServer和XCP的API程序(XenAPI)、基于Libvert的Xen。OpenStack通过XenAPI支持XenServer和XCP两种虚拟化技术,不过在RHEL等平台上,OpenStack使用的是基于基于Libvert的Xen。

(3)容器。
容器是在单一Linux主机上提供多个隔离的Linux环境的操作系统级虚拟化技术,不像基于虚拟管理程序的传统虚拟化技术,容器并不需要运行专用的客户操作系统,目前的容器有以下两种技术。
①Linux容器(Linux Container,LXC)。提供了在单一可控主机节点上支持多个相互隔离的服务器容器同时执行的机制。
②Docker。一个开源的应用容器引擎,让开发者可以把应用以及依赖包打包到一个可移植的容器中,然后发布到任何流行的Linux平台上,利用Docker也可以实现虚拟化,容器完全使用沙箱机制,相互之间不会有任何接口。
Docker的目的是尽可能减少容器中运行的程序,减少到只运行单个程序,并且通过Docker来管理这个程序,LXC可以快速兼容所有应用程序和工具以及任意管理和编制层次,来替代虚拟机。

虚拟化管理程序提供更好的进程隔离,呈现一个完全的系统,LXC/Docker除了一些基本隔离,并末提供足够的虚拟化管理功能,缺乏必要的安全机制,基于容器的方案无法运行与主机内核不同的其他内核,也无法运行一个完全不同的操作系统,目前OpenStack社区对容器的驱动支持还不如虚拟化管理程序,在OpenStack项目中,LXC属于计算服务项目Nova,通过调用Libvirt来实现,Docker驱动是一种新加入虚拟化管理程序的驱动,目前无法替代虚拟化管理程序。

(4)Hyper-V。
Hyper-V是微软推出的企业级虚拟化解决方案,Hyper-V的设计借鉴了Xen,管理程序采用微内核的架构,兼顾了安全性和性能要求,Hyper-V作为一种免费的虚拟化方案,在OpenStack中得到了很多支持。

(5)VMware ESXi。
VMware提供业界领先且可靠的服务器虚拟化平台和软件定义计算产品,其中ESXi虚拟化平台用于创建和运行虚拟机及虚拟设备,在OpenStack中它也得到了支持,但是如果没有vCenter和企业级许可,一些API的使用会受到限制。

(6)Baremetal与Ironic。
有些云平台除了提供虚拟化和虚拟机服务,还提供传统的主机服务,在OpenStack中可以将Baremetal(裸金属)与其他部署有虚拟化管理程序的节点通过不同的计算池(Availabity Zone,可用区域)一起管理。Baremetal是计算服务的后端驱动,与Libvirt驱动、VMware驱动一样,只不过它是用来管理没有虚拟化的硬件,主要通过PXE和IPMI进行控制管理。

现在Baremetal已经由Ironic所替代,Nova管理的是虚拟机的生命周期,而Ironic管理的是主机的生命周期,Ironic提供了一系列管理主机的API接口,可以对“裸”操作系统的主机进行管理,从主机上架安装操作系统到主机下架维修,可以像管理虚拟机一样的管理主机,创建一个Nova计算物理节点,只需告诉Ironic,然后自动地从镜像模板中加载操作系统到nova-computer安装完成即可。Ironic解决主机的添加、删除、电源管理、操作系统部署等问题,目标是成为主机管理的成熟解决方案,让OpenStack不仅可以在软件层面解决云计算问题,而且供应商可以对应自己的服务器开发Ironic插件。

8.基于Linux内核的虚拟化解决方案
KVM是一种基于Linux的X86硬件平台开源全虚拟化解决方案,也是主流Linux虚拟化解决方案,支持广泛的客户机操作系统,KVM需要CPU的虚拟化指令集的支持,如Intel的Intel TV(vmx指令集)或AMD的AMD-V(svm指令集)。

(1)KVM模块。
KVM模块是一个可加载的内核模块kvm.ko。由于KVM对X86硬件架构的依赖,因此KVM还需要一个处理规范模块,如果使用Intel架构,则加载kvm-intel.ko模块;如果使用AMD模块,则卡加载kvm-adm.ko模块。KVM模块负责对虚拟机的虚拟CPU和内存进行管理及调试,主要任务是初始化CPU硬件,打开虚拟化模式,然后将虚拟机运行在虚拟模式下,并对虚拟机的运行提供一定的支持。至于虚拟机的外部设备交互,如果是真实的物理硬件设备,则利用Linux系统内核来管理;如果是虚拟的外部设备,则借助于快速仿真(Quick Emulator,QEMU)来处理。由此可见,KVM本身只关注虚拟机的调试和内存管理,是一个轻量级的Hypervisor,很多Linux发行版集成KVM作为虚拟化解决方案,CentOS也不例外。

(2)QEMU。
KVM模块本身无法作为一个Hypervisor模拟出一个完整的虚拟机,而且用户也不能直接对Linux内核进行操作,因此需要借助其他软件来进行,QEMU就是KVM所需要的这样一个软件。
QEMU并非KVM的一部分,而是一个开源的虚拟机软件,与KVM不同,作为一个宿主型的Hypervisor,没有KVM,QEMU也可以通过模拟来创建和管理虚拟机,只因为是纯软件实现,所以性能较低。QEMU的优点是,在支持QEMU编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与主机不是同一个架构。KVM在QEMU的基础上进行了修改,虚拟机运行期间,QEMU会通过KVM模块提供的系统调用进入内核,由KVM模块负责将虚拟机置于处理器的特殊模式运行,遇到虚拟机进行输入/输出(I/O)操作,KVM模块转交给QEMU解析和模拟这些设备。
QEMU使用KVM模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化的加速,从而极大地提高了虚拟机的性能,除此之外,虚拟机的配置和创建,虚拟机运行依赖的虚拟设备,虚拟机运行时的用户操作环境和交互以及一些针对虚拟机的特殊技术(如动态迁移),都是由QEMU自己实现的。KVM虚拟机的创建和运行是一个用户空间的QEMU程序和内核空间的KVM模块相互配合的过程,KVM模块作为整个虚拟化环境的核心工作在系统空间,负责CPU和内存的调试,QEMU作为模拟器工作在用户空间,负责虚拟机I/O模拟。

(3)KVM架构。
从上面的分析来看,KVM作为Hypervisor主要包括两个重要的组成部分:一个是Linux内核的KVM模块,主要负责虚拟机的创建,虚拟内存的分配、VCPU寄存器的读写以及VCPU的运行;另一个是提供硬件仿真的QEMU,用于模拟虚拟机的用户空间组件、提供I/O设备模型和访问外设的途径,KVM的基本架构,如图所示。
图片 6.png
在KVM模型中,每一个虚拟机都是一个由Linux调度程序管理的标准进程,可以在用户空间启动客户机操作系统,一个普通的Linux进程有两种运行模式:内核和用户,而KVM增加了第三种模式,即客户模式,客户模式又有自己的内核和用户模式。当新的虚拟机在KVM上启动时,它就成为主机操作系统的一个进程,因此就可以像其他进程一样调度它,但与传统的Linux进程不一样,客户端被Hypervisor标识为处于Guest模式(独立于内核和用户模式),每个虚拟机都是通过/dev/kvm设备映射的,它们拥有自己的虚拟地址空间,该空间映射到主机内核的物理地址空间。如前所述,KVM使用层硬件的虚拟化支持来提供完整的(原生)虚拟化,I/O请求通过主机内核映射到在主机上(Hypervisor)执行的QEMU进程。

(4)KVM虚拟磁盘(镜像)文件格式。
在KVM中往往使用Image(镜像)这人术语来表示虚拟磁盘,主要有以下3种文件格式。
①raw。原始的格式,它直接将文件系统的存储单元分配给虚拟机使用,采取直读直写的策略,该格式实现简单,不支持诸如压缩、快照、加密和CoW等特性。
②qcow2。QEMU引入的镜像文件格式,也是目前KVM默认的格式,qcow2文件存储数据的基本单元是簇(cluster),每一簇由若干个数据扇区组成,每个数据扇区的大小是512字节,在qcow2中,要定位镜像文件的簇,需要经过两次地址查询操作,qcow2根据实际需要来决定占用空间的大小,而且支持更多的主机文件系统格式。
③qed。qcow2的一种改进,qed的存储、定位、查询方式以及数据块大小与qcow2一样,它的目的是为了克服qcow2格式的一些缺点,提高性能,不过目前还不够成熟。如果需要使用虚拟机快照,需要选择qcow2格式,对于大规模数据的存储,可以选择raw格式,qcow2格式只能增加容量,不能减少容量,而raw格式可以实现增加或者减少容量。

9.Libvirt套件
仅有KVM模块和QEMU组件是不够的,为了使KVM整个虚拟环境易于管理,还需要Libvirt服务和基于Libvirt开发出来的管理工具。
Libvirt是一个软件集合,是一套为方便管理平台虚拟化技术而设计的开源代码的应用程序接口、守护进程和管理工具。它不仅提供了对虚拟机的管理,而且提供了对虚拟网络和存储的管理。Libvirt最初是为了Xen虚拟化平台设计的一套API,目前还支持其他多种虚拟化平台,如KVM、ESX和QEMU等。在KVM解决方案中,QEMU用来进行平台模拟,面向上层管理和操作;而Libvirt用来管理KVM,面向下层管理和操作,整个Libvirt架构,如图所示。
图片 7.png
Libvirt是目前使用广泛的虚拟机管理应用程序接口,一些常用的虚拟机管理工具(如virsh)和云计算框架平台(如OpenStack)都是在底层使用Libvirt的应用程序接口。Libvirt包括两部分,一部分是服务(守护进程名为Libvirtd),另一部分是API,作为一个运行在主机上的服务端守护进程,Libvirtd为虚拟化平台及其虚拟机提供本地和远程的管理功能,基于Libvirt开发出来的管理工具可通过Libvirtd服务来管理整个虚拟化环境。也就是说,Libvirtd在管理工具和虚拟化平台之间起到一个桥梁的作用。Libvirt API是一系列标准的库文件,给多种虚拟化平台提供一个统一的编程接口,相当于管理工具是非得基于Libvirt的标准接口来进行开发,开发完成后的工具可支持多种虚拟化平台。

10.OpenStack的起源
OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。是美国国家宇航局(National Aeronautics and Space Administration,NASA)和Rackspace(美国的一家云计算厂商)在2010年7月共同发起的一个项目,旨在为公有云和私有云提供软件的开源项目,由Rackspace贡献存储源码(Swift)、NASA贡献计算源码(Nova)。
经过几年的发展,OpenStack现已发展成为一个广泛使用的业内领先的开源项目,提供部署私有云及公有云的操作平台和工具集,并且在许多大型企业支撑核心生产业务。OpenStack示意图,如图所示
图片 8.png
OpenStack项目旨在提供开源的云计算解决方案以简化云的部署过程,实现类似AWS(亚马逊)EC2和S3的IaaS服务。其主要应用场合包括Web应用、大数据、电子商务、视频处理与内容分发、大吞吐量计算、容器优化、主机托管、公共云和数据库等。Open意为开放,Stack意为堆栈或堆叠,OpenStack是一系列开源软件的组合,包括若干项目,每个项目都有自己的代号(名称),包括不同的组件,每个组件又包括若干服务,一个服务意味着运行的一个进程,这些组件部署灵活,支持水平扩展,具有伸缩性,支持不同规模的云平台。OpenStack最初仅包括Nova和Swift这两个项目,现在已经有数十个项目,其中主要的项目,如表1.1所示。这些项目之间相互关联,协同管理各类计算、存储和网络资源,提供云计算服务。

11.OpenStack的主要项目
截屏20220323 上午10.22.26.png
作为免费的开源软件项目,OpenStack由一个名为OpenStack Community的社区开发和维护,来自世界各地的云计算开发人员和技术人员共同开发、维护OpenStack项目,与其他开源的云计算软件相比,OpenStack具有以下优势。
OpenStack在控制性、兼容性、灵活性方面具备优势,它可能成为云计算领域的行业标准。
(1)控制性。作为完全开源的平台,OpenStack为模块化的设计,提供相应的API接口,方便与第三方技术集成,从而满足自身业务需求。
(2)兼容性。OpenStack兼容其他公有云,方便用户进行数据迁移。
(3)可扩展性。OpenStack采用模块化的设计,支持各主流发行版本的Linux,可以通过横向扩展增加节点、添加资源。
(4)灵活性。用户可以根据自己的需要建立基础设施,也可以轻松地为自己的群集增加规模。OpenStack项目采用Apache2许可,意味着第三方厂家可以重新发布源代码。
(5)行业标准。众多IT领军企业都加入到OpenStack项目中,意味着OpenStack在未来可能成为云计算行业标准。

12.OpenStack版本演变
2010年10月,OpenStack第1个正式版本发布,其代号为Austin,第1个版本仅有Swift(对象存储)和Nova(计算)两个项目,起初计划每隔几个月发布一个全新的版本,并且以26个英文字母为首字母,从A到Z顺序命名后续版本。2011年9月第4个版本Diablo发布时,定为每半年发布一个版本,分别是当年的春秋两季,每个版本不断改进,吸收新技术,实现新概念。2020年5月13日发布第21个版本,即Ussuri版,如今已经更加稳定,更加强健。近几年,docker,kubernetes,serverless等新技术的兴起,而OpenStack关注点不再是谁是龙头,而是关注谁才是最受欢迎的技术。OpenStack不受任何一家厂商的绑定,灵活自由。当前可以认为云解决方案的首选方案之一。当前83%的私有云用户转向OpenStack,因为它使用户摆脱了对单个公共云的过多依赖。实际上,OpenStack用户经常依赖于公共云,例如,Amazon Web Services(AWS)(44%),Microsoft Azure(28%)或Google Compute Engine(GCP)(24%),58%的用户基础架构是由OpenStack驱动的。尽管OpenStack从诞生到现在已经变得日渐成熟,基本上已经能够满足云计算用户的大部分的需求。但随着云计算技术的发展,OpenStack必然需要不断地完善,OpenStack已经逐渐成为市场上主流的一个云计算平台解决方案。在学习OpenStack的部署和运维之前,我们应当熟悉其架构和运行机制,OpenStack作为一个开源、可扩展、富有弹性的云操作系统,其架构设计主要参考了亚马逊AWS云计算产品,通过模块的划分和模块的功能协作,设计的基本原则如下。
①按照不同的功能和通用性划分不同的项目,拆分子系统。
②按照逻辑计划、规范子系统之间的通信。
③通过分层设计整个系统架构。
④不同功能子系统间提供统一的API接口。

(1)OpenStack的逻辑架构。
OpenStack的逻辑架构,如图所示。
图片 9.png
此图展示了OpenStack云平台各模块(仅给出主要服务)协同工作的机制和流程。OpenStack通过一组相关的服务提供一个基础设施即服务(IaaS)的解决方案,这些服务以虚拟机为中心,虚拟机主是由Nova、Glance、Cinder和Neutron四个核心模块进行交互的结果。Nova为虚拟机提供计算资源,包括vCPU、内存等;Glance为虚拟机提供镜像服务,安装操作系统的运行环境;Cinder提供存储资源,类似传统计算机的磁盘或卷;Neutron为虚拟机提供网络配置以及访问云平台的网络通道。

云平台用户在经过Keystone服务认证授权后,通过Horizon模式创建虚拟机服务。创建过程包括利用Nova服务创建虚拟机实例,虚拟机实例采用Glance提供的镜像服务,然后使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中,之后再通过Cinder创建的卷为虚拟机挂载存储块。整个过程都在Ceilometer模块的资源监控下,Cinder产生的卷(Volume)和Glance提供的镜像(Image)可以通过Swift的对象存储机制进行保存。Horizon、Ceilometer、Keystone提供访问、监控、身份认证(权限)功能,Swift提供对象存储功能,Heat实现应用系统的自动化部署,Trove用于部署和管理各种数据库,Sahara提供大数据处理框架,而Ironic提供裸金属云服务。
云平台用户通过nova-api等来与其他OpenStack服务交互,而这些OpenStack服务守护进程通过消息总线(动作)和数据库(信息)来执行API请示。消息队列为所有守护进程提供一个中心的消息机制,消息的发送者的接收者相互交换任务或数据进行通信,协同完成各种云平台功能。消息队列将各个服务进程解耦,所有进程可以任意分布式部署,协同工作在一起。

(2)OpenStack的物理架构。
OpenStack是分布式系统,必须从逻辑架构映射到具体的物理架构,将各个项目和组件以一定的方式安装到实际服务器节点,部署到实际的存储设备上,并通过网络将它们连接起来,这就是OpenStack的物理部署架构。OpenStack的部署分为单节点部署和多节点部署两种类型。单节点部署就是将所有的服务和组件都放在一个物理节点上,通常是用于学习、验证、测试或者开发;多节点部署就是将服务和组件分别部署在不同的物理节点上。一个典型的多节点部署,如图所示
图片 10.png
常见的节点类型有控制节点(Control Node)、计算节点(Compute Node)、存储节点(Storage Node)和网络节点(Network Node)。

①控制节点。
控制节点又称为管理节点,安装并运行各种OpenStack控制服务,负责管理、节制其余节点,执行虚拟机建立、迁移、网络分配、存储分配等任务,OpenStack的大部分服务都是运行在控制节点上。
1、支持服务。数据服务器,如SQL数据库;消息队列服务,如RabbitMQ;网络时间协议(Network Time Protocol,NTP)服务。
2、基础服务。运行Keystone认证服务、Glance镜像服务、Nova计算服务的管理组件、Neutron网络服务的管理组件、多种网络代理(Networking agent)和Horizon仪表板。
3、扩展服务。运行Cinder块存储服务、Swift对象存储服务、Trove数据库服务、Heat编排服务和Ceilometer计量服务的部分组件,这对于控制节点来说是可选的。控制节点一般只需要一个网络端口用于通信和管理各个节点。

②网络节点。
网络节点可实现网关和路由的功能,它主要负责外部网络与内部网络之间的通信,并将虚拟机连接到外部网络,网络节点仅包含Neutron服务,Neutron负责管理私有网段与仅有网段的通信以及管理虚拟机网络之间的通信拓扑,管理虚拟机上的防火墙等。网络节点通常需要3个网络端口,分别用来与控制节点进行通信、与除控制节点外的计算节点和存储节点之间通信、外部的虚拟机与相应网络之间的通信。

③计算节点。
计算节点是实际运行虚拟机的节点,主要负责虚拟机的运行,为用户创建并运行虚拟机,为虚拟机分配网络,通常包括以下服务。
1、基础服务。Nova计算服务的虚拟机管理器组件(Hypervisor),提供虚拟机的创建、运行、迁移、快照等各种围绕虚拟机的服务,并提供API与控制节点对接,由控制节点下发任务,默认计算服务使用的Hypervisor是KVM;网络插件代理,用于将虚拟机实例连接到虚拟网络中,通过安全组为虚拟机提供防火墙服务。
2、扩展服务。Ceilometer计量服务代理,提供计算节点的监控代理,将虚拟机的情况反馈给控制点。虚拟机可以部署多个计算节点,一个计算节点至少需要两个网络端口,一个与控制节点进行通信,受控制节点统一配置;另一个与网络节点及存储节点进行通信。

④存储节点。
存储节点负责对虚拟机的外部存储进行管理等,即为计算节点的虚拟机提供持久化卷服务,这种节点存储需要的数据,包括磁盘镜像、虚拟机持久性卷。存储节点包含Cinder和Swift等服务,可根据需要安装共享文件服务。块存储和对象存储可以部署在同一个存储节点上,也可以分别部署块存储节点和对象存储节点,无论采用哪种方式,都可以部署多个存储节点。最简单的网络连接存储节点只需要一个网络接口,直接使用管理网络在计算节点和存储节点之间进行通信。而在生产环境中,存储节点最少需要两个网络接口,一个连接管理网络,与控制节点进行通信,接受控制节点下发的任务,受控制节点统一调配;另一个专门的存储网络(数据网络),与计算节点和网络节点进行通信,完成控制节点下发的各类数据传输任务。

OpenStack部署单节点
环境需求:
系统环境搭建参照Centos 7.5安装步骤来部署,这里将直接部署如何一键式搭建OpenStack平台。

截屏20220323 上午10.33.02.png

实验解法:
1.关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# 
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce 
[root@localhost ~]# vi /etc/sysconfig/selinux 
[root@localhost ~]# cat !$
cat /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
[root@localhost ~]#
2.关闭Network管理服务
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl disable NetworkManager
[root@localhost ~]#reboot
3.删除所有的yum源并重新下载yum源,并更新yum源
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
[root@localhost yum.repos.d]# rm -rf *
[root@localhost yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  % Total  % Received % Xferd  Average Speed   Time  Time  Time  Current
               Dload  Upload   Total   Spent    Left  Speed
100  2523  100  2523    0     0  23342      0 --:--:-- --:--:-- --:--:-- 23579
[root@localhost yum.repos.d]# ls
CentOS-Base.repo  
[root@localhost yum.repos.d]# cd 
[root@localhost ~]# yum clean all
已加载插件:fastestmirror, langpacks
正在清理软件源: base extras updates
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
[root@localhost ~]# yum makecache 
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
。。。。。。。。。。省略
base/7/x86_64/filelists_db                                                       | 7.1 MB  00:00:53     
元数据缓存已建立
[root@localhost ~]# 
[root@localhost ~]# yum -y update
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
。。。。。。。。。。省略
  python2-caribou.noarch 0:0.4.21-1.el7                                   
  urw-fonts.noarch 0:2.4-16.el7                                           
  webkitgtk4-plugin-process-gtk2.x86_64 0:2.16.6-6.el7                    
完毕!
[root@localhost ~]#
4.安装ntp时间同步服务器,并同步时间及写入计划任务
[root@localhost ~]# yum -y install ntpdate 
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。省略
作为依赖被升级:
  ntp.x86_64 0:4.2.6p5-29.el7.centos.2                                                                           
完毕!
[root@localhost ~]# 
[root@localhost ~]#  ntpdate ntp.aliyun.com
23 Oct 11:40:50 ntpdate[28290]: adjust time server 203.107.6.88 offset 0.002557 sec
[root@localhost ~]# 
[root@localhost ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@localhost ~]# crontab -l
*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com >> /var/log/ntpdate.log
[root@localhost ~]# systemctl restart crond
[root@localhost ~]# systemctl enable crond
[root@localhost ~]#

[root@localhost ~]# yum -y install centos-release-openstack-train.noarch
已加载插件:fastestmirror, langpacks
正在检查 centos-release-openstack-train-1-1.el7.centos.noarch.rpm: centos-release-openstack-train-1-1.el7.centos.noarch
。。。。。。。。。。。。。。省略
作为依赖被升级:
  centos-release.x86_64 0:7-8.2003.0.el7.centos                                                                  
完毕!
[root@localhost ~]#
5.安装OpenStack-packstack软件包
[root@localhost ~]# yum -y install openstack-packstack
已加载插件:fastestmirror, langpacks
Repository rdo-trunk-train-tested is listed more than once in the configuration
Loading mirror speeds from cached hostfile
。。。。。。。。。。省略
替代:
  pyOpenSSL.x86_64 0:0.13.1-3.el7         python-cffi.x86_64 0:1.6.0-5.el7     python-idna.noarch 0:2.4-1.el7  
  python-ipaddress.noarch 0:1.0.16-2.el7  python-netaddr.noarch 0:0.7.5-9.el7  python-six.noarch 0:1.9.0-2.el7 
完毕!
[root@localhost ~]#
6.执行packstack  - -allinone命令进行安装
[root@localhost ~]# packstack --allinone
Welcome to the Packstack setup utility

The installation log file is available at: /var/tmp/packstack/20201023-163340-7LuA9T/openstack-setup.log
Packstack changed given value  to required value /root/.ssh/id_rsa.pub

Installing:
Clean Up                                             [ DONE ]
Discovering ip protocol version                      [ DONE ]
Setting up ssh keys                                  [ DONE ]
Preparing servers                                    [ DONE ]
Pre installing Puppet and discovering hosts' details [ DONE ]
Preparing pre-install entries                        [ DONE ]
Setting up CACERT                                    [ DONE ]
Preparing AMQP entries                               [ DONE ]
Preparing MariaDB entries                            [ DONE ]
Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]
Preparing Keystone entries                           [ DONE ]
Preparing Glance entries                             [ DONE ]
Checking if the Cinder server has a cinder-volumes vg[ DONE ]
Preparing Cinder entries                             [ DONE ]
Preparing Nova API entries                           [ DONE ]
Creating ssh keys for Nova migration                 [ DONE ]
Gathering ssh host keys for Nova migration           [ DONE ]
Preparing Nova Compute entries                       [ DONE ]
Preparing Nova Scheduler entries                     [ DONE ]
Preparing Nova VNC Proxy entries                     [ DONE ]
Preparing OpenStack Network-related Nova entries     [ DONE ]
Preparing Nova Common entries                        [ DONE ]
Preparing Neutron API entries                        [ DONE ]
Preparing Neutron L3 entries                         [ DONE ]
Preparing Neutron L2 Agent entries                   [ DONE ]
Preparing Neutron DHCP Agent entries                 [ DONE ]
Preparing Neutron Metering Agent entries             [ DONE ]
Checking if NetworkManager is enabled and running    [ DONE ]
Preparing OpenStack Client entries                   [ DONE ]
Preparing Horizon entries                            [ DONE ]
Preparing Swift builder entries                      [ DONE ]
Preparing Swift proxy entries                        [ DONE ]
Preparing Swift storage entries                      [ DONE ]
Preparing Gnocchi entries                            [ DONE ]
Preparing Redis entries                              [ DONE ]
Preparing Ceilometer entries                         [ DONE ]
Preparing Aodh entries                               [ DONE ]
Preparing Puppet manifests                           [ DONE ]
Copying Puppet modules and manifests                 [ DONE ]
Applying 192.168.101.100_controller.pp
192.168.101.100_controller.pp:                       [ DONE ]            
Applying 192.168.101.100_network.pp
192.168.101.100_network.pp:                          [ DONE ]         
Applying 192.168.101.100_compute.pp
192.168.101.100_compute.pp:                          [ DONE ]         
Applying Puppet manifests                            [ DONE ]
Finalizing                                           [ DONE ]

 **** Installation completed successfully ******

Additional information:
 * Parameter CONFIG_NEUTRON_L2_AGENT: You have chosen OVN Neutron backend. Note that this backend does not support the VPNaaS or FWaaS services. Geneve will be used as the encapsulation method for tenant networks
 * A new answerfile was created in: /root/packstack-answers-20201023-163341.txt
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.101.100. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://192.168.101.100/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * The installation log file is available at: /var/tmp/packstack/20201023-163340-7LuA9T/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20201023-163340-7LuA9T/manifests
[root@localhost ~]#
7.查看keystone-admin文件,随后在浏览器输入相对应的IP地址和用户名密码进行登录
[root@localhost ~]# ls
anaconda-ks.cfg       keystonerc_admin  packstack-answers-20201201-111148.txt  模板  图片  下载  桌面
initial-setup-ks.cfg  keystonerc_demo   公共                                   视频  文档  音乐
[root@localhost ~]# cat keystonerc_admin 
unset OS_SERVICE_TOKEN
    export OS_USERNAME=admin
    export OS_PASSWORD='6d876ee3c07944bc'
    export OS_REGION_NAME=RegionOne
    export OS_AUTH_URL=http://192.168.101.50:5000/v3
    export PS1='[\u@\h \W(keystone_admin)]\$ '
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
[root@localhost ~]#

图片 3.png
图片 4.png

下一篇