一、Keystone 认证管理

1. 核心概念

概念 说明
Domain(域) 一组 User、Group、Project 的容器,可对应一个机构/数据中心,全局唯一。
User(用户) 访问 OpenStack 的实体,通过 Credential(用户名/密码等)认证,获得 Token。
Group(用户组) 一组 User 的容器,可对 Group 直接分配角色,组内用户继承角色权限。
Project(项目) 资源的集合(计算、存储、网络),资源所有权属于 Project 而非 User。每个 User 必须挂载到 Project 才能访问资源。
Role(角色) 定义一组权限,角色不同权限不同。可分配给 User 或 Group(域内或项目内)。
Service(服务) 如 Nova、Cinder、Glance,每个服务暴露若干 Endpoint。
Endpoint(端点) 服务可访问的网络地址(URL),分为 admin、public、internal 三种类型。
Token(令牌) 认证成功后返回的字符串,作为后续访问凭证,默认有效期 24 小时。
Credential(凭证) 确认用户身份的数据(如用户名/密码)。

2. 常用操作(命令行示例)

  • 创建 domain
    openstack domain create --description "描述" domain名
  • 创建 user
    openstack user create --password 密码 user1
  • 创建 group 并将 user 加入 group
    openstack group create group1
    openstack group add user group1 user1
  • 创建 project
    openstack project create ProjectA
  • 分配角色
    openstack role add --project ProjectA --user user1 admin
  • 设置配额
    openstack quota set --instances 3 --cores 5 --ram 5000 ProjectA
  • 查看服务与 endpoint
    openstack service list
    openstack endpoint list / openstack catalog list

3. 认证与鉴权流程

  1. 用户提供用户名/密码 → Keystone 验证 → 返回 Token(内含 Role 信息)。
  2. 用户携带 Token 访问其他服务(如 Nova)。
  3. 服务收到请求后,将 Token 发送给 Keystone 验证有效性。
  4. 每个服务通过自身的 policy.json 决定 Role 是否有权执行操作。

二、Glance 镜像管理

1. 镜像格式

格式 说明
qcow2 QEMU 支持,支持动态扩展和写时复制(常用)
raw 非结构化磁盘格式
iso 光盘存档格式
vhd / vmdk / vdi 分别对应 Xen/Xbox、VMware、VirtualBox
aki / ari / ami Amazon 内核/内存盘/机器镜像

2. 镜像状态

状态 含义
queued 只保留元数据,镜像数据未上传
saving 原始数据正在上传
uploading 调用了 import data 请求
importing 导入中,尚未就绪
active 镜像可用
deactivated 非管理员不可访问
killed 上传出错,不可用
deleted 已删除,稍后自动清理
pending_delete 类似 deleted,但数据未清除(可恢复)

3. 上传镜像实验

  • 使用 qemu-img info 查看镜像格式。
  • Web 界面创建镜像:指定名称、源类型(本地文件/URL)、磁盘格式、可见性等。
  • 命令行上传大文件(带进度条)
    glance image-create --name image-centos --file CentOS.iso --disk-format raw --container bare --progress
  • 镜像文件默认存储位置:/var/lib/glance/images/,数据库 image_locations 表记录路径。

4. Glance 架构变化

  • Newton 及之前:Glance-API + Glance-Registry(Registry 处理元数据)。
  • Stein 开始:废弃 Glance-Registry,Glance-API 直接操作数据库,通过 Store 模块对接不同后端(S3、Cinder、Swift、Ceph 等)。

三、Nova 计算管理

1. Nova 组件架构

组件 功能
nova-api 接收 REST 请求,入口,校验参数,配额管理
nova-scheduler 为虚拟机选择合适的物理主机(过滤 + 权重)
nova-compute 真正执行虚拟机生命周期操作,调用 Hypervisor Driver(KVM/VMware/Xen 等)
nova-conductor 代理数据库访问,解耦 nova-compute 与数据库,提高安全性及并发
nova-console 提供 VNC/SPICE 等控制台访问
消息队列(RabbitMQ) 组件间通信,如 nova-api → nova-scheduler → nova-compute
数据库 存储实例、规格、资源使用等信息

2. Nova 调度器(Filter Scheduler)

调度过程两步:

  1. 过滤(Filter):选出满足条件的计算节点。
  2. 权重(Weight):对通过过滤的节点打分,选分最高者。

常用过滤器:

Filter 作用
RetryFilter 排除之前调度失败的节点
AvailabilityZoneFilter 根据可用区筛选节点
RamFilter 检查内存是否满足 flavor 需求(支持 overcommit,ram_allocation_ratio 默认 1.5)
DiskFilter 检查磁盘容量(disk_allocation_ratio 默认 1.0)
CoreFilter 检查 vCPU 数量(cpu_allocation_ratio 默认 16)
ComputeFilter 只保留 nova-compute 服务正常的节点
ComputeCapabilitiesFilter 根据计算节点特性(如 CPU 架构)筛选
ImagePropertiesFilter 根据镜像属性(如 hypervisor_type)筛选
ServerGroupAntiAffinityFilter 将实例分散到不同节点
ServerGroupAffinityFilter 将实例尽量集中到同一节点

权重:默认根据计算节点空闲内存量打分,空闲内存越多权重越大。

3. 创建实例(虚拟机)的详细流程

  1. 用户通过 Dashboard/CLI 发起创建请求(携带认证 token)。
  2. Keystone 验证 token 和角色。
  3. nova-api 接收请求,校验参数,初始化数据库记录。
  4. nova-api 通过 RPC call 向 nova-scheduler 请求资源。
  5. nova-scheduler 执行过滤+权重,选出目标计算节点。
  6. nova-scheduler 更新数据库,并通过 RPC cast 向目标节点的 nova-compute 发送创建请求。
  7. nova-compute 通过 RPC call 向 nova-conductor 获取实例信息。
  8. nova-conductor 查询数据库并返回信息。
  9. nova-compute 调用 Hypervisor Driver 创建虚拟机(期间可能向 Glance 获取镜像、向 Neutron 配置网络、向 Cinder 挂载卷)。
  10. 各服务间通信均需携带 token 并向 Keystone 验证。
  11. 创建完成后,用户可通过 nova-console 访问控制台。

4. 实例操作

  • 软重启(Soft Reboot):只重启操作系统,实例保持运行。
  • 硬重启(Hard Reboot):关机再开机。
  • 暂停(Pause):状态保存到内存,恢复快。
  • 挂起(Suspend):状态保存到磁盘,释放内存资源。
  • 搁置(Shelve):将实例保存为镜像到 Glance,删除原实例,释放所有资源。
  • 锁定(Lock):防止意外删除。可通过修改 nova_policy.json 控制解锁权限(默认 admin_or_owner,可改为 admin_only)。

四、网络基础(Neutron 简述,支撑实例创建)

1. 虚拟网络技术

  • TAP/TUN:模拟二层/三层虚拟网络设备。
  • VETH Pair:成对虚拟网卡,用于连接不同网络命名空间或网桥。
  • Linux Bridge:二层虚拟交换机(brctl 管理)。
  • Open vSwitch(OVS):产品级虚拟交换机,支持 VLAN、VxLAN、GRE、流表等。

2. Neutron 核心资源

  • Network:隔离的二层广播域(local/flat/vlan/vxlan/gre)。
  • Subnet:IPv4/IPv6 地址段,属于某个 Network。
  • Port:虚拟交换机端口,绑定 MAC/IP 给 VIF(虚拟网卡)。

3. 实例创建中的网络步骤

  • 创建内部网络(如 neiwang-1,CIDR 192.168.11.0/24)。
  • 创建路由器,连接内部网络与外部网络(设置网关、启用 SNAT)。
  • 实例选择该内部网络,自动分配 IP,通过路由器访问外部。

五、实例创建实际操作(Nova 操作创建实例)

1. 前置条件

  • 已有可用镜像(如 cirros-0.5.2)。
  • 已定义 flavor(规格,如 Flavor_web:vCPU、内存、磁盘)。
  • 已创建网络(内部网络)和路由器(可选,跨网段或外网访问需要)。

2. Web 界面创建实例步骤

  1. 登录 Horizon → “项目” → “计算” → “实例” → “创建实例”。
  2. 填写实例名称、数量,选择可用域(Availability Zone,若需要指定)。
  3. 选择“源” → “镜像”(选择已上传的镜像)。
  4. 选择“实例类型”(flavor)。
  5. 选择“网络”(选择一个已创建好的内部网络)。
  6. 其他可选:安全组、密钥对、元数据等。
  7. 点击“创建实例”。

3. 关键注意点

  • 网络必须选择,否则无法创建。
  • 若实例需要与外网通信,需确保路由器已连接外部网络并开启 SNAT,且实例所在子网网关指向路由器。
  • 查看调度日志:启用 debug 后 tail -f /var/log/nova/nova-scheduler.log 可观察到 Filter 过滤和权重打分过程。

4. 命令行创建示例

openstack server create --flavor Flavor_web --image cirros-0.5.2 --network neiwang-1 --key-name mykey myinstance

总结

模块 核心要点
Keystone 域/用户/组/项目/角色/令牌/端点;认证与授权分离;policy.json 控制权限
Glance 镜像格式与状态;支持多后端存储;上传镜像(Web/CLI)
Nova 分布式无共享架构;调度器(过滤+权重);创建实例完整流程涉及多组件协作;实例生命周期管理(重启/暂停/挂起/搁置/锁定)
Neutron 为实例提供二层网络和三层路由;Network/Subnet/Port 模型;支持多种网络类型
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐