OpenStack核心组件进程

最近忙的东西比较多,很多积累的知识和过程一段时间不动手,全部都忘了,也许跟大龄也有些关系,但是我不太信,凡事都逐步积累,但是得消化掉,主机和网络太多生疏的东西,工作好好做,忙碌之余,坚持充实自己

整个OpenStack太多的服务,太多的进程,很多还不是特别熟,《设计与实现》里两页对主要进程的描述挺清晰易懂,就直接copy敲过来,懂得每个进程的用途,版本大概是Juno

Nova

  • nova-api,是nova对外提供服务的窗口,接收并响应来自用户的Compute API的调用
  • nova-compute,是安装到每个物理主机上的服务进程,该服务接收请求之后执行一些与虚拟机相关的操作,这些操作需要调用底层的Hypervisor API来完成,比如支持KVM和QEMU的libvirt
  • nova-scheduler,用于接收创建虚拟机的请求,并决定在哪台物理主机上启动该虚拟机的调度器
  • nova-conductor,出于nova-compute和nova-db之间的一个组件,nova-conductor初衷是基于安全的考虑避免nova-compute直接访问nova-db,也就是说nova-compute对nova-db的访问请求,比如让nova-compute查询一台虚拟机的状态或者更新一条记录,都由nova-conductor代为转交;而对于nova-scheduler对nova-db的请求,却没有这种顾虑,也就是说nova-scheduler可以直接访问nova-db
  • nova-db,包含一大堆数据库表,该数据库用于记录虚拟机状态,虚拟机与物理机的对应关系,租户信息等数据内容
  • nova-console和nova-consoleauth,是nova提供的控制台服务,允许最终用户通过代理服务器访问虚拟机的控制台
  • nova-cert和nova-objectstore,分别提供了x509验证管理服务器服务和在glance中注册镜像的S3接口服务

 

Swift

  • proxy-server,处于swift系统内部和外部之间,负责接收API请求或者HTTP请求,这些请求包括上传文件,修改元数据,创建容器等,有些时候,为了提高系统性能,proxy-server也会与memcached在一起部署
  • account-server,仅仅用于帐号管理
  • container-server,管理容器或者文件夹的隐射关系
  • object-server,管理在存储节点上的实际对象,比如文件等
  • 除此之外,还有一些定期执行的进程,比如replication,auditor,updater和reaper等

 

Keystone

  • keystone,提供身份验证和授权,跟踪用户权限,提供一个可用服务以及API列表;包括接收前台请求的keystone API和后台的keystone-db

 

Horizon

  • horizon,为所有OpenStack的服务提供一个模块化基于Django的界面,通过用户界面完成大多数操作

 

Cinder

  • cinder-api,接收来自外部的API请求,并把请求交给cinder-volume执行
  • cinder-volume,负责与底层的块存储服务交流,相应读和写块设备请求,并把这个请求交给块存储服务,底层的不同存储服务提供商都通过driver的方式实现了volumeprovider,所以具体的读写请求交给底层volumeprovider来完成
  • cinder-scheduler,由于底层提供存储的节点很多,cinder-scheduler会试图寻找一个最佳的节点创建volume
  • cinder-db,记录和维护块设备的信息

 

Neutron

  • neutron-server,用于接收来自外部的API请求,并将该请求交给合适的neutron插件来处理
  • 在neutron当中,有众多的插件和Agent,它们负责插拔端口,建立网络和子网,提供IP地址等;插件从功能上来说用于存储当前逻辑网络的配置信息,判断和存储逻辑网络和物理网络之间的对应关系,以及与一种或多种交换机通信来实现这种对应关系,它需要访问neutron-db
  • 实现这种对应关系,一般需要通过物理机上的agent来完成,agent可以分为plugin agent,DHCP agent和L3 agent;虚拟网络上数据包的处理,都是由plugin agent来完成的,一般选择什么插件,就需要选择相应的plugin agent;plugin agent会调用相应的network-provider完成与该网络设备对应的功能;DHCP agent指的是为租户网络提供DHCP服务,每个插件都是使用这一个代理;L3 agent指的是为虚拟机访问外部网络提供三层转发服务

 

Glance

  • glance-api,接收来自外部的API镜像请求,这些请求包括镜像发现,获取以及存储
  • glance-registry,用于存储,处理和获取镜像元数据,v2版本的API,glance-registry功能已经整合到了glance-api
  • glance-db,存储元数据

 

创建虚拟机流程

  • 用户通过操作Horizon界面,一个创建虚拟机的请求被发送到OpenStack的系统后端
  • Glance根据用户选择的虚拟机安装的操作系统,从Swift下载启动镜像供虚拟机启动使用
  • 创建虚拟机的时候,Cinder提供块服务,以便虚拟机有volume可以使用
  • Neutron提供网络服务,使得虚拟机分配IP地址与外界网络通信
  • 之后该虚拟机资源的访问要通过Keystone的认证之后才可以继续

发表回复