关系图

对于组件的关系可以参考下面这个图
![[Pasted image 20250213153132.png]]

逻辑调用

逻辑调用图参考下面
![[Pasted image 20250213153217.png]]

KeyStone

它是用来做身份验证的,包括组件之间的api通信都需要通过他去校验权限,具体的工作流程就是通通过账号密码可以拿到KeyStone给的一个Token,在KeyStone会把这个Token放到Memcached中,每个组件拿到这个Token去执行工作的时候都会去KeyStone里验证Token的用户和角色(Role),通过判断角色(Role)判定是否可以进行下面的工作。还有就是,它内部调用是不走消息队列的。
他具体负责的内容如下

  • 租户管理
  • 权限管理
  • 服务管理

他还可以对接外部的验证系统,例如LDAP。

租户管理

租户管理就是管理用户,所有的用户都由这个组件管理。

权限管理

权限管理的方式是RBAC的方式,通过角色(Role)的方式管理权限,但是这些权限都是定义在里头的,固定的名字和固定的权限内容。授权时也会根据角色(Role)进行授权,他和用户的关系是一对多的。还有他还负责Project的管理,Project可以理解为是一个资源边界,用来限制资源和隔离资源的。

服务管理

服务管理,组件之间的通信都是通过api服务通信的,不通的服务基本都会有一个api的服务启动,例如

glance-api、nova-api、cinder-api、neutron-server

其中neutron是没有api组件的,但是他的api是封装在neutron-server中的,这些组件相互通信都是要通过api的方式去通信,这些api谁可以访问谁不可以访问KeyStone也是负责的,具体可以体现在下面命令

# 公共的
openstack endpoint create --region RegionOne \
  image public http://host:port
# 组件之间的
openstack endpoint create --region RegionOne \
  image internal http://host:port
# 管理员的
openstack endpoint create --region RegionOne \
  image admin http://host:port

只有他的EndPoint放行了对应的组件可以被对应的组件调用。

流程图

关于资源使用token在过程中的流程
![[Pasted image 20250213155432.png]]

逻辑架构

![[Pasted image 20250213160524.png]]

Glance

Glance主要负责镜像的管理镜像的上传、下载、搜索的,他只是负责管理自己实际是不负责上传、下载、搜索的,它分为三部分,如下

  • Glance-API
  • Store Backend
  • Glance-Registry

还有就是它内部也不走消息队列的。

Glance-API

他负责解析请求,校验权限

Store Backend

负责对接存储,在默认的安装配置中他的镜像存储都是在本地目中的,具体体现在下面配置

[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

它可以对接其他的存储,这里不细说。

Glance-Registry

负责镜像的元数据信息。实际内容存储在DB数据库(集群的DB)中的,镜像的类型、名字、大小等信息都是他来负责管理。

逻辑架构图

在逻辑架构图中可以找到他的参考图
![[Pasted image 20250213155804.png]]

Placement

Placement组件在较老的版本是没有的,他是在r版之后引入的,他的作用是负责计算资源追踪的,Placement 服务的三部分可以概括为:

  • Placement-API:接收和解析请求,校验权限,提供 API 接口供其他服务调用。
  • Placement-Resource Inventory:负责维护资源库存,实时跟踪和管理计算节点的资源状态。
  • Placement-Database (Registry):负责存储资源的元数据,如节点的资源容量、使用情况等,确保数据一致性。

给Placement发送数据的组件是noav-compute组件

Nova

Nova组件是用来管理实例的生命周期的。他主要分下面几个进程

  • Nova-API
  • Nova-Compute
  • Nova-Schduler
  • Nova-Conductor
  • Nova-Cert
  • Nova-Console

Nova-API

响应数据,校验请求的合法性,合法之后会丢到消息队列,让其他进程来干活。

Nova-Compute

运行在计算节点上,用来对接虚拟化技术的,默认咱们都是装的KVM,它可以通过驱动来对接其他不通的虚拟化就技术,让其创建实例.

Nova-Schduler

调度的作用,创建一个实例的时候他会决定这个实例要运行在那个节点上。

Nova-Conductor

它是用来解耦数据库的,实例的一些资源需要写到数据库中的,这些信息由nova的相关组件发送给消息队列中,nova-conductor负责接收这些信息,写入到数据库中。

Nova-Cert

用来管理证书相关的内容。

Nova-Console

它是用来管理实例console连接的,一般都是vnc,相关配置如下

[vnc]                              
enabled = true                     
server_listen = $my_ip             
server_proxyclient_address = $my_ip

逻辑架构图

![[Pasted image 20250213213412.png]]

Neutron

Neutron组件是用提供网络服务实现实例可以跨节点通信的,它还包含网络管理、子网管理、安全组管理、路由管理。结构组成如下

  • Neutron-Server
  • Plugins

    • Core-Plugin
    • Service-Plugin
    • ML2 Core-Plugin
  • Agent

    • L3-Agent
    • DHCP-Agent
    • Linux Bridge-Agent
    • ......
  • Network-Provider

    Neutron-Server

    基本上所有组件都有一个api的部分,Neutron的API放到了这里,这个组件负责了API的功能,外部的请求接收,校验都在这里面。

    Plugins

    Plugins主要负责维护数据库中Neutron网络状态信息的,这就导致一个问题,所有的网络插件都要编写一套数据落库的驱动。当他收到一个网络相关创建请求之后,他会把请求写在数据库中,并且去维护这一部分,不会去干活,干活的工作会交给Agent。然后ML2 Core Plugin这个Plugin,是唯一干活的一个Plugin。

    Core-Plugin

    核心插件,主要提供网络、子网、端口相关资源的信息,与Core-Plugin对应的Agent包括linux bridgeOVS等。

    Service-Plugin

    服务插件,主要提供路由、防火墙(安全组)、load balance(应该是外部访问,比如浮动路由)等服务,对应的Agent,

    ML2 Core-Plugin

    它是用来设置网络类型的,例如之前的搭建的那个是linux bridge+vxlan的网络架构。

Agent

当Plugins落库之后,会把相关的内容打到消息队列中,Agent订阅数据之后他就负责去干活,去实现这些功能。网络资源被定义好之后,会有不通的Agnet去实现他所定义好的功能,真正干活的是Agnet。

L3-Agent

L3负责路由

DHCP-Agent

负责DHCP

Linux Bridge-Agent

Network-Provider

他是提供网络服务的虚拟或物理网络设备,例如Linux Bridge、Open vSwitch或者其他支持Neutron的物理交换机。

最后修改:2025 年 02 月 18 日
如果觉得我的文章对你有用,请随意赞赏