type
status
date
slug
summary
tags
category
icon
password
openstack
To do list:
notion image
部署openstack
notion image
horizon
notion image
keystone
nova
placement
glance
cinder
swift
manila
neutron
heat
ceilometer
ironic
华为FusionSphere Openstack
nova
nova是最早的两个项目之一,另外一个是swift。openstack大部分服务都是从nova中衍生的,比如直接
产生:cinder\neutron\placment等,间接:dns、lb等
功能:提供大规模、可扩展、按需自助服务的计算资源。
需要依赖的服务:
keystone:请求nova之前需要验证身份
neutron:vm运行需要network
glance:vm运行需要Image
(注意:cinder并不是必须,nova本身也能管理存储资源——本地磁盘)
openstack的架构,分为三类组件:
1、openstack本身的项目:nova\cinder\neutron\glance等
2、openstack项目内部子组件:比如nova内部的子组件
3、非openstack公共组件:DB、MQ(消息队列)等(PS:不重复造轮子,开源,可替代)
通信方式:
1、openstack项目之间:基于http的restfull(get\delete\put\post等)
2、openstack项目内部:基于MQ的rpc
3、非openstack:依据组件方式
架构
nova-api:1、接收外部rest请求。2、找keyston进行合法性校验。3、找DB进行配额的校验、预留。
4、调用后端组件完成相应的动作。部署在控制节点。多活
nova-scheduler:选择合适主机。部署在控制节点。多活
nova-compute:1、资源管理,通过相应dirver对接VMM管理资源,收集资源使用情况
2、虚拟机生命周期管理。创建、删除、迁移、关机、开机等
部署在计算+控制节点。多活。一个nova-compute对应一个主机
nova-conductor:1、帮助nova-compute访问数据库(nova-compute直接管理hypervisor,hypervisor运行VM,VM直接面向用户,倘若用户非法,就可能通过nova-compute直接操作数据库) 2、复杂流程控制。创建虚拟机、虚拟机冷、热迁移、虚拟机重建、虚拟机规格调整部署在控制节点。多活
fc-nova-compute\vmware-nova-compute:分别用于对接旧版VRM、vcenter。管理对象是一套VRM或vcenter。一套VRM、vcenter其实后端可能有若干个主机。
region:地理上的区域,华南、华北
AZ:对于openstack来说,使用同样的供电、制冷设备的主机集合host aggregate:主机聚合、主机组。属性相同、标签相同的主机组。
一般来说,主机组应该是一组主机。一个主机应该是一个hypervisor。
部分情况并不是。比如vcenter\旧版VRM,一个主机并不是一个主机。
对于openstack,所谓的一个主机,是一个nova-compute。对于旧版VRM、vcenter来说,一个主备的xxx-nova-compute,其实是一套VRM、vcenter,后端其实是若干个主机。
在华为产品中,有两个地方有标签:
1、主机组
2、规格:面向租户。供租户选择自己的ECS的配置。(虚拟中则是自定义)
创建ECS时,选择规格,实际相当于创建虚拟时,会根据规格的标签,选择相同标签的主机组。
可用分区、区域、虚拟化类型、状态
scheduler选择主机的过程:
1、filter:根据/etc/nova/nova-scheduler.conf文件中,定义的filter规则,过滤出若干满足条件的主机。
2.1、权重:有内存权重、CPU权重。默认是内存权重。按照内存或者CPU对主机进行优先级排序。
2.2、可以不使用权重,随机
openstack CLI客户端使用
旧版:服务客户端+操作+选项、参数
nova list
nova show
帮助:
nova --help
nova help flavor-create
新版:openstack客户端+对象+操作+选项、参数
openstack server list
openstack network show
华为:cps客户端+选项
cps template-instance-list --service nova nova-compute
一个主机能属于不同的主机组吗?
可以。主机组有所属的可用分区。
虚拟机亲和性/反亲和组:
类似聚集、互斥
BDM:
volume, snapshot or image; default: volume
虚拟机状态类型
vm_state:数据库中记录的虚拟机状态。
task_state:当前虚拟机的任务状态,一般是中间态或者None。power_state:从hypervisor获取的虚拟机的真实状态。
Status:对外呈现的虚拟机状态(vm_state+task_state)
vm_state
task_state
status
active
rebooting
REBOOT
reboot_pending
REBOOT
reboot_started
REBOOT
rebooting_hard
HARD_REBOOT
reboot_pending_hard
HARD_REBOOT
reboot_started_hard
HARD_REBOOT
rebuild_block_device_mapping
REBUILD
rebuilding
REBUILD
rebuild_spawning
REBUILD
migrating
MIGRATING
resize_prep
RESIZE
resize_migrating
RESIZE
resize_migrated
RESIZE
resize_finish
RESIZE
default
ACTIVE
vm_state
task_state
status
stopped
resize_prep
RESIZE
resize_migrating
RESIZE
resize_migrated
RESIZE
resize_finish
RESIZE
default
SHUTOFF
创建虚拟机流程
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-conductor 从 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-token给Cinder-api 进行REST调用,以获取块存储服务Step15:cinder-api 与 keystone验证auth-token,nova-compute 得到块存储信息
Step16:nova-compute 生成驱动数据,驱动hypervisor生成虚拟机,完成虚拟机创建
client->api->keystone->api->conductor->scheduler->conductor->compute->glance
->neutron
->cinder
->hypervisor
client:cli\dashborad(如果是华为,web有service om\service center)
Placement
早期存在于nova中,后面独立为一个项目。
对资源统一做管理。
nova需要用的资源有两类:1、计算节点本身的。2、后端的资源池。例如:对接一套存储热迁移需要根据是否指定目的,如果指定目的,走scheduler,如果没指定,不走scheduler glance
Glance提供发现、注册和检索虚拟机镜像功能。
Glance提供的虚拟机实例镜像可以存放在不同地方,例如本地文件系统、Swift对象存储、Cinder块存储等。!!!本身没有存储功能
镜像image
虚拟机镜像包含一个虚拟磁盘,其上包含可引导的操作系统,为虚拟机提供模板。不是ISO实例Instance
实例是在OpenStack上运行的虚拟机
规格Flavor
规格定义了实例可以有多少个虚拟CPU,多大的RAM以及多大的临时磁盘。
用户可以从同一个镜像启动任意数量的实例。
每个启动的实例都是基于镜像的一个副本,实例上的任何修改都不会影响到镜像。
启动实例时,必须指定一个规格,实例按照规格使用资源。
规格、镜像都有内存、磁盘。
规格>=镜像的大小
镜像的内存、磁盘告诉我们这个镜像正常运行时,应该拥有最低资源
规格是告诉环境,实例运行时获得的资源
Glance镜像缓存
在API节点本地存放原始镜像的一个副本,实质上使多个API服务器能够提供相同的镜像。由于提供镜像的服务器数量增加,提升了镜像服务的可伸缩性。
卷、实例、镜像
实例根据镜像启动,创建卷
卷有两种类型:1、计算节点的本地磁盘 2、来自后端存储的云磁盘计算节点本地磁盘与实例生命周期一致
后端存储的云磁盘与实例生命周期可以不一致
架构
glance-api ,通过REST接口对外开放Glance功能,接收请求。
Glance Domain Controller:管理Glance内部服务器, Glance Domain Controller分层实现特定任务,如认证、事件通知、策略控制和数据库连接等。
Registry Layer:实现Glance Domain Controller与DAL之间的安全访问。
Database Abstraction Layer (DAL) :提供Glance与数据库之间的统一API接口。
非glance:
Glance DB在所有组件之间共享,存放管理、配置信息等数据。
Glance Store提供一个统一的接口来访问后端存储,屏蔽不同后端存储的差异。
业务流程:
上传镜像:
glance-api->domain-controller->glance-registry->dal->DB(查询上传位置)
glance-api->domain-controller->dirver->image-store(上传镜像)
下载镜像:
glance-api->domain-controller->glance-registry->dal->DB(查询下载位置)
glance-api->domain-controller->dirver->image-store(下载镜像)
后端存储类型:
开源:支持本地磁盘\s3\ceph\swift\sheepdog\cinder等
华为:支持本地磁盘\swift\obs(华为公有云的对象存储)
To do list:
notion image
部署openstack
notion image
horizon
notion image
keystone
notion image
nova
notion image
placement
notion image
glance
cinder
swift
manila
neutron
heat
ceilometer
ironic
华为FusionSphere Openstack
(旧)华为云计算笔记(九)(旧)华为云计算笔记(七)
Loading...