• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 漏洞说明
  • 全部
  • 全部
  • 大数据引擎
  • 知了引擎
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
搜索引擎
匹配模式
高级搜索

Openstack创建虚拟机的流程

2019-10-30 发表
  • 1关注
  • 2收藏 8486浏览
粉丝:17人 关注:11人

组网及说明

CloudOS正常组网

配置步骤

一、OpenStack的基本架构:


OpenStack拥有众多的组件,通过组件之间协同进行工作,管理计算、存储、网络等资源,便于用户调用和使用。

OpenStack的每个组件都有自己的功能定位,都可以算作独立的一个程序,Open即为开放之意,Stack则是堆砌,也就是许多开放的程序的集合 。


OpenStack的核心部件即包括Nova(用于计算)、Keystone(用于身份服务)、Neutron(用于网络和地址管理)、Cinder(块存储)、Swift(对象存储)、Glance(镜像服务)、HorizonUI界面)、Heat(用于部署编排)和Ceilometer(监控测量)。其中最核心的就是计算基础架构Nova、存储基础架构Swift和镜像服务Glance

NovaOpenStack云计算架构控制器,管理OpenStack云里的计算资源、网络、授权、和扩展,负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。

SwiftOpenStack提供分布式的虚拟对象存储,通过分布式的穿过节点, Swift 有能力存储数十亿计的对象,Swift具有内置冗余、容错管理、存档、流媒体的功能,并且高度扩展,不论大小(多个 PB 级别)和能力(对象的数量)。

Glance镜像服务用于查找和检索虚拟机的镜像系统。

Horizon(Dashboard)OpenStack中各种服务的Web管理门户,与其他主要模块相连接,用于简化操作,便于用户管理与控制各个模块。通过Ceilometer可以监控的模块包括NovaGlanceCinderNeutron,可以收集记录各种信息,为其他服务提供数据支撑。Keystone模块可以对其他模块进行身份及权限验证,包括NovaGlanceCinderSwiftNeutronCeilometer

对于虚拟机(Virtual MachineVM)Nova可以为其提供计算资源,Glance为其提供镜像,Cinder为其提供块存储资源,Neutron为其提供网络资源及网络连接。Cinder连接VM后所产生的数据可以备份到Swift对象存储中,Glance提供镜像可以保存在Swift对象存储中。

Open Stack的各个服务之间通过统一的REST风格的API调用,实现系统的松耦合。它内部组件的工作过程是一个有序的整体。诸如计算资源分配、控制调度、网络通信等都通过AMQP实现。Open Stack的上层用户是程序员、一般用户和Horizon界面等模块。这三者都是采用OpenStack各个组件提供的API接口进行交互,而它们之间则是通过AMQP进行互相调用,它们共同利用底层的虚拟资源为上层用户和程序提供云计算服务。 

二、 OpenStack创建虚拟机流程:


1.创建流程

创建虚拟机是OpenStack最基本的且较为核心的功能,整个流程以Nova组件为核心,并与其他组件如KeystoneGlanceNeutronCinder等进行交互。下面为创建虚拟机过程的具体流程:

1、登录界面或命令行通过RESTful APIKeystone获取认证信息。

2Keystone通过用户请求认证信息,并生成Auth-Token返回给对应的认证请求。

3、界面或命令行通过RESTful APINova-api发送一个boot instance的请求(携带Auth-Token)。

4Nova-api接受请求后向Keystone发送认证请求,验证Token的有效性。

5Keystone验证Token是否有效,如有效则返回有效的认证和对应的角色。

6、通过认证后,Nova-api和数据库(DataBasedb)进行通讯。

7、初始化新建虚拟机的数据库记录。

8Nova-api通过rpc.callNova-scheduler请求是否有创建虚拟机的资源(Host ID)。通过消息队列(MQ)。

9Nova-scheduler进程侦听消息队列,获取Nova-api的请求。

10Nova-scheduler通过查询Nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。

11、对于有符合虚拟机创建的主机,Nova-scheduler更新数据库中虚拟机对应的物理主机信息。

12Nova-scheduler通过rpc.castNova-compute发送对应的创建虚拟机请求的消息。

13Nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。

14Nova-compute通过rpc.callNova-conductor请求获取虚拟机消息。

15Nova-conductor从消息队队列中拿到Nova-compute请求消息。

16Nova-conductor根据消息查询虚拟机对应的信息。

17Nova-conductor从数据库中获得虚拟机对应信息。

18Nova-conductor把虚拟机信息通过消息的方式发送到消息队列中。

19Nova-compute从对应的消息队列中获取虚拟机信息消息。

20Nova-compute通过KeystoneRESTful API拿到认证的Token,并通过HTTP请求Glance-api获取创建虚拟机所需要镜像。

21Glance-apiKeystone认证Token是否有效,并返回验证结果。

22Token验证通过,Nova-compute获得虚拟机镜像信息(URL)

23Nova-compute通过KeystoneRESTful API拿到认证kToken,并通过HTTP请求Neutron-server获取创建虚拟机所需要的网络信息。

24Neutron-serverKeystone认证Token是否有效,并返回验证结果。

25Token验证通过,Nova-compute获得虚拟机网络信息。

26Nova-compute通过KeystoneRESTfull API拿到认证的Token,并通过HTTP请求Cinder-api获取创建虚拟机所需要的持久化存储信息。

27Cinder-apiKeystone认证Token是否有效,并返回验证结果。

28Token验证通过,Nova-compute获得虚拟机持久化存储信息。

29Nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。

2.OpenStack组件之间的通信

OpenStack各个组件之间大部分是通过调用其他组件的REST api方式进行通信。OpenStack的各个服务组件都有提供相应的API接口,如Nova-apiGlance-api等。使用这些API和扩展可以让用户在OpenStack中实现通讯并进行一系列的操作,如启动服务主机、创建镜像、给主机和镜像设置元数据、创建容器和对象等。

Restful API从字面就可以知道,他是REST式的接口,REST指的是一组架构约束条件和原则,基于HTTP,提供了一个新的架构设计思路,满足这些约束条件和原则的应用程序或设计就是 RESTfulREST定义中把所有事物都定义为资源,每一个资源对应一个独有的ID,在OpenStack中每一个资源也对应一个UUIDRESTful API 就可以通过一套统一的接口为所有客户端提供web服务,实现前后端分离。

KeystoneToken是一个字符串表示,作为访问资源的令牌,Token包含了在指定范围和有效时间内可以被访问的资源。

Keystone中,Endpoint是一个可以通过网络来访问和定位某个OpenStack service的地址,通常是一个URL。比如,当Nova需要访问Glance服务去获取image 时,Nova通过访问Keystone拿到Glanceendpoint,然后通过访问该endpoint去获取Glance服务。我们可以通过Endpointregion属性去定义多个regionEndpoint 该使用对象分为三类:

admin URL --admin用户使用,Post35357

internal URL--OpenStack内部服务使用来跟别的服务通信,Port5000

public URL --其它用户可以访问的地址,Post5000

创建完service后创建API EndPoint。在OpenStack中,每一个service都有三种end pointsAdminpublicinternalAdmin是用作管理用途的,如它能够修改user/tenant(project)public是让客户调用的,比如可以部署在外网上让客户可以管理自己的云;internalOpenStack内部调用的。三种endpoints 在网络上开放的权限一般也不同,Admin通常只能对内网开放,public通常可以对外网开放,internal通常只能对安装有OpenStack对服务的机器开放。

3.NovaCinderNeutron

3.1 Nova主要组成

Nova-apiNova-schedulerNova-computeNova-conductor

Nova各组件功能:

Nova-api是一个交互接口,管理者可以通过这个接口来管理内部基础设施,也可以通过这个接口向用户提供服务。基于Web的管理也是通过这个接口,然后向消息队列发送消息,达到资源调度的功能。

Nova-compute是最核心的组件,实现虚拟机管理功能。通过消息队列接收请求,并承担操作工作。

Nova-scheduler是一个拥有把Nova-api调用映射为OpenStack功能的组件,会根据诸如CPU构架、可用域的物理距离、内存、负载等作出调度决定。

Nova-conductor负责数据库的访问权限控制,避免Nova-compute直接访问数据库。

3.2 Cinder主要组成

Cinder-apiCinder-schedulerCinder-volume

Cinder各组件功能:

Cinder-apiCinder服务的endpoint,提供REST接口,负责处理client请求,并将RPC请求发送至Cinder-scheduler组件。

Cinder-scheduler负责Cinder请求调度,其核心部分就是scheduler_driver,作为scheduler managerdriver,负责Cinder-volume具体的调度处理,发送Cinder RPC请求到选择的Cinder-volume

Cinder-volume负责具体的volume请求处理,由不同后端存储提供volume存储空间。

3.3 Neutron包含组件

Neutron-serverNeutron-pluginNeutron-agent

Neutron各组件功能:

Neutron-server可以理解为一个专门用来接收Neutron REST API调用的服务器,然后负责将不同的REST API分发到不同的Neutron-plugin上。

Neutron-plugin可以理解为不同网络功能实现的入口,Neutron-plugin接收Neutron-server分发过来的REST API,向Neutron database完成一些信息的注册,然后将具体要执行的业务操作和参数通知给自身对应的Neutron agent

Neutron-agent可以理解为Neutron-plugin在设备上的代理,接收相应的Neutron-plugin通知的业务操作和参数,并转换为具体的设备级操作,以指导设备的动作。当设备本地发生问题时,Neutron-agent会将情况通知给Neutron-plugin

配置关键点

Openstack创建虚拟机流程以Nova组件为核心,并与其他组件如KeystoneGlanceNeutronCinder等进行交互,共同完成这一任务。流程中OpenStack各个组件之间大部分是通过调用其他组件的REST api方式进行通信。OpenStack的各个服务组件都有提供相应的API接口,如Nova-apiGlance-api等。从Horizon开始到keystone获取token,再到nova中进行虚拟机的创建流程,借用nova-compute来调用cinder、neutron、glance中的存储资源、网络资源和镜像。流程完成之后再由nova将请求传递到hypervisor,进行下一步的创建工作。

该案例对您是否有帮助:

您的评价:1

若您有关于案例的建议,请反馈:

作者在2019-10-30对此案例进行了修订
0 个评论

该案例暂时没有网友评论

编辑评论

举报

×

侵犯我的权益 >
对根叔知了社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔知了社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明

提出建议

    +

亲~登录后才可以操作哦!

确定

亲~检测到您登陆的账号未在http://hclhub.h3c.com进行注册

注册后可访问此模块

跳转hclhub

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作