OpenStack核心组件详解|Keystone+Glance+Nova+Cinder原理与实操笔记

一、Keystone 身份认证服务

Keystone是OpenStack的认证鉴权中心,负责用户权限管理、服务端点维护、认证(Authentication)与鉴权(Authorization)

1. 核心概念

概念 说明
Domain(域) 虚拟容器,容纳User/Group/Project/Role,全局唯一,可对应机构/数据中心
User(用户) 使用OpenStack的实体(人、系统、服务账号),域内唯一
Group(用户组) 用户集合,给组分配角色,组内用户继承权限,批量管理权限
Project(项目/租户) 资源集合,虚拟机、卷都归属项目;域内唯一,Tenant/Project/Account同义
Role(角色) 权限集合,区分admin/member/reader;可赋予域级别或项目级别权限,全局唯一
Service OpenStack内部服务,如nova、glance
Endpoint(端点) 服务访问网络地址,分admin/public/internal三种访问入口
Token(令牌) 身份凭证,认证成功后下发,默认有效期24h
Credential(凭证) 身份证明,用户名密码、token、API密钥等

认证:解决「你是谁」;鉴权:解决「你能干什么」,鉴权依靠各组件policy.json策略文件实现。

2. 常用CLI命令

bash 复制代码
# 加载admin环境变量
source keystonerc_admin

# 域管理
openstack domain list
openstack domain create domain‑test
openstack domain set --disable domain‑test
openstack domain delete domain‑test

# 用户管理
openstack user list
openstack user create --password HUAWEI user1
openstack user show user1

# 用户组管理
openstack group create group1
openstack group add user group1 user1
openstack group contains user group1 user1

# 角色赋予(给组分配项目角色)
openstack role add --project admin --group group1 admin

# 项目管理
openstack project create ProjectA
openstack role add --user user1 --project ProjectA admin

# 查看服务、端点
openstack service list
openstack catalog list
openstack endpoint list

3. Horizon开启多域登录

修改/etc/openstack‑dashboard/local_settings

ini 复制代码
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

重启httpd服务:systemctl restart httpd

4. 完整认证调用流程

  1. 用户提交用户名密码到Keystone,获取Token令牌
  2. 用户携带Token调用Nova创建虚拟机
  3. Nova拿着Token向Keystone校验有效性
  4. Nova调用Glance拿镜像、调用Neutron拿网络,每次调用都携带Token,各组件再向Keystone校验token
  5. 每个服务本地读取自身policy.json做权限判定,决定是否允许执行操作

排错日志路径:/var/log/keystone/keystone.log,修改keystone.confdebug=True开启调试日志。


二、Glance 镜像服务

Glance负责镜像注册、上传、查询、元数据维护,为Nova提供虚拟机镜像源,镜像数据可存本地文件、Swift、Ceph等后端。

1. 镜像分类

  • 公共镜像:平台提供,全部用户可见
  • 私有镜像:个人上传,仅自己使用
  • 共享镜像:其他用户分享给我使用
  • 市场镜像:第三方预装应用镜像

提示:建议镜像内置cloud‑init,支持密钥注入、用户自定义数据。

2. 常见磁盘格式

格式 描述
qcow2 QEMU动态镜像,写时复制,OpenStack最常用
raw 原始裸格式
vmdk VMware镜像格式
vhd/vhdx 微软/Xen虚拟化格式
iso 光盘镜像

3. 镜像状态机

  • queued:仅数据库元数据,镜像文件未上传
  • saving/uploading:正在上传镜像数据
  • active:上传完成,可正常使用
  • deactivated:禁止普通用户访问镜像
  • killed:上传出错,镜像损坏不可用
  • deleted/pending_delete:标记删除,等待清理

4. 实操命令

bash 复制代码
# 查看镜像格式
qemu‑img info cirros‑0.5.2‑x86_64‑disk.img

# 命令行上传镜像(带进度条,适合大文件,web上传容易超时)
glance image‑create --name image_centos --file CentOS‑7‑x86_64‑Minimal.iso --disk‑format raw --container‑format bare --progress

5. 存储后端切换示例(切换到Swift)

修改/etc/glance/glance‑api.conf

ini 复制代码
[glance_store]
stores=file,http,swift
default_store=swift
swift_store_auth_address = http://192.168.108.10:5000/v3
swift_store_user = swift
swift_store_key = 你的swift密码

重启glance服务:systemctl restart openstack‑glance*

默认本地存储路径:/var/lib/glance/images/;镜像元数据保存在glance数据库。


三、Nova 计算服务

Nova负责虚拟机实例完整生命周期管理(创建、启动、暂停、迁移、删除),对接底层KVM/QEMU/VMware等虚拟化,不管理物理主机硬件本身。

1. Nova各组件作用

组件 功能
nova‑api 对外REST API入口,参数校验、配额检查,接收用户请求
nova‑conductor 数据库代理;解耦nova‑compute与数据库,负责复杂业务逻辑,提升安全与并发
nova‑scheduler 调度器,为虚拟机挑选合适计算节点,分为过滤Filter + 权重Weight两步
nova‑compute 运行在计算节点;真正调用Hypervisor驱动,完成虚拟机创建操作
placement 跟踪CPU、内存等资源库存,调度资源统计
RabbitMQ 消息队列,各组件RPC通信载体

2. nova‑scheduler调度流程

  1. Filter过滤 :淘汰不满足条件主机
    • AvailabilityZoneFilter:过滤不在指定可用域AZ的主机
    • RamFilter:过滤内存不足主机,支持内存超配ram_allocation_ratio
    • ComputeCapabilitiesFilter:根据flavor元数据筛选主机架构
    • ImagePropertiesFilter:根据镜像元数据筛选hypervisor类型
    • ServerGroupAntiAffinityFilter:反亲和,实例分散不同主机
    • ServerGroupAffinityFilter:亲和,实例尽量放同一台主机
  2. Weight权重打分:过滤之后剩余主机打分,分数最高优先部署,默认优先空闲内存大的节点。

主机聚合Host Aggregate:把计算节点划分不同可用域AZ,实现硬件资源分组调度,如GPU节点单独一个AZ。

3. 虚拟机常用状态操作

操作 效果
软重启soft reboot 虚拟机内部reboot,不中断宿主机hypervisor
硬重启hard reboot 模拟关机再开机
Pause暂停 虚拟机状态保存宿主机内存,恢复速度快
Suspend挂起 虚拟机状态保存宿主机磁盘,释放内存资源
Shelve搁置 把实例保存为镜像到Glance,宿主机删除实例释放资源
Lock锁定 防止误删;policy.json控制普通用户是否可解锁

4. 查看nova服务状态

bash 复制代码
openstack compute service list
# 日志:/var/log/nova/,开启debug修改nova.conf debug=True

5. 创建虚拟机依赖条件

创建实例至少三样资源:Flavor实例规格 + Glance镜像 + Neutron网络

6. 虚拟机创建简要流程

  1. 用户请求nova‑api创建实例,携带token
  2. nova‑api校验token,写数据库初始化实例记录
  3. 通过MQ发送消息给nova‑scheduler,调度选出目标计算节点
  4. scheduler发消息给目标节点nova‑compute
  5. nova‑compute向Glance拿镜像,Neutron拿网络,Cinder拿卷
  6. compute调用libvirt/kvm驱动,真正创建虚拟机

四、Cinder 块存储服务

Cinder提供持久化块存储卷,卷生命周期独立虚拟机,虚拟机删除卷数据不会丢失;支持LVM、Ceph、SAN存储等多种后端驱动。

区分:Nova本地磁盘为临时存储,虚拟机删除数据丢失;Cinder卷是持久存储。

1. Cinder组件

组件 功能
cinder‑api 对外REST接口,接收卷增删改查、挂载卸载请求
cinder‑scheduler 调度器,filter+weight选择合适存储后端
cinder‑volume 对接存储驱动,真正执行卷操作;支持LVM、SAN、Ceph等
cinder‑backup 卷备份服务,可备份到Swift对象存储
Database 保存卷、快照、后端元数据

2. Cinder Scheduler过滤器

  • AvailabilityZoneFilter:匹配存储可用域
  • CapacityFilter:过滤剩余容量不足的后端
  • CapabilitiesFilter:根据卷类型volume‑type的扩展规格匹配后端

volume‑type(卷类型):通过扩展规格volume_backend_name绑定不同存储后端。

3. LVM后端概念

PV物理卷 → VG卷组 → LV逻辑卷;Packstack默认LVM后端,卷组名称cinder‑volumes

bash 复制代码
vgdisplay cinder‑volumes

4. 卷挂载流程

  1. Nova调用Cinder API发起挂载请求,传递计算主机initiator信息
  2. cinder‑api交由scheduler找到volume后端
  3. cinder‑volume驱动配置存储,返回iSCSI target/FC连接信息
  4. compute节点识别块设备,hypervisor把磁盘映射进虚拟机内部。

Cinder配置目录:/etc/cinder/,日志:/var/log/cinder/


五、补充:OpenStack存储大类总结

  1. 临时存储Ephemeral Storage:nova本地盘,实例删除数据丢失
  2. 块存储Cinder:块设备,挂载给虚拟机,适合数据库业务
  3. 对象存储Swift:REST接口存取对象文件,适合备份、镜像后端
  4. 文件存储Manila:提供NFS/CIFS共享文件系统,本篇未展开

消息队列RabbitMQ:OpenStack各组件RPC通信核心;开启web管理界面rabbitmq‑plugins enable rabbitmq_management,访问http://ip:15672


相关推荐
吹什么轩2 小时前
linux网络:UDP原理
linux·网络·udp
点心的游戏开发世界10 小时前
GDScript 入门笔记(十一):Lambda 与匿名函数
开发语言·笔记·游戏引擎·godot
啊阿狸不会拉杆10 小时前
《计算机网络-自顶向下方法》5.4 ISP之间的路由选择:BGP 读书笔记
网络·计算机网络·接口隔离原则
摇滚侠10 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 使用 JdbcTemplate 阅读笔记 32
spring boot·笔记·后端
Delite80212 小时前
摆脱实验室束缚:便携式卡尔费休微量水分检测技术与现场应用解析
大数据·网络·人工智能
ACP广源盛1392462567312 小时前
M6/M5 Pro Mac mini 端侧 AI 落地@ACP#YLB3116 中端多盘存储扩展在 AI 服务中的机会与应用场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
鱼子星_12 小时前
【C++】继承和多态(上)
c++·笔记
ACP广源盛1392462567313 小时前
M6/M5 Pro Mac mini 端侧 AI 新形态@ACP#GSV5800 Serdes 长距离视频传输在 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos·音视频
xian_wwq13 小时前
【学习笔记】深度认知系列-第14讲 端侧AI崛起——为什么AI正在从云端走向本地
人工智能·笔记·学习