OpenStack 核心服务管理全总结
一、认证服务(Keystone)
(一)核心概念
| 术语 | 定义 |
|---|---|
| Domain(域) | 虚拟容器,包含 User、Group、Project 等资源,全局唯一,适用于大型机构或数据中心 |
| User(用户) | 访问 OpenStack 服务的个人、系统或服务,通过凭证(用户名 / 密码)认证 |
| Group(用户组) | 一组用户的集合,可批量分配角色权限,简化权限管理 |
| Project(项目) | 资源集合(计算、存储、网络),域内唯一,公有云场景下也称 "租户" |
| Role(角色) | 定义用户权限集合,全局唯一,支持域级和项目级分配,可继承 |
| Service(服务) | OpenStack 核心组件(如 Nova、Glance),通过端点提供服务 |
| Endpoint(端点) | 服务的网络访问地址(URL),分公网、内网、管理网三类 |
| Token(令牌) | 认证成功后发放的访问凭证,默认有效期 24 小时 |
(二)常用操作命令
| 功能 | 命令 |
|---|---|
| 切换管理员环境 | source keystonerc_admin |
| 列出所有域 | openstack domain list |
| 创建域 | openstack domain create 域名称(例:openstack domain create domain-test) |
| 删除域 | 先禁用:openstack domain set --disable 域名称,再删除:openstack domain delete 域名称 |
| 列出所有用户 | openstack user list |
| 创建用户 | openstack user create --password 密码 用户名(例:openstack user create --password HUAWEI user1) |
| 创建用户组 | openstack group create 组名称(例:openstack group create group1) |
| 添加用户到组 | openstack group add user 组名称 用户名 |
| 分配角色(项目级) | openstack role add --user 用户名 --project 项目名 角色名 |
| 分配角色(组级) | openstack role add --group 组名称 --project 项目名 角色名 |
| 列出所有项目 | openstack project list |
| 创建项目 | openstack project create 项目名(例:openstack project create ProjectA) |
| 修改项目配额 | openstack quota set --instance 实例数 --cores vCPU数 --ram 内存MB 项目名 |
(三)关键配置
- 开启多域登录:修改
/etc/openstack-dashboard/local_settings,设置OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True,重启httpd服务。
二、镜像服务(Glance)
(一)核心概念
| 术语 | 定义 |
|---|---|
| 镜像(Image) | 包含操作系统及配置的模板,支持公共、私有、共享、市场镜像类型 |
| 实例(Instance) | 基于镜像创建的虚拟机,镜像与实例相互独立,实例修改不影响镜像 |
| 规格(Flavor) | 定义实例的资源配置(vCPU、内存、磁盘) |
| 磁盘格式 | 镜像的存储格式(qcow2、raw、vmdk 等),创建时需指定 |
(二)镜像状态机
| 镜像状态 | 说明 |
|---|---|
| queued | 已注册元数据,未上传镜像数据 |
| saving/uploading | 镜像数据正在上传 |
| active | 镜像创建完成,可用于创建实例 |
| deactivated | 非管理员无法访问 |
| killed | 上传失败,镜像不可用 |
| deleted/pending_delete | 镜像已标记删除,pending_delete 状态可恢复 |
(三)常用操作
| 功能 | 操作方式 |
|---|---|
| 上传镜像(Web 界面) | 进入 "项目> 计算 > 镜像",选择镜像文件,指定格式(如 QCOW2)和可见性 |
| 上传镜像(命令行) | glance image-create --name 镜像名 --file 本地路径 --disk-format 格式 --container bare --progress |
| 查看镜像信息 | openstack image show 镜像名/ID |
| 制作私有镜像 | 基于实例快照或外部镜像文件创建,需安装 cloud-init 支持密钥登录 |
| 配置 Swift 后端存储 | 修改 /etc/glance/glance-api.conf,设置 default_store=swift,配置 Swift 认证信息,重启 Glance 服务 |
三、计算服务(Nova)
(一)核心功能
-
虚拟机生命周期管理(创建、启动、停止、重启、删除、迁移)。
-
计算资源调度(基于过滤器和权重算法选择最优计算节点)。
-
实例规格(Flavor)管理、资源配额控制。
(二)核心组件
| 组件 | 作用 |
|---|---|
| nova-api | 对外提供 REST API,接收请求并转发给其他组件 |
| nova-scheduler | 调度器,通过过滤器(Filter)和权重(Weight)选择计算节点 |
| nova-conductor | 处理数据库操作,解耦 nova-compute 与数据库,提升安全性和性能 |
| nova-compute | 执行虚拟机生命周期操作,对接虚拟化驱动(KVM、VMware 等) |
| placement | 跟踪资源提供者的库存和使用情况 |
(三)常用操作
| 功能 | 命令 / 操作 |
|---|---|
| 列出计算服务状态 | openstack compute service list |
| 创建实例规格 | 界面:"管理员> 计算 > 实例类型",或命令:openstack flavor create |
| 创建实例 | 界面:"项目> 计算 > 实例 > 启动实例",需指定镜像、规格、网络 |
| 启动实例 | openstack server start 实例名/ID |
| 停止实例 | openstack server stop 实例名/ID |
| 重启实例 | 软重启:openstack server reboot 实例名/ID;硬重启:openstack server reboot --hard 实例名/ID |
| 挂起实例 | openstack server suspend 实例名/ID |
| 恢复实例 | openstack server resume 实例名/ID |
| 锁定实例 | openstack server lock 实例名/ID(防止误删除) |
| 热迁移实例 | 界面:选中实例 > "迁移",指定目标节点;命令:openstack server migrate 实例名 --host 目标节点 |
(四)调度机制
-
过滤阶段(Filter) :默认启用
AvailabilityZoneFilter(可用域过滤)、ComputeFilter(计算服务状态过滤)等,筛选符合条件的计算节点。 -
权重阶段(Weight):默认按空闲内存排序,空闲内存越多,权重越高,优先分配。
四、块存储服务(Cinder)
(一)核心概念
| 术语 | 定义 |
|---|---|
| 块存储(Block Storage) | 持久化存储设备,生命周期独立于实例,支持挂载、卸载、快照 |
| 卷(Volume) | 可挂载到实例的块存储设备,由后端存储(LVM、Ceph、SAN)提供 |
| 卷快照(Snapshot) | 卷的某一时刻快照,用于数据备份和恢复 |
| 后端存储(Backend) | 实际提供存储资源的设备,Cinder 通过驱动适配 |
(二)核心组件
| 组件 | 作用 |
|---|---|
| cinder-api | 对外提供 REST API,处理卷创建、挂载等请求 |
| cinder-scheduler | 调度卷到合适的后端存储节点 |
| cinder-volume | 管理后端存储,执行卷的实际操作 |
| cinder-backup | 卷备份服务,支持备份到 Swift、Ceph 等 |
(三)常用操作
| 功能 | 命令 / 操作 |
|---|---|
| 列出卷 | openstack volume list |
| 创建卷 | openstack volume create --size 大小GB --availability-zone 可用域 卷名称 |
| 挂载卷到实例 | openstack server add volume 实例名 卷名 |
| 卸载卷 | openstack server remove volume 实例名 卷名 |
| 创建卷快照 | openstack volume snapshot create --volume 卷名 快照名 |
| 恢复卷(从快照) | openstack volume create --snapshot 快照名 新卷名 |
五、对象存储服务(Swift)
(一)核心特点
-
用于静态数据长期存储(虚拟机镜像、备份、图片),无中心节点,扩展性强。
-
数据模型:
Account(账户)→ Container(容器)→ Object(对象)。 -
支持多副本存储,通过 Ring(环)维护数据与物理存储的映射关系。
(二)常用操作
| 功能 | 操作方式 |
|---|---|
| 创建容器 | 界面:"项目> 对象存储 > 容器 > 创建容器",指定名称和访问权限(公有 / 私有) |
| 上传对象 | 进入容器 > "上传对象",选择本地文件上传 |
| 下载对象 | 选中容器中的对象 > "下载" |
| 查看容器信息 | swift stat 容器名 |
| 命令行创建容器 | swift post 容器名 |
| 命令行上传对象 | swift upload 容器名 本地文件路径 |
六、网络服务(Neutron)
(一)核心概念
| 术语 | 定义 |
|---|---|
| Network(网络) | 二层广播域,支持 Local、Flat、VLAN、VXLAN、GRE 类型 |
| Subnet(子网) | IP 地址段(IPv4/IPv6),一个网络可包含多个不重叠子网 |
| Port(端口) | 虚拟交换机的端口,关联 MAC 地址和 IP 地址,用于实例网卡绑定 |
| Router(路由器) | 实现跨子网通信,支持 NAT、路由转发 |
| 安全组(Security Group) | 通过 iptables 控制实例的出入站流量 |
| 浮动 IP(Floating IP) | 映射私有 IP,实现实例对外网的访问和被访问 |
(二)网络类型说明
| 类型 | 特点 |
|---|---|
| Local | 仅主机内实例通信,隔离性最强,用于单机测试 |
| Flat | 无 VLAN 标签,同一网络跨节点通信 |
| VLAN | 基于 802.1q 标签,二层隔离,适用于企业内部网络 |
| VXLAN/GRE | Overlay 隧道网络,克服物理网络限制,适用于大规模云环境 |
(三)常用操作
| 功能 | 操作方式 |
|---|---|
| 创建网络 | 界面:"项目> 网络 > 创建网络",选择网络类型(如 VXLAN)、配置子网 |
| 创建路由器 | 界面:"项目> 网络 > 路由 > 新建路由",关联外部网络和内部子网 |
| 分配浮动 IP | 界面:"项目> 网络 > 浮动 IP > 分配浮动 IP",关联实例端口 |
| 配置安全组规则 | 进入安全组 > "添加规则",开放端口(如 22 端口用于 SSH,ICMP 用于 Ping) |
| 查看网络代理状态 | openstack network agent list |
七、编排服务(Heat)
(一)核心功能
-
通过模板(YAML/JSON)自动化部署复合云应用,支持资源依赖管理。
-
模板支持嵌套 Stack、伸缩组、负载均衡等高级功能。
(二)核心组件
| 组件 | 作用 |
|---|---|
| heat-api | 提供 REST API,接收模板部署请求 |
| heat-api-cfn | 提供兼容 AWS CloudFormation 的 API |
| heat-engine | 核心组件,解析模板、调度资源创建 |
(三)模板结构
heat\_template\_version: 2018-08-31 # 模板版本
description: 模板描述 # 可选
parameters: # 输入参数 可选
参数名:
type: 类型(string/number)
default: 默认值
resources: # 资源定义 必选(实例、网络、卷等)
资源名:
type: 资源类型(如 OS::Nova::Server)
properties: # 资源属性
image: 镜像名
flavor: 规格名
networks: 网络配置
outputs: # 输出参数 可选(如实例 IP、密钥)
输出名:
description: 描述
value: 输出值
(四)常用操作
| 功能 | 操作方式 |
|---|---|
| 部署堆栈 | 界面:"项目> 编排 > 堆栈 > 创建堆栈",上传模板文件,配置参数 |
| 查看堆栈状态 | openstack stack list |
| 删除堆栈 | openstack stack delete 堆栈名 |
八、核心服务协同流程(以创建虚拟机为例)
-
用户通过 Keystone 认证,获取 Token。
-
向 Nova-API 发送创建实例请求(携带 Token、镜像、规格、网络信息)。
-
Nova-API 验证 Token 有效性,调用 Nova-Scheduler 筛选计算节点。
-
Nova-Scheduler 通过过滤和权重算法选择最优计算节点。
-
Nova-Compute 调用 Glance-API 获取镜像,调用 Neutron-API 获取网络配置,调用 Cinder-API 挂载卷。
-
各服务(Glance、Neutron、Cinder)验证 Token 后执行对应操作。
-
Nova-Compute 通过虚拟化驱动(如 KVM)创建实例,返回结果给用户。