OpenStack 复习笔记
OpenStack 复习笔记
适合OpenStack初学者复习,涵盖Keystone、Glance、Nova、Cinder四大核心组件,包含核心概念、命令、实验要点。
基础类型
| 组件名称 | 中文名称 | 核心功能 |
|---|---|---|
| keystone | 身份认证服务 | 整个 OpenStack 的门卫,负责用户认证、鉴权、令牌 Token、服务端点 Endpoint 管理,所有组件都要和它交互 |
| glance | 镜像服务 | 虚拟机镜像管理,上传、查询、删除操作系统镜像,为 Nova 创建虚拟机提供镜像模板 |
| nova | 计算服务 | 管理虚拟机(实例 Instance)生命周期:创建、启停、迁移;调度虚拟机到计算节点 |
| neutron | 网络服务 | 提供虚拟网络,网卡、子网、路由器、浮动 IP,给虚拟机提供网络资源 |
| cinderv2 / cinderv3 | 块存储服务 (Cinder) | v2、v3 是Cinder API 的两个版本;提供持久化云硬盘(块卷),可以挂载给虚拟机,关机数据不丢失 |
| placement | 资源 Placement 服务 | Nova 配套组件,跟踪集群 CPU、内存等硬件资源库存,调度虚拟机的时候核查资源余量 |
| swift | 对象存储服务 | 分布式对象存储,存放文件、备份,适合存非结构化数据,不能像硬盘直接挂载给虚拟机 |
| heat | 编排部署服务 | 模板自动化批量创建资源,写 yaml 模板一键部署虚拟机、网络、存储整套云环境,实现基础设施即代码 |
| heat‑cfn | Heat 兼容 CloudFormation 接口 | 提供兼容 AWS‑CFN 的 API 接口,让 aws 模板可以在 heat 运行 |
| ceilometer | 计量监控服务 | 早期监控组件,采集各个服务资源使用数据(CPU、网络流量),统计计费原始数据 |
| gnocchi | 时序数据库 | 给监控计量数据提供高性能存储,通常搭配 ceilometer/aodh 一起使用 |
| aodh | 告警服务 | 监控告警,当资源指标超过阈值(CPU 过高、内存爆满)触发告警 |
一、Keystone 认证服务(身份管理)
1. 核心概念
| 名词 | 说明 |
|---|---|
| Domain(域) | 虚拟容器,存放User/Group/Project/Role;全局唯一,可对应机构/数据中心 |
| User(用户) | 访问OpenStack的实体(人、系统、其他服务),域内唯一 |
| Group(用户组) | 用户集合,给组分配角色,组内全部用户继承权限 |
| Project(项目/租户) | 资源集合,计算、存储、网络资源归属项目;域内唯一,旧称Tenant |
| Role(角色) | 权限集合,决定用户能干什么;可以赋予域级别或者项目级别,全局唯一 |
| Service(服务) | OpenStack组件服务,如nova、glance,对外暴露Endpoint |
| Endpoint(端点) | 服务访问URL,分为admin、internal、public三种 |
| Token(令牌) | 身份凭证,认证成功后发放,默认有效期24h |
| Credential(凭证) | 证明身份信息,用户名密码、token、API Key |
✨区分:
- Authentication认证:你是谁(校验身份)
- Authorization鉴权:你可以干什么(依靠Role角色)
2. 核心操作命令
# 加载管理员环境变量
source keystonerc_admin
# domain操作
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 list
# 给组赋予项目下角色
openstack role add --project admin --group group1 admin
# 项目操作
openstack project create ProjectA
openstack project list
# 用户绑定项目并分配角色
openstack role add --user user1 --project ProjectA admin
# 修改项目配额(实例、vcpu、内存)
openstack quota set --instance 3 --cores 5 --ram 5000 ProjectA
openstack quota show ProjectA
# 查看服务、端点
openstack service list
openstack endpoint list
openstack catalog list
3. Horizon开启多域登录
修改/etc/openstack-dashboard/local_settings
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
systemctl restart httpd
4. Keystone排错
日志路径:/var/log/keystone/keystone.log 开启debug:修改/etc/keystone/keystone.conf,设置debug=True
5. 用户登录查询镜像完整流程
- 用户提交账号密码(Credential)给Keystone
- Keystone认证,返回Token
- 携带Token查询自己可访问哪些Project
- 获取各个Service的Endpoint地址
- 访问Glance端点请求镜像列表
- Glance携带token向Keystone校验token合法性
- Glance读取policy.json判断该角色是否有权限查询镜像
- 返回镜像数据给用户
二、Glance 镜像服务
1. Glance作用
- 管理VM镜像:注册、上传、下载、删除镜像
- 保存镜像元数据和镜像实体数据
- 支持多种存储后端:file、swift、ceph、s3
- 支持虚拟机快照生成镜像
镜像:操作系统模板,用来创建虚拟机实例
2. 镜像分类
| 类型 | 特点 |
|---|---|
| 公共镜像 | 平台提供,所有用户可见 |
| 私有镜像 | 个人上传,仅自己可见 |
| 共享镜像 | 其他用户分享给我使用 |
| 市场镜像 | 第三方预装软件镜像 |
3. 磁盘格式
qcow2:QEMU常用,动态扩展、写时复制(实验环境cirros镜像)raw:原始格式,iso属于rawvmdk:VMwarevhd/vhdx:微软、Xeniso:光盘镜像
4. Glance架构
- glance‑api:对外REST接口,V2版本不再需要registry组件;处理元数据请求直接访问数据库,镜像数据交给store驱动。
- glance store drivers:对接不同后端存储(本地文件、swift、ceph)
- glance DB:保存镜像元数据(大小、格式、名称、位置)
镜像元数据存MySQL,镜像实体文件存后端存储。
配置文件路径:/etc/glance/glance-api.conf 数据库连接配置:connection=mysql+pymysql://glance:xxx@192.168.108.10/glance
5. 镜像状态机
| 状态 | 含义 |
|---|---|
| queued | 仅数据库有元数据,镜像数据未上传 |
| saving/uploading | 镜像正在上传中 |
| active | 上传完成,可以正常使用 |
| deactivated | 禁止普通用户访问镜像 |
| killed | 上传出错,镜像损坏不可用 |
| deleted | 标记删除,数据保留,后期自动清理 |
| pending_delete | 待删除,还未清除镜像数据 |
6. 实验操作
# 查看镜像格式
qemu-img info cirros-0.5.2-x86_64-disk.img
# 命令行上传镜像(带进度条,大文件推荐命令行,web上传容易失败)
glance image-create --name image_centos --file xxx.iso --disk-format raw --container bare --progress
默认file后端镜像存放路径:
/var/lib/glance/images/数据库表glance.image_locations记录镜像实际存储位置。
7. 修改后端存储为Swift
修改glance-api.conf
[glance_store]
stores=file,http,swift
default_store=swift
# swift账号密码等配置
swift_store_auth_address = http://192.168.108.10:5000/v3
swift_store_user = swift
swift_store_key = 密码(从answers.txt获取)
重启服务:systemctl restart openstack-glance*
上传镜像后数据库image_locations中value会变成swift+http://开头地址。
三、Nova 计算服务(管理虚拟机生命周期)
1. Nova组件功能
| 组件 | 作用 |
|---|---|
| nova‑api | 对外REST接口,接收用户请求,参数校验、配额校验,入口 |
| nova‑conductor | 数据库代理;解耦nova‑compute,compute不再直连数据库;处理迁移、调整规格等复杂流程 |
| nova‑scheduler | 调度器,选择在哪台计算节点创建虚拟机,分为过滤Filter、权重Weight两步 |
| nova‑compute | 真正执行虚拟机生命周期;调用libvirt/KVM驱动创建/启停虚拟机;运行在计算节点 |
| placement | 跟踪计算节点CPU、内存资源库存与使用量 |
nova不管理物理主机硬件本身,只管理虚拟机。
2. nova‑scheduler调度流程
- Filter(过滤):筛掉不满足条件的主机
- Weight(权重打分):剩下主机打分,分数最高优先部署
常用Filter过滤器
| 过滤器 | 作用 |
|---|---|
| AvailabilityZoneFilter | 匹配可用域AZ,不在指定AZ直接过滤 |
| ComputeFilter | 只保留nova‑compute服务正常运行的节点 |
| RamFilter | 过滤内存不满足flavor的节点;支持内存超配 ram_allocation_ratio=1.5 |
| DiskFilter | 磁盘资源过滤;disk_allocation_ratio |
| CoreFilter | vCPU过滤,cpu_allocation_ratio,默认不在启用列表 |
| ComputeCapabilitiesFilter | 根据计算节点硬件架构过滤(x86/ARM),需要flavor元数据 |
| ImagePropertiesFilter | 根据镜像元数据过滤hypervisor类型,需要镜像元数据 |
| ServerGroupAntiAffinityFilter | 反亲和,实例分散部署不同主机 |
| ServerGroupAffinityFilter | 亲和,实例尽量部署同一台主机 |
权重默认优先选择空闲内存最多的主机。
超配:允许分配的资源大于物理实际资源,提高资源利用率。
主机聚合 & 可用域AZ
- 主机聚合Host Aggregate:逻辑分组,绑定Availability Zone可用域。
- 创建实例时指定AZ,AvailabilityZoneFilter会过滤不属于该AZ的主机。
3. 虚拟机实例操作
创建实例必须三样:镜像、flavor实例类型规格、网络
-
软重启soft reboot:客户机内部执行reboot,虚拟机状态保持运行。
-
硬重启hard reboot:底层关机再开机。
-
Pause暂停:状态保存宿主机内存,恢复快;状态Paused。
-
Suspend挂起:状态保存宿主机磁盘;恢复慢,状态Shut Down。
-
Shelve搁置:把实例保存为镜像上传Glance,宿主机删除虚拟机,释放计算节点资源。
-
Lock锁定实例
:防止误删。
- 策略文件
nova_policy.json控制锁权限。 - 默认
admin_or_owner,所有者和管理员都可以解锁;修改策略为admin_api仅管理员解锁。
- 策略文件
-
重建实例Rebuild:保留虚拟机配置,使用原始镜像重装操作系统。
4. 创建虚拟机完整流程
- 用户(CLI/Horizon)携带token向nova‑api发起创建实例请求。
- nova‑api调用keystone校验token合法性;写入数据库初始化实例记录。
- 通过RPC消息队列向nova‑scheduler发送调度请求。
- scheduler执行Filter过滤+Weight权重,选出目标计算节点。
- scheduler发送RPC消息给目标节点nova‑compute。
- nova‑compute如需读写数据库,通过RPC调用nova‑conductor代理访问DB。
- nova‑compute向Glance获取镜像、向Neutron获取网络、向Cinder获取存储卷。
- compute调用libvirt驱动,在Hypervisor上真正创建虚拟机。
5. 日志与排错
- nova-scheduler日志:
/var/log/nova/nova‑scheduler.log - 开启debug:
nova.conf设置debug=True,生产环境关闭debug,消耗性能。
查看nova服务状态
openstack compute service list
6. RabbitMQ消息队列
OpenStack组件之间RPC通信依赖RabbitMQ。 开启web管理插件:
rabbitmq‑plugins enable rabbitmq_management
# 创建管理员账号
rabbitmqctl add_user user_admin passwd_admin
rabbitmqctl set_user_tags user_admin administrator
rabbitmqctl set_permissions -p / user_admin ".*" ".*" ".*"
访问地址:http://ip:15672
关注
Unacked未确认消息,持续增长说明消息堆积,系统异常。
四、Cinder块存储服务(持久化块卷)
1. 存储分类
-
临时存储Ephemeral:虚拟机本地盘,虚拟机删除/关机数据丢失,nova本地磁盘。
-
持久存储Persistent
:生命周期独立虚拟机,关机删除虚拟机数据还在。
- Cinder块存储:块设备,挂载给虚拟机,用于数据库。
- Swift对象存储:REST API访问对象文件。
- Manila文件存储:提供NFS/CIFS共享文件系统。
Cinder提供块存储卷,只是抽象中间层,本身不做实际存储,通过驱动对接后端存储(LVM、Ceph、SAN存储设备)。
2. Cinder组件
| 组件 | 功能 |
|---|---|
| cinder‑api | 对外REST API,接收卷增删改查、挂载卸载请求,校验参数,操作数据库,发送RPC给scheduler |
| cinder‑scheduler | 调度,Filter过滤+Weigher权重,选择合适后端存储节点 |
| cinder‑volume | 调用后端驱动,真正执行卷创建、删除;对接LVM/Ceph/SAN存储硬件 |
| cinder‑backup | 卷备份,备份到swift等存储后端 |
| cinder DB | 数据库,保存卷、快照、后端信息 |
配置文件路径:/etc/cinder/cinder.conf 日志路径:/var/log/cinder/
3. Cinder Scheduler过滤器
AvailabilityZoneFilter:可用域AZ过滤CapacityFilter:过滤存储空间不足的后端CapabilitiesFilter:匹配后端存储能力特性(精简置备等)
配置:
scheduler_default_filters在cinder.conf。
4. LVM后端原理(实验环境默认)
PV物理卷 → VG卷组 → LV逻辑卷。 Cinder在LVM卷组中创建LV作为块存储卷提供给虚拟机。
查看卷组:
vgdisplay cinder‑volumes
5. Cinder高可用部署
- cinder‑api:多节点部署,HAProxy负载均衡AA模式。
- cinder‑scheduler:多节点AA,RabbitMQ分发任务。
- cinder‑volume:多节点,对接存储后端。
- 数据库MySQL主从集群;RabbitMQ集群/主备。
五、易混淆概念总结
- 镜像Image:模板,操作系统。
- Flavor实例类型:定义虚拟机规格:vCPU、内存、磁盘大小。
- Instance实例:运行中的虚拟机,从镜像启动,使用flavor分配资源。
- Volume卷:cinder持久化块存储,可以挂载给实例,独立生命周期。
一个镜像可以启动很多实例;实例修改不会改变原始镜像。
六、考试/实验高频考点
- Keystone:区分Domain、Project、User、Group、Role;token作用;三种endpoint。
- Glance:镜像磁盘格式qcow2;镜像各个状态;元数据和镜像实体分别保存在数据库和后端存储。
- Nova:scheduler两步调度Filter+Weight;各个过滤器作用;实例各种暂停重启操作区别;创建实例完整流程。
- Cinder:临时存储与持久存储区别;cinder各个组件;LVM后端;scheduler过滤器。
- 排错思路:查看对应组件日志,开启debug模式观察RPC消息;RabbitMQ关注未确认消息。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)