天天看点

云计算学习-华为openstack(老版本)

自己原来学习华为云计算相关知识,请注意,已过时

openstack组件概览

各大组件间的通信,使用REST API

组件内部的子组件,使用RabbitMQ

云计算学习-华为openstack(老版本)

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的架构:

云计算学习-华为openstack(老版本)

Nova-api:

1、接收请求,对外提供服务入口

2、调用内部相应子组件实现功能

3、返回相应结果

Nova-conductor:

1) 帮助/代理Nova-compute操作数据库,因为Nova-compute是近业务侧的,直接操作数据库不安全。

2) 进行复杂流程的控制。

Nova-scheduler:

1) 选择合适的主机创建VM

2) 先根据Filter模块进行主机的筛选,之后做weight筛选(默认内存,支持CPU),最后做随机选择。

云计算学习-华为openstack(老版本)

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提供虚拟机镜像的查找服务。

云计算学习-华为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

云计算学习-华为openstack(老版本)

Neutron逻辑架构和主要组件:

逻辑上分为3部分,实际上Plugin已经集成到Server中了。

⦁ Neutron-Server:Neutron Server包含两部分: Neutron-common和  Plugin

⦁ Neutron-Plugin:整合到Neutron-Server中了,后面根据需要可以再开发Neutron-Plugin

⦁ Neutron-Agent

云计算学习-华为openstack(老版本)

Neutron的多级插件:

通过集成多种虚拟网络插件,实现L2的虚拟网络管理

云计算学习-华为openstack(老版本)

Neutron DHCP服务:

⦁ 每一个Network对象对应一个DHCP服务(即一个命名空间)

⦁ Neutron在Network上创建DHCP端口

⦁ 在命名空间内,使用Dnsmasq监听DHCP端口

⦁ Neutron配置Dnsmasq配置文件,将mac、IP、路由、网关等信息保存

云计算学习-华为openstack(老版本)

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 设备  

云计算学习-华为openstack(老版本)

Cinder

⦁ 对接不同的后端储存

⦁ 实现高级特性、HA、快照等

⦁ 将计算与存储分离,减轻nova-compute的压力。

Cinder 逻辑架构:

云计算学习-华为openstack(老版本)

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中的应用:

云计算学习-华为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启动后失效。

云计算学习-华为openstack(老版本)

主机GuestOS自动化安装:

    Ironic服务通过IPMI网络对裸机的上下电、重启和启动方式进行控制,在安装GuestOS时,设置裸金属服务器从网络启动,通过PXE启动,自动从管理网络的TFTP服务器加载引导用的minios,然后从注册时指定的GuestOS位置或从OpenStack Glance服务下载GuestOS后写入裸金属服务器的本地磁盘。最后设置裸金属服务器从硬盘启动,完成GuestOS的自动安装。

云计算学习-华为openstack(老版本)

裸金属实例的发放管理:

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检测到裸金属服务器安装完成后,更新计算实例的状态为可用。

云计算学习-华为openstack(老版本)

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 进行对接。

云计算学习-华为openstack(老版本)

⦁ tunnel_bearing:

租户虚拟机所使用的Vxlan网络所承载的系统平面

⦁ Provision:

1) 用于引导安装部署镜像,以及安装用户镜像。

2) provision在业务物理网络平面中,使用完毕后,会关闭provision平面

⦁ BMC:

连接服务带外管理接口,用于远程维护。

Ironic使用BMC网络对服务器上下电,配置为PXE引导。

整体网络平面介绍:

⦁ 管理平面:FusionCompute的VRM、CNA所在的网络平面称之为管理平面。需要与 external_om/external_api 互通。

⦁ 业务平面:租户虚拟机业务数据使用的网络平面。

云计算学习-华为openstack(老版本)

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(老版本)

虚拟机创建

华为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提供的)