OpenStack原理及在华为云中的应用
1、什么是openstack
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.
来源: https://www.openstack.org/software/
翻译:openstack是一个云操作系统,控制着一个大规模(数据中心级别)的资源池,资源池包含计算、存储和网络。给管理员提供一个仪表盘去控制资源池里所有资源,最终用户可以通过web页面下发(获得)这些资源。
Bare Metal:物理服务器 Virtual Machines:虚拟机 Containers:容器
Object Storage:对象存储 File Storage:文件存储 Block Storage:块存储
Dashboard(GUI):仪表盘 Monitoring & Tools:监控工具
YOUR APPLICATIONS:用户的程序
Control Plane:控制平面
2、云与操作系统
虚拟化与云计算的区别
虚拟化是将物理资源分配给多个虚拟机,提高硬件资源利用率,重点在于分配物理资源的能力
云计算通过管理众多云虚拟机对外提供服务,重点在于提供服务。并且能够多租户之间隔离,按需使用、按量计费
操作系统功能
云也被当成操作系统,因为它也提供了:资源抽象、资源分配与负载调度、应用生命周期管理、系统运维、人机交互
3、openstack的定位
OpenStack只是云计算系统的控制面
为了构建一个云,我们还需要很多东西:
#资源池由虚拟化软件构造而来,如KVM、qemu、Xen、华为FusionSphere中的FusionCompute
4、openstack的设计理念
开放
1.开源。
2.尽最大可能重用已有开源项目。
灵活
1.不使用任何不可替代的私有/商业组件(如华为云用GaussDB替代MySQL)。
2.大量使用插件化方式进行架构设计与实现。
可拓展
1.由多个相互独立的项目组成。
2.每个项目包含多个独立服务组件。
3.无中心架构。
4.无状态架构(高可用)。
5、openstack的项目分层
#数据库默认为MySQL;消息队列默认为RabbitMQ
#华为云使用自己写的Console页面代替Horizon
6、openstack各主要项目间相互关系
在Dashboard[Horizon]上申请一台云虚拟机流程:Network[Neutron]提供网络,Block Storage[Cinder]提供卷,image[Glance]提供操作系统镜像(image不存储镜像,只存镜像目录,镜像实际存储在Object Storage[Swift]),然后交由Compute[Nova]创建虚拟机。在这个过程中Identity[Keystone]为各个独立的服务提供认证、鉴权服务。
7、openstack的物理部署示例
8、nova是什么
OpenStack中提供计算资源服务的项目
Nova负责:
- 虚拟机生命周期管理
- 其他计算资源生命周期管理
Nova不负责:
- 承载虚拟机的物理主机自身的管理
- 全面的系统状态监控
Nova是OpenStack事实上最核心的项目
9、nova逻辑架构
API接收简单用户请求(开关虚拟机)->Compute(计算节点)处理请求
API接收复杂用户请求(创建虚拟机)->Conductor(指令器)->Scheduler(调度器)选择空闲的Compute->Conductor发送指令给Compute
Compute中实际执行指令的是Hypervisor(虚拟机监视器)
10、nova物理部署示例
无中心结构、可水平扩展
通常将nova-api、nova-scheduler、nova-conductor组件合并部署在控制节点上
通过部署多个控制节点实现HA和负载均衡
通过增加控制节点和计算节点实现简单方便的系统扩容
11、nova中的核心概念
区域:地理概念,如东北区、华北区、华东区、华南区等。推荐用户就近获取资源
可用分区:一个区域内有多个可用分区,一个分区内有一个或多个数据中心,一个分区内使用同一套电力、网络等系统。推荐用户在不同可用区域做主备,提高可靠性,即使一个区域断电,也不影响备机继续提供服务
主机组:对用户不可见,一个分区内有多个主机组,将相同规格的主机归入一个主机组,如高cpu的主机、高内存的主机,根据用户业务调度对应的主机组进行服务
主机:对用户不可见,主机组内部有多台主机
名称 | 简介 | 说明 |
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 | 虚拟机亲和性/反亲和组 | 同一个亲和性组的虚拟机,在创建时会被调度到相同的物理主机上。同一个反亲和性组的虚拟机,在创建时会被调度到不同的物理主机上,如主备系统。 |
12、nova的典型操作
分组 | 说明 |
虚拟机生命周期管理 | 虚拟机创建、删除、启动、关机、重启、重建、规格更改、暂停、解除暂停、挂起、继续、迁移、在线迁移、锁定、解锁、疏散,拯救,解拯救,搁置,删除搁置,恢复搁置,备份,虚拟机导出镜像、列表、详细信息、信息查询更改,密码修改 |
卷和快照管理操作 | 本质上是对Cinder API的封装。卷创建、删除、列表、详细信息查询。快照创建、删除、列表、详细信息查询 |
虚拟机卷操作 | 虚拟机挂卷、虚拟机卸卷、虚拟机挂卷列表、虚拟机挂卷详细信息查询 |
虚拟网络操作 | 本质上是对Neutron API的封装。虚拟网络创建、删除、列表、详细信息查询 |
虚拟机虚拟网卡操作 | 虚拟机挂载网卡、虚拟机卸载网卡、虚拟机网卡列表。 |
虚拟机镜像的操作 | 本质上是对Glance API的封装,支持镜像的创建、删除、列表、详细信息查询。 |
虚拟机HA | 自研虚拟机的可靠性操作。可手动触发(FS5.1)。 |
其他资源其他操作 | Flavor,主机组,keypairs , quota等 |
13、cinder是什么
为云平台提供统一接口,按需分配的,持久化的块存储服务。
核心功能是对卷的管理,允许对卷、卷的类型、卷的快照、卷备份进行操作。
为后端不同的存储设备提供了统一的接口,不同的块设备服务厂商在Cinder 中实现其驱动支持以与OpenStack进行整合。
14、cinder的逻辑架构
#右侧nova的架构漏写了Nova-Conductor
Cinder-API:接收外部请求、参数解析、配额检查
Cinder-Scheduler:调度器
Cinder-Volume:执行器,和Nova-Compute同级别
Cinder-Driver:驱动器
StorageBackend:后端存储
Nova在创建虚拟机到Nova-Compute这一步的时候Nova-Compute向Cinder-API发出创建卷请求,StorageBackend(后端存储)最终创建出这个卷,然后由Nova中的Volume Driver访问这个卷,访问过程中使用的是数据面的协议,不需要经过管理面(openstack)
15、cinder的典型组网(SAN存储)
16、cinder物理部署示例
Cinder-API通过负载均衡对外提供服务
Cinder内部通过消息队列通信
Cinder-Volume部署在管理面,管理后端存储,如SAN、华为FusionStorage等
17、cinder的典型操作
18、neutron是什么
网络连接即服务(network connectivity as a service)
#在服务提供者视图中,neutron可以用vs使处于不同物理机的VM虚拟机属于同一网络
19、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组件之间通过消息队列通信
20、neutron网络虚拟化实现原理
在二层网络中Vlan100和Vlan200是两个不同的网络,因此在三层网络这里,使用Vlan100和使用Vlan200的虚拟机即使IP在同一网段也是不能通信的,做到了虚拟机间网络隔离。
21、neutron物理部署示例
#实际使用中Neutron server一般放到Controller node
#Neutron openvswitch-agent就是L2 Agent
#蓝色线:管理面网络
#红色线:数据面网络
22、neutron的典型操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现