磨刀不误砍柴工,OpenStack核心服务详解(下)

本文深入剖析OpenStack中的关键组件,包括计算服务Nova,其架构、组件与典型工作流程;存储服务Cinder,探讨卷管理、备份和挂载流程;以及网络服务Neutron,分析网络模型与流量分析。通过理解这些核心服务,有助于更好地管理和利用OpenStack云环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

OpenStack计算管理

Nova作为OpenStack的核心项目,提供大规模可扩展、按需弹性和自助服务的计算资源是整个OpenStack中最核心的项目。

OpenStack计算服务Nova简介

OpenStack计算服务是什么

  • Nova
    计算服务
    首次出现在OpenStack的“Austin”版本中。
  • 简介
    Nova提供大规模、可扩展、按需自助服务的计算资源。
    Nova支持管理裸机,虚拟机和容器。
  • 依赖的OpenStack服务
    OpenStack最初几个版本中,计算、存储、网络都由Nova实现,后面逐步拆分出存储和网络。
    目前Nova专注提供计算服务,依赖Keystone的认证服务,Neutron的网络服务Glance的镜像服务。

Nova在OpenStack中的位置和作用
Nova在OpenStack中的位置和作用

  • Nova是什么?
    OpenStack中提供计算资源服务的项目
  • Nova负责什么?
    • 虚拟机生命周期管理
    • 其他计算资源生命周期管理
  • Nova不负责什么?
    • 承载虚拟机的物理主机自身的管理
    • 全面的系统状态监控
  • Nova是OpenStack事实上最核心的项目
    • 历史最长:OpenStack首批两个项目之一
    • 功能最复杂,代码量最大
    • 大部分集成项目和Nova之间都存在合作关系
    • 贡献者在社区中的影响力最大

Nova架构

Nova架构图

Nova内部服务使用REST调用,Nova和其他OpenStack服务交互时,使用消息队列。
Nova架构图

Nova运行架构

Nova服务各组件可分布式部署,且可通过virtDriver对接不同的虚拟化平台。
Nova运行架构

Nova资源池管理架构

Region>Availability Zone>Host Aggregate
Nova资源池管理架构

Nova组件详细讲解

Nova组件

API

Nova API功能

  • 对外提供REST接口,接收和处理请求。
  • 对传入参数进行合法性校验和约束限制。
  • 对请求的资源进行配额的校验和预留。
  • 资源的创建、更新、删除查询等。
  • 虚拟机生命周期管理的入口。

WSGI:Web Server Gateway Interface
API

Conductor

Nova-Conductor功能

  • 数据库操作,解耦其他组件(Nova-Compute)数据库访问。
  • Nova复杂流程控制,如创建,冷迁移,热迁移,虚拟机规格调整,虚拟机重建。
  • 其他组件的依赖,如nova-compute需要nova-conductor启动成功后才能启动。
  • 其他组件的心跳定式写入。

引入Nova-Conductor的好处

  • 安全性上考虑
    之前每个nova-compute都是直接访问数据库的。如果由于某种原因,某个计算节点被攻陷了,那攻击者就可以获取访问数据库的全部权限,肆意操作数据库。
  • 方便升级
    将数据库和nova-compute解耦,如果数据库模式改变,nova-compute就不用升级了。
  • 性能上考虑
    之前数据库的访问在nova-computer中直接访问且数据库访问的是阻塞性的,由于nova-compute只有一个OS线程,所以当一个绿色线程去访问数据库的时候会阻塞其他绿色线程,导致绿色线程无法并发。但是nova-conductor是通过rpc调用,rpc调用是绿色线程友好的,一个rpc call的执行返回前不会阻塞其他绿色线程的执行。这样就提高了操作的并发。
    Conductor
Scheduler

Nova-Scheduler功能

  • 筛选和确定将虚拟机实例分配到哪一台物理机
  • 分配过程主要分为两步,过滤和权重:
    • 通过过滤器选择满足条件的计算节点
    • 通过权重选择最优的节点
      Scheduler
Compute
  • Nova-Compute框架
    • Manager
    • Driver
  • 对接不同的虚拟化平台
    • KVM
    • VMware
    • Xen
    • LXC
    • QEMU
  • 虚拟机各生命周期操作的真正执行者(会调用对应的hypervisor的driver)
  • 底层对接不同虚拟化的平台(KVM/VMware/Xen/Ironic等)
  • 内置周期性服务,完成资源刷新,虚拟机状态同步等功能。
  • 资源管理模块(resource_tracker)配合插件机制,完成资源的统计。
    Compute

Nova服务示例

列出Nova服务

$ openstack compute service list

列出Nova服务

Nova典型操作

Nova典型操作

Nova主要操作对象

Nova主要操作对象
Nova主要操作对象

虚拟机状态介绍

  • 虚拟机状态介绍
    • vm_state:数据库中记录的虚拟机状态
    • task_state:当前虚拟机的任务状态,一般是中间态或者None。
    • power_state:从hypervisor获取的虚拟机的真实状态。
    • Statue:对外呈现的虚拟机状态。
  • 状态之间的关系
    • 系统内部只记录vm_state和task_state,power_state
    • Status是由vm_state和task_state联合生成的
  • 举例
    • vm_state为active,task_state为rebooting,则status为REBOOT
    • vm_state为building,则status为BUILD
      虚拟机状态介绍

虚拟机状态组合

虚拟机状态组合

虚拟机状态变迁图

虚拟机状态变迁图

Nova典型工作流程

Nova创建虚拟机流程

  • step1
    用户通过Dashboard/CLI申请创建虚拟机,并以REST API方式来请求KeyStone授权
    Keystone鉴定后送回auth-token(用来通过REST-call向其他组件发送请求)
  • step2
    Dashboard或者CLI将创建虚拟机请求转换成REST API形式并发送给nova-api
  • step3
    nova-api收到请求后向Keystone发送请求验证auth-token并获取权限
    keystone验证token并发送角色和权限更新的认证报头
  • step4
    nova-api联系nova-database,为新的实例创建初始数据库条目(此时虚拟机状态开始变成building)
  • step5
    nova-api发送请求给nova-scheduler,以获得适合安装虚拟机的主机
  • step6
    nova-scheduler从queue中拿到请求
  • step7
    nova-scheduler联系nova-database通过过滤与权衡来查找最合适的主机
    • nova-scheduler在过滤与权衡后返回最合适安装虚拟机的主机的ID
    • nova-scheduler发送请求给nova-compute,请求创建虚拟机
  • step8
    nova-compute从queue中拿到请求,发送请求给nova-conductor以获取选定主机的信息,如规格(ram,cpu,disk)
  • step9
    nova-compute从queue中拿到请求,联系nova-db,返回选定主机的信息
    • nova-conductor将信息发送到queue中
    • nova-compute从queue中得到选定主机的信息
  • step10
    nova-compute通过传递auth-token给glance-api进行REST调用,向glance请求使用镜像服务
  • step11
    glance-api与keystone验证auth-token,nova-compute得到镜像元数据
  • step12
    nova-compute通过传递auth-token给Neutron-api进行REST调用,以获取网络服务
  • step13
    Neutron-api与keystone验证auth-token,nova-compute得到网络信息
  • step14
    nova-compute通过传递auth-to
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客不撩妹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值