基本概念笔记

keep going!~ / 2023-05-30 / 原文

project:对资源进行分组和隔离。

service:nova、cinder、glance......

endpoint:url,service通过endpoint暴露api,user 通过endpoint访问、操作资源

role:通过定义role,赋予不同的权限,实现访问控制。openstack 默认配置只区分 admin 和非 admin role。

每个对象都有id,delete、show等操作以 id 为参数。

glance

image 元数据保存在数据库 mysql 中,真正的 image 存放在后端,glance 支持多种 backend,在 glance-api.conf 内进行配置。

glance-api.log 记录 rest api 调用情况

glance-registry.log 记录 glance 服务处理请求的过程以及数据库操作

想要查看详细的日志,需要把glance.conf 中的debug打开,默认打开。

 

nova

组件

nova-api

接受和响应客户的api调用

 

nova-scheduler

虚机调度服务,决定在那个计算节点运行虚机

 

nova-compute

管理虚机,通过调用 hypervison api 管理虚机生命周期

 

hypervisor

计算节点上跑的虚拟化管理程序,常用的有 kvm、xen、vmware

 

nova-conductor

替nova-compute 访问和更新数据库

 

nova-console

访问虚机控制台

nova-novncproxy

nova-spicehtml5proxy

nova-xvpnvncproxy

 

nova-consoleauth

对访问虚机控制台请求提供token

部署方案

计算节点安装 hypervison,上面运行虚拟机。

只有 nova-compute 需要放在计算节点,其他子服务放在控制节点。

 

创建虚机流程

1. 向 nova-api 发送请求创建虚机

2. nova-api 向rabbitmq发送消息:让scheduler创建虚机

3. scheduer 收到消息,执行调度算法选择计算节点A,向 rabbitmq 发送消息:在A上面创建虚机

4. A上的nova-compute 从 rabbitmq 收到消息,在 hypervisor 上启动虚机

5. 创建虚机过程中,nova-compute 需要查询和更新数据库,向 rabbitmq 发送消息:让 nova-conductor 访问和更新数据库

 

Message Queue

为解耦各个子服务,Nova 通过 Message Queue 作为子服务的信息中转站。 所以在架构图上子服务之间没有直接的连线,是通过 Message Queue 联系的。

openstack 默认使用 rabbitmq