首页 > 其他分享 >Openstack之工作流程

Openstack之工作流程

时间:2024-04-07 09:34:23浏览次数:18  
标签:流程 Nova 工作 api Cinder Openstack OpenStack 虚拟机 Neutron

组件

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

Nova是OpenStack云计算架构控制器,管理OpenStack云里的计算资源、网络、授权、和扩展,负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。
Swift为OpenStack提供分布式的虚拟对象存储,通过分布式的穿过节点, Swift 有能力存储数十亿计的对象,Swift具有内置冗余、容错管理、存档、流媒体的功能,并且高度扩展,不论大小(多个 PB 级别)和能力(对象的数量)。
Glance镜像服务用于查找和检索虚拟机的镜像系统。
Horizon(Dashboard)是OpenStack中各种服务的Web管理门户,与其他主要模块相连接,用于简化操作,便于用户管理与控制各个模块。通过Ceilometer可以监控的模块包括Nova、Glance、Cinder和Neutron,可以收集记录各种信息,为其他服务提供数据支撑。Keystone模块可以对其他模块进行身份及权限验证,包括Nova、Glance、Cinder、Swift、Neutron和Ceilometer。

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

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

工作流程

1.创建虚拟机流程

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

1、登录界面或命令行通过RESTful API向Keystone获取认证信息。
2、Keystone通过用户请求认证信息,并生成Auth-Token返回给对应的认证请求。
3、界面或命令行通过RESTful API向Nova-api发送一个boot instance的请求(携带Auth-Token)。
4、Nova-api接受请求后向Keystone发送认证请求,验证Token的有效性。
5、Keystone验证Token是否有效,如有效则返回有效的认证和对应的角色。
6、通过认证后,Nova-api和数据库(DataBase,db)进行通讯。
7、初始化新建虚拟机的数据库记录。
8、Nova-api通过rpc.call向Nova-scheduler请求是否有创建虚拟机的资源(Host ID)。通过消息队列(MQ)。
9、Nova-scheduler进程侦听消息队列,获取Nova-api的请求。
10、Nova-scheduler通过查询Nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。
11、对于有符合虚拟机创建的主机,Nova-scheduler更新数据库中虚拟机对应的物理主机信息。
12、Nova-scheduler通过rpc.cast向Nova-compute发送对应的创建虚拟机请求的消息。
13、Nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。
14、Nova-compute通过rpc.call向Nova-conductor请求获取虚拟机消息。
15、Nova-conductor从消息队队列中拿到Nova-compute请求消息。
16、Nova-conductor根据消息查询虚拟机对应的信息。
17、Nova-conductor从数据库中获得虚拟机对应信息。
18、Nova-conductor把虚拟机信息通过消息的方式发送到消息队列中。
19、Nova-compute从对应的消息队列中获取虚拟机信息消息。
20、Nova-compute通过Keystone的RESTful API拿到认证的Token,并通过HTTP请求Glance-api获取创建虚拟机所需要镜像。
21、Glance-api向Keystone认证Token是否有效,并返回验证结果。
22、Token验证通过,Nova-compute获得虚拟机镜像信息(URL)。
23、Nova-compute通过Keystone的RESTful API拿到认证k的Token,并通过HTTP请求Neutron-server获取创建虚拟机所需要的网络信息。
24、Neutron-server向Keystone认证Token是否有效,并返回验证结果。
25、Token验证通过,Nova-compute获得虚拟机网络信息。
26、Nova-compute通过Keystone的RESTfull API拿到认证的Token,并通过HTTP请求Cinder-api获取创建虚拟机所需要的持久化存储信息。
27、Cinder-api向Keystone认证Token是否有效,并返回验证结果。
28、Token验证通过,Nova-compute获得虚拟机持久化存储信息。
29、Nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。

2.OpenStack组件之间的通信

​OpenStack各个组件之间大部分是通过调用其他组件的REST api方式进行通信。OpenStack的各个服务组件都有提供相应的API接口,如Nova-api、Glance-api等。使用这些API和扩展可以让用户在OpenStack中实现通讯并进行一系列的操作,如启动服务主机、创建镜像、给主机和镜像设置元数据、创建容器和对象等。
Restful API从字面就可以知道,他是REST式的接口,REST指的是一组架构约束条件和原则,基于HTTP,提供了一个新的架构设计思路,满足这些约束条件和原则的应用程序或设计就是 RESTful。REST定义中把所有事物都定义为资源,每一个资源对应一个独有的ID,在OpenStack中每一个资源也对应一个UUID。RESTful API 就可以通过一套统一的接口为所有客户端提供web服务,实现前后端分离。
Keystone中Token是一个字符串表示,作为访问资源的令牌,Token包含了在指定范围和有效时间内可以被访问的资源。
Keystone中,Endpoint是一个可以通过网络来访问和定位某个OpenStack service的地址,通常是一个URL。比如,当Nova需要访问Glance服务去获取image 时,Nova通过访问Keystone拿到Glance的endpoint,然后通过访问该endpoint去获取Glance服务。我们可以通过Endpoint的region属性去定义多个region。Endpoint 该使用对象分为三类:

admin URL --给admin用户使用,Post:35357
internal URL--OpenStack内部服务使用来跟别的服务通信,Port:5000
public URL --其它用户可以访问的地址,Post:5000

创建完service后创建API EndPoint。在OpenStack中,每一个service都有三种end points:Admin、public、internal。

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

3.Nova、Cinder和Neutron

3.1 Nova主要组成

Nova-api、Nova-scheduler、Nova-compute、Nova-conductor。
Nova各组件功能:

Nova-api是一个交互接口,管理者可以通过这个接口来管理内部基础设施,也可以通过这个接口向用户提供服务。基于Web的管理也是通过这个接口,然后向消息队列发送消息,达到资源调度的功能。
Nova-compute是最核心的组件,实现虚拟机管理功能。通过消息队列接收请求,并承担操作工作。
Nova-scheduler是一个拥有把Nova-api调用映射为OpenStack功能的组件,会根据诸如CPU构架、可用域的物理距离、内存、负载等作出调度决定。
Nova-conductor负责数据库的访问权限控制,避免Nova-compute直接访问数据库。

3.2 Cinder主要组成

Cinder-api、Cinder-scheduler、Cinder-volume。
Cinder各组件功能:

Cinder-api是Cinder服务的endpoint,提供REST接口,负责处理client请求,并将RPC请求发送至Cinder-scheduler组件。
Cinder-scheduler负责Cinder请求调度,其核心部分就是scheduler_driver,作为scheduler manager的driver,负责Cinder-volume具体的调度处理,发送Cinder RPC请求到选择的Cinder-volume。
Cinder-volume负责具体的volume请求处理,由不同后端存储提供volume存储空间。

3.3 Neutron包含组件
Neutron-server、Neutron-plugin、Neutron-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。

标签:流程,Nova,工作,api,Cinder,Openstack,OpenStack,虚拟机,Neutron
From: https://www.cnblogs.com/OpenSourceSite/p/18118411

相关文章

  • 后端学习记录~~JavaSE篇(day03-流程控制语句-上)
    if...else与Switch...case语句一、表达式和语句表达式:(1)变量或常量+运算符构成的计算表达式(2)new表达式,结果是一个数组或类的对象。(3)方法调用表达式,结果是方法返回值或void(无返回值)。语句:(1)分支语句:if...else,switch...case(2)循环语句:for,while,do...while(3)跳转语句:brea......
  • 新的地方,新的工作,新的生活
    2023年底辞掉了在北京的工作,准备会二线城市工作定居。在找工作的过程中发现IT大环境非常差,就如同前一年的建筑工地行业一样。在重庆和武汉都待了差不多一个月,在重庆只面试了一个建信金科,挂了,长安已经没有合适的坑位了,今非昔比,前两年还拿到他们一个不错的offer。年后辗转武汉,给......
  • Django框架之请求生命周期流程图
    一、引言WSGI、wsgiref、uwsgi三者是什么关系?WSGI是协议,小写的wsgiref和uwsgi是实现该协议的功能模块缓存数据库提前已经将你想要的数据准备好了,需要的时候直接拿就可以,提高了效率和响应时间。eg:当你在修改你的数据的时候,你会发现数据并不是立刻修改完成的,而是需要经......
  • 24年社工报名时间汇总❗报名流程手把手教!
    24年社工报名时间汇总❗报名流程手把手教!网上报名唯一网站:中国人事考试网14个考区报名时间汇总!!内蒙古:4月1日9:00——4月14日24:00山东:4月2日9:00——4月12日16:00湖北:4月2日9:00——4月16日20:00四川:4月2日——4月15日北京:4月3日——4月12日辽宁:4月3日9:00——4月14日24:0......
  • 在 Deno Deploy 中使用更简单的新项目创建流程
    DenoDeploy是一个JavaScript无服务器应用程序的全球分布式平台,是在Web上部署和运行JavaScript和TypeScript的最简单、最快的方法之一。DenoDeploy的JS/TS和WebAssembly代码在地理位置靠近用户的托管服务器上运行,从而实现低延迟和更快的响应时间。它还原生......
  • 让工作自动化起来!无所不能的Python
    让工作自动化起来!无所不能的Python让工作自动化起来!无所不能的Python编辑推荐内容简介作者简介前言为什么要写这本书读者对象如何阅读本书博主默语带您GotoNewWorld.✍个人主页——默语的博客......
  • 腾讯云服务器优惠购买攻略:2024年新手详细购买流程指南
     随着云计算技术的日益发展,越来越多的企业和个人开始选择云服务器来满足其数据存储和处理需求。作为国内领先的云服务提供商,腾讯云以其稳定的服务和强大的性能获得了广大用户的青睐。那么,如何在腾讯云上购买服务器呢?下面就来为大家详细介绍腾讯云服务器的购买流程。首先,你需......
  • 蓝旭工作室第三周预习:JS入门
    一、JavaScript概述    JavaScript是一种运行于JavaScript解释器/引擎中的解释型脚本语言。    解释型:运行之前不需要编译;运行之前不会检查错误,直到碰到错误为止。    编译型:对源码进行编译,还能检查语法错误。如C、C++。运行环境    1、......
  • 精讲AI教程: 免费使用Flowise搭建LLM工作流应用
    大家好,我是斜杠君。今天,和大家分享一个低代码/无代码拖放工具——Flowise,可以让你轻松可视化和构建LLM应用程序。  什么是Flowise? 官方定义:Flowise是一种低代码/无代码拖放工具,旨在让人们轻松可视化和构建LLM应用程序。 斜杠君解释:就是把各模块拖拽组合在一起,组......
  • 微软安全开发流程(Security Development Lifecycle, SDL)
    1.SDL简介SecurityDevelopmentLifecycle(SDL)是微软2004年提出的从安全角度指导软件开发过程的管理模式。SDL是一个安全保证的过程,其重点是软件开发,在开发的所有阶段都引入了安全和隐私的原则。SDL一直都是微软在全公司实施的强制性策略。2.SDL步骤SDL中的方法,试图从安全漏......