news 2026/9/4 3:31:09

OpenStack原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenStack原理

1、云计算和虚拟化的区别

虚拟化是一种具体的技术,而云计算是一种通过技术组合实现的服务模式,可以这样比喻:

  • 虚拟化 是制造砖块、钢筋、水泥的技术。它把一堆原始的物理材料(服务器、存储、网络)标准化、模块化。

  • 云计算 是用这些标准化模块,快速构建和交付一栋功能齐全、可按需租用的公寓楼或酒店的完整体系。这栋大楼提供自来水(对象存储)、电力(计算)、燃气(数据库)等各种按需服务。

2、云计算是一个操作系统

云计算扮演了“数据中心资源的管理者、抽象者和服务提供者”的核心角色。​ 它将庞大、复杂、异构的数据中心硬件,变成一个简单、灵活、可按需取用的“超级电脑”,让用户像使用个人电脑一样,通过简单的界面或指令来使用超大规模的计算力。

3、云计算的定义

计算资源:Bare Metal:物理服务器 Virtual Machines:虚拟机 Containers:容器

存储资源:Object Storage:对象存储 File Storage:文件存储 Block Storage:块存储

OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface.

翻译:openstack是一个云操作系统,控制着一个大规模(数据中心级别)的资源池,资源池包含计算、存储和网络。给管理员提供一个仪表盘去控制资源池里所有资源,最终用户可以通过web页面下发(获得)这些资源。

OpenStack官网:https://www.openstack.org/software/

4、OpenStack的定位

OpenStack只是云计算系统的控制面

  • Cloud Console控制面板:Cloud Services云服务提供的是一些API,用户需要通过Console界面去控制这些服务

  • Cloud Services云服务:OpenStack也会提供一些服务,直接使用起来比较复杂,因此会封装一些更方便使用的服务,如华为云的ECS、BMS等

  • Cloud BSS运营系统:可以用来计费等

  • Resource Pool资源池:用到的虚拟化技术如KVM、qemu、Xen、华为的FusionCompute

5、OpenStack的设计理念

  • 开放(Open):开源;尽最大可能重用已有开源项目

  • 灵活(Flexible):不使用任何不可替代的私有/商业组件;大量使用插件化方式进行架构设计与实现

  • 可扩展(Scalable):由多个相互独立的项目组成;每个项目包含多个独立服务组件;无中心架构;无状态架构

6、OpenStack的项目分层

  • 圆框:第三方软件,数据库默认使用MySQL;消息队列默认使用RabbitMQ

  • 方框:OpenStack本身的组件

  • IaaS+服务:为什么叫IaaS+级别的服务,因为IaaS上的这些服务已经类似于PaaS阶段的服务了,因此增加“+”

  • Ceilometer:计量服务,输出话单信息,可用于计费
  • Heat:编排服务,可一自定义一个装机的组网等配置,以后每次装机都使用这个自定义的配置进行装机

7、OpenStack各主要项目间相互关系

在Dashboard[Horizon]上申请一台云主机流程:Network[Neutron]提供网络,Block Storage[Cinder]提供卷,image[Glance]提供操作系统镜像(image不存储镜像,只存镜像目录,镜像实际存储在Object Storage[Swift]),然后交由Compute[Nova]创建虚拟机。在这个过程中Identity[Keystone]为各个独立的服务提供认证、鉴权服务

8、OpenStack的物理部署示例

9、Nova原理

9.1、什么是Nova

  • OpenStack中提供计算资源服务的项目

  • Nova负责:

虚拟机生命周期管理

其他计算资源生命周期管理

  • Nova不负责:

承载虚拟机的物理主机自身的管理

全面的系统状态监控

  • Nova是OpenStack事实上最核心的项目

9.2、Nova逻辑架构

API接收简单请求(如开关机)直接去Compute(计算节点)处理请求

API接收复杂请求(如创建云主机)由于需要查询配额、分配资源,需要调度器介入,因此先到Conductor(指令器)下达创建指令,再到Scheduler(调度器)选择空闲的Compute(计算节点),最后Conductor(指令器)发送指令给Compute(计算节点)处理请求

9.3、Nova物理部署示例

nova-api、nova-scheduler(调度器)、nova-conductor(指令器)组件部署在控制节点|OpenStack控制面

nova-compute部署在计算节点|OpenStack数据面

组件间交互使用消息队列通信,持久化信息存储使用MySQL

9.4、Nova中的核心概念和操作

1、层级

  • 地区:地理概念,如东北区、华北区、华东区、华南区等,推荐用户就近获取资源

  • 可用区:一个可用区内使用同一套电力、网络等系统,即处于同一故障域,推荐用户在不同可用区做主备,提高可靠性,即使一个区域断电,也不影响备机继续提供服务

  • 主机组:对用户不可见,将相同规格的主机归入一个主机组,如高cpu的主机、高内存的主机,根据用户业务需要高并发还是高内存调度对应的主机组进行服务

  • 主机:对用户不可见,主机组内部有多台主机

2、名词

名称

简介

说明

Server/Instance

虚拟机

Nova管理提供的云服务资源。Nova中最重要的数据对象。

Server metadata

虚拟机元数据

通常用于为虚拟机附加必要描述信息,如虚拟机创建时间、创建人。key/value。

Flavor

虚拟机规格模板

用于定义一种虚拟机类型,如一种具有2个VCPU、4GB内、40GB本地存储空间的虚拟机。Flavor由系统管理员创建,供普通用户在创建虚拟机时使用。

Quota

资源配额

用于指定租户最多能够使用的逻辑资源上限。

Hypervisor / node

节点

对于KVM、Xen等虚拟化技术,一个node即对应于一个物理主机。对于vCenter , 一个node对应于一个cluster。

Host

主机

对于KVM、Xen等虚拟化技术,一个host即对应于一个物理主机,同时对应于一个node。对于vCenter,一个host对应于—套vCenter部著。

Host Aggregate

主机聚合

—个HA内包含若干host。一个HA内的物理主机通常具有相同的CPU型号等物理资源特性。

Server Group

虚拟机亲和性/反亲和组

同一个亲和性组的虚拟机,在创建时会被调度到相同的物理主机上。同一个反亲和性组的虚拟机,在创建时会被调度到不同的物理主机上,如主备系统。

3、Nova的典型操作

分组

说明

虚拟机生命周期管理

虚拟机创建、删除、启动、关机、重启、重建、规格更改、暂停、解除暂停、挂起、继续、迁移、在线迁移、锁定、解锁、疏散,拯救,解拯救,搁置,删除搁置,恢复搁置,备份,虚拟机导出镜像、列表、详细信息、信息查询更改,密码修改

卷和快照管理操作

本质上是对Cinder API的封装。卷创建、删除、列表、详细信息查询。快照创建、删除、列表、详细信息查询

虚拟机卷操作

虚拟机挂卷、虚拟机卸卷、虚拟机挂卷列表、虚拟机挂卷详细信息查询

虚拟网络操作

本质上是对Neutron API的封装。虚拟网络创建、删除、列表、详细信息查询

虚拟机虚拟网卡操作

虚拟机挂载网卡、虚拟机卸载网卡、虚拟机网卡列表。

虚拟机镜像的操作

本质上是对Glance API的封装,支持镜像的创建、删除、列表、详细信息查询。

虚拟机HA

自研虚拟机的可靠性操作。可手动触发(FS5.1)。

其他资源其他操作

Flavor,主机组,keypairs , quota等

10、Cinder原理

10.1、Cinder是什么

为云平台提供统一接口,按需分配的,持久化的块存储(512字节)服务。
核心功能是对卷的管理,允许对卷、卷的类型、卷的快照、卷备份进行操作。
为后端不同的存储设备提供了统一的接口,不同的块设备服务厂商在Cinder 中实现其驱动支持以与OpenStack进行整合。

#除了块存储还有文件存储、对象存储等类型,Cinder用的是块存储

10.2、Nova的逻辑架构

Cinder-API接收创建卷请求,分给Cinder-Scheduler(调度器)去合适的Cinder-Volume(存储节点)获取卷,于Nova不同的是Cinder没有指令器组件

10.3、Cinder的典型组网(以SAN存储为例)

Cinder-Volume(存储节点)通过SSH/REST协议给后端存储Controller interface(控制面)下发创建卷的指令,将数据面的块存储(LUN)映射给Nova主机去使用,会用到ISCSI/FC协议

10.4、Cinder物理部署示例

  • 内部:Cinder-API、Cinder-Scheduler(调度器)、Cinder-Volume(存储节点)均部署在OpenStack的控制面,互相之间通过消息队列进行交互

  • 外部:Cinder-API通过REST接口走HAproxy(负载均衡)对外提供服务

  • 后端:SAN等就是后端存储

10.5、Cinder的典型操作

功能分类

功能

描述

功能分类

功能

描述

功能分类

功能

描述

卷操作

create

创建

快照操作

snapshot-create

创建

type 操作

type-create

创建

卷操作

delete

删除

快照操作

snapshot-delete

删除

type 操作

type-delete

删除

卷操作

show

查询

快照操作

snapshot-list

列出所有快照

type 操作

type-key

设置 type kV

卷操作

rename

重命名

快照操作

snapshot-rename

重命名

type 操作

type list

列出所有 type

卷操作

upload-to-image

上传卷到镜像

快照操作

snapshot-reset-state

重置状态

type 操作

extra-specs-list

显示 type 及其 spec

卷操作

extend

扩容

快照操作

snapshot-show

查询某个快照

type 操作

qos-associate

设置 QOS 与 type 关联

卷操作

force-delete

强制删除

快照操作

snapshot-metadata

设置快照元数据

type 操作

qos-create

创建 qos

卷操作

list

列出所有卷

快照操作

snapshot-metadata-show

显示快照元数据

type 操作

qos-delete

删除 qos

卷操作

migrate

卷迁移

快照操作

snapshot-metadata-update-all

更新快照元数据

type 操作

qos-disassociate

解关联 qos 和 type

卷操作

reset-state

强制重置卷状态

tran 操作

transfer-accept

接受卷 transfer

type 操作

qos-disassociate-all

解关联 qos 的所有关联

卷操作

rate-limits

限速

tran 操作

transfer-create

创建卷 transfer

type 操作

qos-get-association

查询 qos 的所有关联

卷操作

readonly-mode update

只读模式设置

tran 操作

transfer-delete

删除卷 transfer

type 操作

qos-key

设置 Qos KV

卷操作

retype

更新卷 Type 类型

tran 操作

transfer-list

列出所有卷 transfer

type 操作

qos-list

列出所有 qos

卷操作

set-bootable

设置启动卷

tran 操作

transfer-show

查询某个卷 transfer

type 操作

qos-show

查询某个 qos

卷操作

manage

导入卷

加密操作

encryption-type-create

为 type 增加加密

配额操作

quota-defaults

查询租户缺省配额

卷操作

unmanage

导出卷

加密操作

encryption-type-delete

删除加密

配额操作

quota-show

查询租户当前配额

卷操作

metadata

设置卷元数据

加密操作

encryption-type list

列出所有加密

配额操作

quota-update

更新租户配额

卷操作

metadata-show

显示卷元数据

加密操作

encryption-type-show

查询某个加密

配额操作

quota-usage

显示租户配额使用情况

卷操作

metadata-update-all

更新卷元数据

一致性组

cgsnapshot-create

创建一致性组快照

配额操作

absolute-limits

显示所有租户绝对限额和使用情况

备份操作

backup-create

创建

一致性组

cgsnapshot-delete

删除一致性组快照

Cinder 整体

availability-zone-list

列出所有 az

备份操作

backup-delete

删除

一致性组

cgsnapshot-list

列出所有一致性组快照

Cinder 整体

endpoints

列出 Cinder 所有接口

备份操作

backup-list

列出所有备份

一致性组

cgsnapshot-show

查询一致性组详细快照

Cinder 整体

list-extensions

所有扩展 api

备份操作

backup-restore

恢复备份

一致性组

consisgroup-create

创建一致性组

Cinder 整体

credentials

所有用户信息

备份操作

backup-show

查询

一致性组

consisgroup-delete

删除一致性组

service 操作

service-disable

去激活

备份操作

backup-export

导出卷

一致性组

consisgroup-list

列出所有一致性组

service 操作

service-enable

激活

备份操作

backup-export

导入卷

一致性组

consisgroup-show

查询一致性组详细

service 操作

service-list

所有 service

复制

replication-promote

对备卷升主

复制

replication-reenable

重新启动复制

11、Neutron原理

11.1、Neutron是什么

Neutron是在OpenStack中是提供网络连接服务的

11.2、Neutron的逻辑架构

  • #Neutron-Server -> Core Plugin -> 各种Advanced Service Plugin:L3 Service Plugin、lB Service Plugin、Firewall、VPN

  • #各种Agent:L2 ( ovs-agent )、L3 Agent、DHCP Agent、MetaData Agent

  • L2 Agent:二层网络服务,提供基础服务,部署在所有计算节点

  • L3 Agent:三层网络服务,提供IP、交换、路由服务,根据业务情况部署在网络节点或者计算节点。例如华为云部署在计算节点

  • DHCP Agent:DHCP服务

  • Adv Services:高级网络服务,如负载均衡

neutron组件之间通过消息队列通信

11.3、Neutron网络虚拟化实现原理

在二层网络中(即就是虚拟机之间互相通信的网络)Vlan100和Vlan200是两个不同的网络,因此在三层网络这里,使用Vlan100和使用Vlan200的虚拟机即使IP在同一网段也是不能通信的,做到了虚拟机间网络隔离。

绿色的VM是Vlan 100网络的虚拟机,黄色的VM是Vlan 200网络的虚拟机。在服务者视图中可以看到两个绿色的VM并不在一个物理主机上,Neutron通过一系列的网络转换功能将两个绿色的VM网络打通。

11.4、Neutron物理部署示例

Neutron openvswitch-agent部署在每一个计算节点上,为虚拟机提供网络连接功能

Neutron Server在实际应用中一般会部署到控制节点(Neutron ML2 Plugin也是Neutron Server的一部分),网络节点只保留Neutron metadata-agent、Neutron L3/dhcp-agent

Neutron Server下发网络配置的时候会通过管理平面网络和Neutron openvswitch-agent进行通信,然后下发相应配置。当Nova Compute创建的虚拟机执行业务通信的时候会在数据平面网络进行

11.5、Neutron的典型操作

Object

Operation

Method

URI

Network

List

GET

/v2.0/networks

Network

Create

POST

/v2.0/networks

Network

Show

GET

/v2.0/networks/{network_id}

Network

Update

PUT

/v2.0/networks/{network_id}

Network

Delete

DELETE

/v2.0/networks/{network_id}

Subnet

List

GET

/v2.0/subnets

Subnet

Create

POST

/v2.0/subnets

Subnet

Show

GET

/v2.0/subnets/{subnet_id}

Subnet

Update

PUT

/v2.0/subnets/{subnet_id}

Subnet

Delete

DELETE

/v2.0/subnets/{subnet_id}

Port

List

GET

/v2.0/ports

Port

Create

POST

/v2.0/ports

Port

Show

GET

/v2.0/ports/{port_id}

Port

Update

PUT

/v2.0/ports/{port_id}

Port

Delete

DELETE

/v2.0/ports/{port_id}

Security-group

List

GET

/v2.0/security-groups

Security-group

Create

POST

/v2.0/security-groups

Security-group

Show

GET

/v2.0/security-groups/{security-groups_id}

Security-group

Update

PUT

/v2.0/security-groups/{security-groups_id}

Security-group

Delete

DELETE

/v2.0/security-groups/{security-groups_id}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 12:20:28

STM32F103内置DAC实战:从原理到音频输出与波形生成

1. 项目概述:当STM32F103遇上DAC 在嵌入式开发里,数字世界和模拟世界的桥梁,DAC(数模转换器)绝对算得上是一个关键角色。你可能已经用STM32的PWM配合RC滤波做过简单的模拟输出,或者用外部的DAC芯片实现过更…

作者头像 李华
网站建设 2026/9/2 8:56:05

豆包工作Agent落地飞书:从任务拆解到工作流自动化的实践指南

“豆包工作 Agent”这一波最值得关注的点,不是又多了一个 AI 助手,而是字节跳动把它直接做进了飞书的工作流里。过去你在飞书里点开文档、维护多维表格、发起审批、盯日程提醒,这些重复操作已经够浪费时间;现在“用一句指令让 Age…

作者头像 李华
网站建设 2026/9/2 7:57:51

AI项目风险审计:从评估失真到成本失控的工程防范

AI 盛世还在继续,但已经有不少团队开始意识到,这个行业的风险正在以类似金融系统中“次级债”的方式积累:大量项目建立在不够扎实的数据、被美化过的指标和过高预期之上,当外部条件变化时,风险会集中暴露。站在工程角度…

作者头像 李华
网站建设 2026/9/1 0:32:52

Hitbot四轴机械臂ROS2仿真控制软件包设计与实现

简介:在机器人开发中,仿真环境是验证运动规划与算法的重要基石。针对工业机械臂,尤其是四轴结构,如何构建一套完整的仿真控制链路是工程实践的关键。本文从基础概念出发,介绍如何利用URDF进行机器人建模,并…

作者头像 李华
网站建设 2026/9/1 2:07:04

动基座粗对准方法详解:从全积分到滑动窗的捷联惯导工程实践

简介:捷联惯导初始对准是导航系统进入工作状态的前提,而粗对准的姿态解算精度直接决定后续精对准与组合导航的可靠性。在静基座条件下,利用重力与地球自转角速度构造矢量对的经典方法简单有效,但载体一旦运动,加速度计…

作者头像 李华
网站建设 2026/8/31 16:07:00

灰色模型GM(1,1)原理、Matlab实现与实战:小数据预测利器

1. 项目概述:从“灰色”中寻找规律 在数据分析和预测领域,我们常常会遇到一种令人头疼的情况:手头的数据量少得可怜,信息残缺不全,甚至数据的分布规律都模糊不清。面对这种“贫信息”的不确定性系统,传统的…

作者头像 李华