自己原来学习华为云计算相关知识,请注意,已过时
openstack组件概览
各大组件间的通信,使用REST API
组件内部的子组件,使用RabbitMQ
Horizon:
⦁ Dashboard,提供了一个基于web的自服务门户,与OpenStack底层服务交互,诸如启动一个实例,分配IP地址以及配置访问控制。
Nova:
⦁ 主要是虚拟机资源管理,例如生命周期管理、按需响应包括生成、调度、回收虚拟机等操作。也负责用户和权限管理,数据库交互。
Neutron:
⦁ 提供网络连接即服务,为用户提供API定义网络和使用,基于插件的架构其支持众多的网络提供商和技术。
Glance:
⦁ 独立的大规模镜像检索服务
⦁ 检索镜像信息,获取镜像,上传镜像;OpenStack在实例部署时使用此服务,Glance并不提供存储空间。
⦁ 如果所有的Image传输都通过Nova模块来进行,那么Nova接口的压力非常大。所以把Image的管理独立出来成为一个独立的Image管理系统,在OpenStack中命名为Glance。无论用户Image的传输及管理,或者Nova内部对Image的请求,都转向Glance全权代理。
⦁ Glance主要功能是管理Image,但是Glance只是一个代理。其实Glance本身并不实现存储功能,他只是提供了一系列的接口来调用底层的服务。
Swift:
⦁ 主要对接对象存储
⦁ Swift只是提供了简单的上传下载、删除、查询等功能。Swift存储服务并没有提供实时的读写功能,也就意味着swift提供的不是高速I/O功能的存储服务,并不能像使用文件系统一样使用它。就好比要对云盘中的文件进行修改,需要先下载,修改后再上传上去;而不像电脑接入移动硬盘后,可直接对其中文件进行编辑与操作。
⦁ 通过一个 RESTful,基于HTTP的应用程序接口存储和任意检索的非结构化数据对象。它拥有高容错机制,基于数据复制和可扩展架构。它的实现并像是一个文件服务器需要挂载目录。在此种方式下,它写入对象和文件到多个硬盘中,以确保数据是在集群内跨服务器的多份复制。
Cinder:
⦁ 提供块存储服务,可插拔驱动架构的功能有助于创建和管理块存储设备,为虚拟机提供弹性存储服务。
Keystone:
⦁ 提供认证和授权服务,为所有的OpenStack服务提供一个端点目录。
Ceilometer:
⦁ Ceilometer主要为上层运维组件提供监控与告警数据,公有云下可用于计费。
⦁ 为OpenStack云的计费、基准、扩展性以及统计等目的提供监测和计量。
Heat:
⦁ 既可以使用本地模板格式,亦可使用AWS CloudFormation模板格式,来编排多个综合的云应用,通过OpenStack本地REST API或者是CloudFormation相兼容的队列API。
Nova
Nova的架构:
Nova-api:
1、接收请求,对外提供服务入口
2、调用内部相应子组件实现功能
3、返回相应结果
Nova-conductor:
1) 帮助/代理Nova-compute操作数据库,因为Nova-compute是近业务侧的,直接操作数据库不安全。
2) 进行复杂流程的控制。
Nova-scheduler:
1) 选择合适的主机创建VM
2) 先根据Filter模块进行主机的筛选,之后做weight筛选(默认内存,支持CPU),最后做随机选择。
Nova-compute:
⦁ 对接计算资源(Nova-compute不能直接操作数据库)
⦁ 虚拟机生命周期管理
Server/Instance=AZ+flavor+Image
Region:AZ=1:n
AZ:HostGroup=1:n
HostGroup:Host=m:n
AZ具备虚拟化类型属性,同时只能属于一种类型。取决于首次加入AZ的主机的虚拟化类型。
RabitMQ:
1) 实现异步消息功能,性能高,不会因为某节点的瓶颈造成全局瓶颈
2) 实现组件间解耦,灵活。
3) RabitMQ对消息只实现中转
Glance
⦁ Glance用来作为独立的大规模镜像查找服务。
⦁ 与Nova和Swift配合使用,为OpenStack提供虚拟机镜像的查找服务。
Glance结构:
⦁ Glance-API:
提供服务接口,接收REST API请求,通过调用其他模块(glance-registry及image store)来完成诸如镜像的查找、获取、上传、删除等操作,并返回。
⦁ Glance-Registry:
类似仓库管理员,与数据库交互,用于存储或获取镜像信息。镜像信息记录在GaussDB中。
⦁ Image-Store:
1) 是一个存储的接口层,通过这个接口,Glance可以存放和获取镜像。支持Swift、S3、ceph、本地存储等。
2) 华为推荐Swift。
提高Glance性能解决办法:
⦁ 配合LB,扩展Glance-API 数量
⦁ 后端储存采用高性能,高可靠的系统。华为推荐使用Swift。
⦁ 由Glance-API 提供Cache机制。将镜像缓存到Glance-API 节点,用户不可见也不知晓。
使用Glance的好处:
⦁ 减轻Nova接口压力
⦁ 快速部署虚拟机
⦁ 批量上线,节约时间
⦁ 保持虚拟主机一致性
Swift
Swift是一个分布式的,高可靠、高性能对象存储系统,主要用于给Glance提供镜像存放空间。
对象存储:元数据和数据是分离的,可以形成分布式的存储服务。
块存储:直接对存储空间进行操作。
Neutron
⦁ Neutron是一种虚拟网络服务,为Opensack计算提供网络连通和寻址服务。
⦁ 为了便于操作管理,Neutron管理对网络进行了抽象,有如下管理对象
1) Physnet
2) Network(L2):Local、flat(untag)、vlan、vxlan、gre
3) Subnet(L3)
4) Port:用于连接VM
5) Router
6) Floating IP
Neutron逻辑架构和主要组件:
逻辑上分为3部分,实际上Plugin已经集成到Server中了。
⦁ Neutron-Server:Neutron Server包含两部分: Neutron-common和 Plugin
⦁ Neutron-Plugin:整合到Neutron-Server中了,后面根据需要可以再开发Neutron-Plugin
⦁ Neutron-Agent
Neutron的多级插件:
通过集成多种虚拟网络插件,实现L2的虚拟网络管理
Neutron DHCP服务:
⦁ 每一个Network对象对应一个DHCP服务(即一个命名空间)
⦁ Neutron在Network上创建DHCP端口
⦁ 在命名空间内,使用Dnsmasq监听DHCP端口
⦁ Neutron配置Dnsmasq配置文件,将mac、IP、路由、网关等信息保存
OpenStack配置DHCP服务举例:
1) 当用户在 ManageOne SC 上,创建网络,并且指定 CIDR 且启动 DHCP 功能(external_api 平面)
2) ServiceCenter 接收后,通过 RestAPI 的向 Neutron-Server 请求网络服务(Internal_base 平面)
3) Neutron-Server 收到后,会以 rpc 的方式,经过 rabbitmq 通知 dhcp-agent 实施 DHCP 功能,会告知 dhcp-agnet CIDR 等信息(Internal_base 平面)
4) dhcp-agent 会调用本地的 dhcp-driver,dhcp-driver 会以 rpc 的方式经过 rabbitmq 要求 Neutron 创建 dhcp port(Internal_base 平面)
5) Neutron-Server 会通知实施 DHCP 节点的 ovs-agent 创建出属于该网络的二层网络设备 tap(Internal_base 平面)
6) dhcp-driver 配置 dnsmasq 配置文件,并启动 dnsmasp 进程调用配置文件,并监听前面创建的 tap 设备
Cinder
⦁ 对接不同的后端储存
⦁ 实现高级特性、HA、快照等
⦁ 将计算与存储分离,减轻nova-compute的压力。
Cinder 逻辑架构:
Cinder-API:
cinder模块对外唯一入口,cinder的endpoint,接收和处理rest请求。
Cinder-Scheduler:
1) 根据预定的调度过滤策略以及权重计算策略,选择出合适的后端来处理任务。
2) 过滤步骤:Filter--->weight--->random(随机)
Cinder-volume:
负责与后端存储进行对接,通过各厂商提供的driver将OpenStack操作转换为存储操作。
Cinder-backup:
用于对块或卷的备份
DB:
只有cinder-scheduler和cinder-volume访问DB
虚拟机的磁盘来源:
⦁ 在华为产品中,在ManageOne SC上注册 Flavor 时,可以选择本地磁盘或云磁盘。
⦁ 本地磁盘就是VM所在宿主机的本地硬盘。具有稳定性能好的优势,但是VM不能HA。
⦁ 云磁盘就是Cinder对接的后端储存。
Keystone
Token的概念:
⦁ Token是什么:
1) 用户向keystone提供一组有效的用户信息,keystone向用户返回一个token。
2) Token包含这个用户的信息,用户的角色(role)信息,token的作用域(scope),token有效期(expiration)。
3) 使用这个token可以访问其他openstack服务。
⦁ 为什么使用Token:
1) 使用token访问api服务比使用用户名密码访问更加方便。
2) Token具有有效期,在客户端缓存token比缓存用户名密码更安全。
Token的生成:
⦁ UUID:
1、优点:简单,有一定安全性
2、缺点:安全性不足,keystone容易成为性能瓶颈
⦁ PKI:
1、优点:安全、keystone不会成为瓶颈
2、缺点:token比较大,有可能失效(http封装失败)
⦁ 压缩PKI
⦁ Fernet:对称加密,与UUID类似,比UUID安全一些,keystone不会成为瓶颈
Token在Openstack中的应用:
Ironic
Ironic用到的网络平面:
⦁ BMC:
IPMI 带外管理裸金属,Ironic服务通过IPMI协议控制管理裸机需要的网络,在使用Ironic服务的时候需要保证ironic-conductor组件能与裸金属服务器的IPMI网络互通。即部署ironic-conductor服务的管理主机,以及所有的物理裸金属都接入该网络
⦁ internal_base:
FusionSphere OpenStack内部管理平面,用于自发现裸金属硬件信息;用于Ironic服务接受外部API请求,并和 OpenStack Keystone、Nova、Neutron、Glance等服务进行通信。
⦁ ironic_provision:
裸金属GuestOS自动化部署网络平面,PXE/TFTP服务器都在这个网络中。服务器通过Neutron在该网络中提供的DHCP server完成PXE启动,并进行后续的GuestOS镜像下载。在当前的OpenStack版本中,这个网络是一个没有VLAN的Flat类型的网络。
⦁ ironic_dummy:
物理裸金属未使用端口需要加入网络,避免引起网络安全问题
⦁ tenant-networks:
在当前的Ironic服务提供的能力中,无法支持多租户网络的能力,所有裸金属服务器的租户网络都与PXE网络相同。作为一个缺陷,目前OpenStack社区已经开始规划对多租户
网络的支持。
Ironic的交互流程:
1) Ironic通过与Nova交互,提供裸机的生命周期管理功能;裸机的生命周期管理API由Nova提供,使用同虚拟机相同的API接口进行管理,使用户可以像管理虚拟机一样来管理裸机。
2) Ironic通过与Neutron交互,提供裸机的网络管理功能(当前Kilo版本的Neutron不具有自动控制裸机所使用的TOR的配置修改的网络能力,需要自研或对接第三方SDN控制器来实现TOR的自动化配置等网络特性);裸机使用的Network同虚拟机使用的Network一样,都是Neutron提供,并且裸机和虚拟机可以接入同一个Network来实现二层互通。
3) Ironic通过与Glance交互,提供裸机的镜像加载功能,Glance通过对接Swift来存储镜像文件;Ironic可以使用标准的Qcow2、raw格式的镜像文件作为裸机的镜像,镜像的管理与虚拟机镜像的管理方式一样,可以通过Glance的标准镜像管理接口进行管理。Cinder服务为裸机提供共享存储的能力(当前Kilo版本的Ironic不具备与Cinder对接为裸机提供共享存储的能力,可以自研扩展对应的能力),使裸机可以完全像虚拟机一样使用共享存储卷,而且同一个共享存储卷可以挂载给虚拟机,也可以挂载给裸机。
4) Ceilometer可以通过与Nova的对接,监控到裸机实例的信息,采用与监控虚拟机实例一样的方式;另外,也可以通过与Ironic对接,监控裸机的带外硬件信息。
5) 与其他OpenStack服务一样,Ironic服务也是通过Keystone服务来提供鉴权能力。
Ironic服务组件组成:
⦁ Ironic API :
处理外部API请求的组件;Ironic的外部API请求主要有两部分,一部分是管理员直接调用Ironic 的API用于裸机服务器的配置管理、维护管理等,另一部分是通过NovaCompute组件的Ironic Driver下发的裸机实例生命周期管理的API操作。
⦁ Ironic conductor :
裸机管理的核心组件,接受Ironic API请求的后端处理组件,通过挂载不同的Driver来完成对裸机服务器的部署及管理。
⦁ Drivers:
Ironic对于硬件的异构问题主要是通过对接不同的后端驱动来解决的,主要的Driver有PXE、IPMI、amt、drac、iLO、irmc等,也可以以plugin形式扩展特有硬件的Driver。
⦁ Ironic-python-agent:
集成于deployramdisk中,通过与ironic管理服务的交互完成裸金属OS加载等操作,临时存在于裸金属服务器加载启动的内存中,裸金属OS启动后失效。
主机GuestOS自动化安装:
Ironic服务通过IPMI网络对裸机的上下电、重启和启动方式进行控制,在安装GuestOS时,设置裸金属服务器从网络启动,通过PXE启动,自动从管理网络的TFTP服务器加载引导用的minios,然后从注册时指定的GuestOS位置或从OpenStack Glance服务下载GuestOS后写入裸金属服务器的本地磁盘。最后设置裸金属服务器从硬盘启动,完成GuestOS的自动安装。
裸金属实例的发放管理:
1) 管理员通过Ironic API注册裸金属服务器节点信息到Ironic。
2) Nova-compute通过Ironic API接口查询裸金属服务器资源,记录到Nova数据库。
3) 租户通过Nova API申请裸金属服务器,Nova API将消息转发给Nova Scheduler。
4) Nova Scheduler服务通过用户指定的规格,调度到合适的裸金属服务器。
5) Nova-compute 通过Ironic API接口发送请求到Ironic API,触发Ironic服务开始GuestOS的自动化安装部署。
6) Nova-compute周期性通过Ironic API检测裸金属服务器的状态,等待Ironic服务完成安装过程。
7) Ironic-conductor在Neutron中创建DHCP端口,用于后续裸金属服务器网络启动,并配置PXE/TFTP server,准备裸金属服务器启动时的PXE配置。
8) Ironic-conductor通过IPMI驱动设置裸金属服务器从网络启动,上电裸金属服务器。
9) 裸金属服务器通过DHCP加载引导OS(deploy_kernel和deploy_ramdisk),然后根据后端管理驱动的不同完成GuestOS的安装。
10) GuestOS安装完成后,ironicconductor通过IPMI驱动设置裸金属服务器从硬盘启动,并重启裸金属服务器进入GuestOS,并设置Ironic的状态为安装完成。
11) Nova-compute检测到裸金属服务器安装完成后,更新计算实例的状态为可用。
Ceilometer:
⦁ Ceilometer主要为上层运维组件提供监控与告警数据,公有云下可用于计费。
⦁ 数据记录在MongoDB中。MongoDB是一个高性能,非结构化的数据库。
华为Openstack
CPS
CPS是什么:
1) 华为基于社区版OpenStack所开发的商业版OpenStack。
2) CPS服务:华为云供给服务,可以快速安装、部署、配置OpenStack,减少配置部署的复杂度。
3) 是一个部署了FusionSphere OpenStack的节点。
CPS网络平面
OpenStack网络信任度理解:
⦁ OpenStack组件之间内部通讯物理网络
⦁ 运维管理组件,例如:VRM、OM、SC、OC、FSM等,运维管理物理网络
⦁ 用户/租户/管理员所使用的外部物理网络
华为OpenStack的逻辑网络:
⦁ internal_base:
用于Openstack内部组件之间的通信以及PXE安装,该平面为二层网络,不支持三层通信,也不支持VLAN标签。
⦁ external_om:
1) 用于Openstack与其他运维组件的通信(例如Openstack与VRM、FSM,VNC访问),内部的OM管理平面。需要配置网关,与FusionCompute的管理平面互通。
2) 如果是all in one的部署,在CPS上安装VRM时,自动选择从external_om网段中拿地址。
⦁ external_api:
用于与外部网络通信的网络平面,Openstack对外提供服务
⦁ external_base:
1) 用于RabbitMQ和FNM使用该平面对接FusionCompute的CNA主机。
2) 因为CNA节点的Neutron-Agent要通过rabbitmq与Neutron-Server通信,因为rabbitmq默认只监听internal_base,而internal_base不具备三层通信能力,所以单独再规划一个external_base网络(可以用external_om替代)。
3) 用于FNM收集CNA节点网络信息。
4) 可以使用external_om替代,原因如下:
⦁ external_om本身就符合与CNA节点通信的条件
⦁ 减少VLAN,减少网络复杂性方面考虑
⦁ Storage_data:
1) KVM场景下,Cinder-volume通过该平面对接后端存储的业务接口。
2) FusionCompute和VMware可以不需要该平面。在FusionCompute场景下,Cinder对接VRM接管存储时,可以直接使用external_om/external_api 进行对接。
⦁ tunnel_bearing:
租户虚拟机所使用的Vxlan网络所承载的系统平面
⦁ Provision:
1) 用于引导安装部署镜像,以及安装用户镜像。
2) provision在业务物理网络平面中,使用完毕后,会关闭provision平面
⦁ BMC:
连接服务带外管理接口,用于远程维护。
Ironic使用BMC网络对服务器上下电,配置为PXE引导。
整体网络平面介绍:
⦁ 管理平面:FusionCompute的VRM、CNA所在的网络平面称之为管理平面。需要与 external_om/external_api 互通。
⦁ 业务平面:租户虚拟机业务数据使用的网络平面。
SC和OM网络平面
SC和OM的网络平面:
SC和OM都有internal_base、external_om、external_api平面
External_API:
用于外部访问SC、OM的服务,及对接外部时钟源进行时间同步,对接OpenStack RestAPI。
External_OM:
用于外部访问SC、OM的服务(在CPS上部署时,防火墙未放行),及对接内部时钟源进行时间同步。
Internal_Base:172.28.0.0/20
1) OM用于对接CPS节点上的gaussDB。
2) SC和OM用该平面获得元数据(节点的主机名,节点的个性配置)
虚拟机创建
华为OpenStack虚拟机创建流程:
1、用户在SC上创建(申请)虚拟机
2、SC将请求转变成Rest消息,向Nova-api提供的RestAPI发送创建虚拟机的请求
3、Nova-api接收到请求后,进行如下动上作:
3.1、对传入的参数进行合法性校验和约束限制(例如消息携带的token进行鉴权)
3.2、对请求的资源进行配额(quota)的校验和预留
3.3、将虚拟机对象写入到数据库
3.4、向Nova-conductor发起虚拟机的创建请求
4、Nova-conductor接收到消息后,向Nova-scheduler请求选择合适的主机
5、Nova-scheduler根据Filter模块进行主机的筛选,之后做weight筛选,最后做随机选择;并返回结果给Nova-conductor。
6、Nova-conductor向选择出的主机对应的fc-nova-compute发出虚拟机创建请求
7、Nova-compute收到请求后,会做如下动作:
7.1、通过RestAPI向Neutron申请网络资源
7.2、通过RestAPI向Cinder申请存储资源(可以选择本地磁盘或云磁盘,选择云磁盘就是Cinder提供的)
7.3、当网络、存储资源准备就绪后,fc-nova-compute调用driver通过VRM的RestAPI向VRM发起虚拟机的启动请求