基本概念笔记
常见概念
project:对资源进行分组和隔离。
service:nova、cinder、glance......
endpoint:url,service 通过 endpoint 暴露 api,user 通过 endpoint 访问、操作资源
role:通过定义 role,赋予不同的权限,实现访问控制。openstack 默认配置只区分 admin 和非 admin role。
每个对象都有 id,delete、show 等操作以 id 为参数。
instance:用来表示虚机
flavor:定义了 vcpu、ram、disk、metadata,用作模板,创建 instance 时,用户只需要指定用哪个falvor就可以了
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
1. 定时向 openstack 报告计算节点状态
2. 通过调用 hypervison api 管理虚机 instance 生命周期,与 hypervisor 一起实现对 instance 生命周期管理。
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