OpenStack架构学习与解析

初识Openstack

OpenStack 是一个开源的公有云和私有云的云计算平台。一系列的相关项目提供了一套云基础设施解决方案。云计算中所谓的云可以简单地理解为任何可以通过互联网访问的服务。
云计算有三种落地方案:Iaas(基础架构服务)、Paas(平台即服务)、SaaS(软件即服务)。
Openstack目前的七个核心组件:计算(compute)(Nova)、网络(Network)(Neutron)、块存储(Block Storage)(Cinder)、认证(Identity)(Keystone)、镜像管理(Image Service)(Glance)、对象存储(Object Storage)(Swift)、用户界面(Dashboard)(horizon)。每个组件都是多个服务的集合。一个服务意味着运行着的一个进程。

计算(Nova)

这是Openstack的计算组件也是最核心的组件,控制一个个虚拟机状态变迁与生命周期,管理着他们的资源分配。
OpenStack计算服务是基础设施服务系统的主要部分,模块主要由python实现。OpenStack其他组件归根结底是为Nova服务的。
Nova.(request)---> kestone进行服务认证;Nova.(request)--->Glance提供磁盘镜像;为OpenStack dashboard(horizon)提供用户与管理员接口。
nova-api 服务
接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。
nova-api-metadata 服务
接受来自虚拟机发送的元数据请求。nova-api-metadata服务一般在安装nova-network服务的多主机模式下使用。
nova-compute服务
一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例。例如:
XenServer/XCP 的 XenAPI
KVM 或 QEMU 的 libvirt
VMware 的 VMwareAPI
过程是蛮复杂的。最为基本的,守护进程同意了来自队列的动作请求,转换为一系列的系统命令如启动一个KVM实例,然后,到数据库中更新它的状态。
nova-scheduler服务
拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。
nova-conductor模块
媒介作用于nova-compute服务与数据库之间(提供数据库查询功能,RPC服务)。它排除了由nova-compute服务对云数据库的直接访问。nova-conductor模块可以水平扩展。但是,不要将它部署在运行nova-compute服务的主机节点上。
nova-cert模块
服务器守护进程向Nova Cert服务提供X509证书。用来为euca-bundle-image生成证书。仅仅是在EC2 API的请求中使用。
**nova-network worker **守护进程
nova-compute服务类似,从队列中接受网络任务,并且操作网络。执行任务例如创建桥接的接口或者改变IPtables的规则。
nova-consoleauth 守护进程
授权控制台代理所提供的用户令牌。详情可查看nova-novncproxy和 nova-xvpvncproxy。该服务必须为控制台代理运行才可奏效。在集群配置中你可以运行二者中任一代理服务而非仅运行一个nova-consoleauth服务。
ova-novncproxy 守护进程
提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。

nova-spicehtml5proxy 守护进程
提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。

nova-xvpvncproxy 守护进程
提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。

nova-cert 守护进程
X509 证书。

nova客户端
用于用户作为租户管理员或最终用户来提交命令。
队列
一个在守护进程间传递消息的中央集线器。常见实现有RabbitMQhttp://www.rabbitmq.com/ , 以及如Zero MQ http://www.zeromq.org/等AMQP消息队列。
SQL数据库
存储构建时和运行时的状态,为云基础设施,包括有:

  • 可用实例类型
  • 使用中的实例
  • 可用网络
  • 项目

理论上,OpenStack计算可以支持任何和SQL-Alchemy所支持的后端数据库,通常使用SQLite3来做测试可开发工作,MySQL和PostgreSQL 作生产环境。

Nova核心组件通信

Nova中各个服务之间的通信使用了基于AMQP实现的RPC机制,其中nova-compute、nova-conductor和nova-scheduler在启动时都会注册一个RPC Server,而nova-api因为Nova内部并没有服务会调用它提供的接口,所以无需注册。Nova API把客户端的请求传达给Nova,处理完过后返回给客户端。学习和理解API的执行过程是一个深入学习的一个很好的过渡。

Nova API执行过程

novaclient (HTTP)->Paste Deploy ->WSGI Application的阶段,以及Router将请求路由到具体函数并执行的阶段。

Conductor服务

nova-conductor目的是为数据库的访问提供一层安全的保障。在此之前,nova-compute都是直接访问数据库,一旦其被攻击,则数据库会面临直接暴露的危险。而且nova-compute因为conductor的关系,与数据库解耦。

posted @ 2020-09-28 22:39  L1m1t  阅读(230)  评论(0编辑  收藏  举报