一、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. 镜像格式

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

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

更多推荐