云计算与openstack (三)整体架构与功能剖析

本文深入解析OpenStack的整体架构,探讨其核心组件Nova的功能与协作原理,包括计算、存储、网络等模块的职责与运行机制。

摘要:本文主要剖析openstack的整体架构部分,然后分析nova各个子系统模块的功能、协作运行机理。


整体架构


1.整体架构剖析


关键需求,决定架构。openstack的设计目标是实现100万台主机和6000万台虚拟主机的管理能力。整个openstack项目可被设计成大规模灵活扩展的云计算操作系统。为了达到以上目标,我们需要具备如下功能。

@@@项目所有的子系统和服务都被集成起来,一起提供IAAS服务

@@@通过标准化公用服务接口API实现集成

@@@子系统和服务之间,通过API相互调用

openstack的核心和扩展的主要项目如下:


对象存储——swift。通过简单的key/value方式实现对象文件的存储,适用于“一次写入,多次读取,无需修改”的场景。对象存储俗称云存储,例如国外的dropbox、box和国内的快盘等。而dropbox是基于亚马逊的S3API接口开发的典型案例。


镜像管理(Image)——glance,提供虚拟磁盘镜像的目录分类管理以及镜像库的存储管理,用于openstack虚拟机


计算管理——nova,提高虚拟主机,包括虚拟机、弹性云硬盘等服务。


网络管理——nova-network和Quantum,实现虚拟机的网络资源管理,包括网络链接、子网IP管理、L3的公网映射和后续的负载均衡


块存储——nova-volume和Cinder,实现对块存储的管理,类似弹性云硬盘,为虚拟机提供云硬盘(块设备)服务。


认证管理——keystone,为openstack所有的系统提供统一的授权和身份验证服务


界面展示——orizon,基于openstack API接口开发的Web实现


本篇的nova包括了除了对象存储之外的所有模块,泛指与云主机EC2相关的计算、存储、网络、镜像以及认证和界面服务。


2.逻辑架构

nova的各个逻辑模块可以互相交互,其中最和新的AMQP通过消息中间件实现各个模块之间的消息通信。各个模块职责如下。


1)nova-api 负责接受和相应终端用户有关虚拟机compute和云硬盘Volume的请求。在Essex版本的nova-api已经模块化之后,可以自行实现执行特殊的nova API。nova-api是整个Nova的入口。它接收用户请求,将指令发送到消息队列AMQP制定的主题Topick,由订阅相应主题Topic的守护进程接收和执行相关消息。

nova-api包含两大部分,WSGI API && RPC API,前者是面向公众服务的接口,报货数据封装格式转换和数据校验;后者是标准化服务的内部实现,保罗数据库操作消息传递等,比如compute-api、network-api、volume-api,同城API Server,在运行架构章节,将描述此类接口。


2)nova-compute是主要的执行守护进程,职责是基于各种虚拟化技术Hypervisior,实现虚拟机的创建和终止。nova-compute有两个工作,接收消息队列中的执行指令,并执行相关指令,如部署kvm虚拟机;维护数据库相关模块的状态数据。


nova-compute整合了计算资源CPU/内存、存储、网络3类资源部署管理虚拟机,实现计算能力的交互。包括如下的内容

@@@运行/终止/重启虚拟机

@@@挂载/卸载云硬盘

@@@控制台输出


3)nova-volume/Cinder的职责是创建、挂载和卸载持久化的虚拟机。nova-volume可以用ihe分布式文件系统CEPH的Rados Block Device来实现


4)nova-network的职责是实现网络资源的管理,包括IP、VLAN、网桥接口、防火墙等的管理。运行机制也和nova-compute类似,从AMQP接收信息,并进行处理


5)nova-schedule的职责是调度虚拟机在哪个宿主机上部署。该模块是非常值得挖掘和深入发展的,调度算法可以根据业务目标进行扩展。


总结:AMQP消息中间件蔡永乐RabbitMQ,也可以用任何AMQP协议的消息中间件,如Apache的 Apid.


3.运行架构


.API接口操作DB实现资源数据模型的维护,通过消息中间件AMQP,通过相应的守护进程如nova-compute、nova-networ/quantum等实现服务接口。与守护进程共享DB数据库,但收据程序侧重维护状态信息,如虚拟机状态,网络资源状态等。守护进程之间不能互相调用,需要通过API调用,如nova-compute为虚拟机分配网络,需要调用nova-api,而不是直接调用nova-network。


4.开发架构


源代码可以到官网www.openstackorg/launchpad.net下载;devstack安装的可以到/opt/stack找到源码;手动安装的,在/usr/lib/python2.7/dist-package/nova。


具体的开发架构如下:

./flagspy 配置信息,提高对应nova.conf

./sevice.py 服务守护进程主程序

./api 对外通过标准化的RESTful接口提供服务

./api/openstack 提供openstack nva rest api 接口服务

./api/ec2 提供兼容亚马逊标准化服务接口

./conpute 计算资源池

./compute/api.py

./compute/manager.py

./network

./volume

./scheduler

./db 数据模型存储,采用sqlalchemy实现ORM


5.物理架构

我们以开源平台项目abiCloud为例,谈谈虚拟机平台管理的几大关键药书


网络上划分为管理网、数据网、存储网络、公网。


管理网:宿主物理机、虚拟机平台控制器、镜像管理、存储管理、DHCP管理。

数据网:虚拟机、虚拟交互机、VLAN和IP池管理,DHCP服务器也要访问数据网从而动态分配地址。数据网可以包含多个不同的VLAN。

存储网(可选的,可以与管理网融合):实际环境下,存储网路和管理网络是不同的,宿主物理级的存储更多采用磁盘阵列,通过交换机连接到计算节点。宿主物理机有三个以上的网卡:连接存储网(HBA卡)/管理网、数据网。

公网:

管理网内控制节点安装相关API服务、调度scheduler、存储volume、镜像glance;数据库和消息中间件安装在独立服务器中;监控和界面部署安装到另外的服务器从而实现负载平衡。根据安装组件的不同,服务器节点可以划分成以下几种

计算节点:nova-compute

存储节点:nova-volume或者cinder-volume

网络节点:nova-network/quantum server

控制节点:nova-api、scheduler


功能剖析


1.消息队列协议AMQP


高级消息队列协议AMQP是一个异步消息传递所使用的应用层协议规范。消息队列在openstack中是计算节点nova-compute、存储节点nova-volume、网络节点nova-network以及API和各个功能模块之间相互通信写作的重要媒介。AMQP可以采用rabbitMQ、Apid等消息中间件来实现。Nova组件通过RPC实现相互通信。采用典型的发布/订阅模式。


2.调度器——nova-scheduler


nova-scheduler是Nova中最简单的一个模块:从AMQP队列中接受一个RPC消息,然后根据特定的策略将这个消息转发给其认为最合适的compute主机。考录到部署环境和业务的差异性,要选择一个最为合适的消息调度策略非常复杂。Nova调度其支持各种可能的因素进行决策,比如Compute负载、内存使用率、可用区域的物理距离等。为了应对各种稀奇古怪、甚至不可预见的调度策略,Nova调度器是以一种插件的架构来实现的。

2.1过滤

每个计算节点都会在Nova数据库的compute_nodes表中保存你一个对应的表项,记录了计算节点所有可用的能力信息——内存容量、虚拟CPU个数、硬盘容量等。在进行过滤之前,需要先获取所有可用的计算节点信息,步骤如下:
(1)从compute_nodes表中获取计算节点的能力信息,并加入计算节点集合。
(2)从数据库获取已经创建的云主机的实例信息。
(3)从云主机所在的计算节点中减去云主机实例所占用的资源,从而得到剩余资源。


2.2权衡


成本表示宿主机与请求的符合程度,是主机特征与宿主特征对比以后得出的结果。当主机特征和请求特征契合的时候,成本较低。调度器衡量的过程如下:
(1)创建一个何曾本计算函数结果的矩阵,每个主机对应于一行,每个成本计算函数对应于一列
(2)根据权重银子和成本计算函数来计算矩阵中每个单元的值
(3)每行各列相加,得到主机权重

(4)取权重最小的作为最优选择。


3.计算资源管理


nova集成了多种虚拟化技术,其中nova-compute需要关注的是通过Hypervisor分配cpu/内存/磁盘/网络等给虚拟机,其中cpu是compute直接分配,磁盘和网络通过volume、network提供。compute如何实现这些资源的交付呢?

libvort实现kvm、qemu等hypervisor的集成,计算资源服务通过适配的方式提供对不同虚拟化技术的集成,nova-api通过调度其发送计算资源管理指令到计算节点nova-compute,计算节点nova-compute接受指令之后,获取信息调用底层虚拟化适配libvirt中的不同驱动driver,与底层虚拟化软件进行交互。


4.存储资源管理


4.1常见的存储概念

直连式存储(DAS),我们常见的物理主机包含硬盘,通过足迹的服务总线链接来提供存储服务。可以解决单台服务器的存储空间扩展,高性能传输需求,以快设备的方式提供存储服务。


网络接入存储(NAS),独立于主机、弯度为网络数据存储尔开发的一种文件服务器。NAS服务器集中连接了所有的网络罗数据存储设备,扩展性好,同时这种网络存储方式是NAS服务器独立承担的。所以,对原来的网络服务器性能基本没有影响。NAS&&DAS最大的别却是NAS蔡永乐文件系统方式,尔DAS采用了快设备方式。NAS存储一般采用NFS协议的方式,实现不同主机之间的文件共享。


存储区域网络san,不是将所有的存储设备集中安装在一个专门的nas服务器中,而是将存储设备通过交换机连接起来,形成存储网络。因为网络传输协议的不同,san种类也有所不同。


大规模的生产环境一般都采用san,nova蔡永乐iscsi协议的存储方式。nova-volume存储适配有多种方式,有基于iscsi的IP-SAN方式,有规划中的集群文件系统Ceph方式。在Folsom版本后渐引入了Cinder项目,用于替换nova-volume模块,Cinder具备更强大的管理能力。


4.2Cinder功能



Cinder的功能是实现存储服务,根据实际需要快速为虚拟机提供设备创建、挂载、回收以及快照备份控制等。Cinder包括API、调度Scheduler和存储适配cinder-volume 3个服务,其中cinder-volume可以部署到多个节点上。cinder-scheduler和nova-scheduler类似,根据服务寻找合适的服务器cinder-volume,发送消息到cinder-volume节点,由cinder-volume提供弹性云存储服务。
 因为实际环境中,存储服务厂商有很多,采用了各种各样的存储访问协议,如ISCSI、NFS等。这就需要进行适配,根据API服务提供的接口来实现块设备的提供。所有的存储设备中使用的连接协议基本都是iSCSI和NFS两种,从计算节点使用的角度来说,他们很相似,我们接下来剖析这两种协议。

4.3iSCSI适配


iscsi又称为IP——SAN,是一种基于internet和scsi-3协议之下的存储技术,通过IP协议将存储设备连接到一起,实现数据传递,它是SAN市场快速发展的因素之一。iSCSI后端存储架构有三种——控制器架构、pc架构、pc+toe架构


openstack如何基于机架方式服务器方式的软件iSCSI服务?
1)存储节点部署上nova-volume/cinder-volume之后,作为存储target提供块设备服务。
2)计算节点nova-compute作为存储客户端Initiator,查找存储节点的存储单元LUN,并挂载到本机,识别为块设备,并分配设备给虚拟机。

4.4 NFS适配


与上面不同,NFS是文件系统,可以理解为文件夹(目录),它最大的特性是文件共享。


5.网络资源管理



5.1 IP资源管理


5.2 DHCP自动分配IP


5.3 网络连接管理


5.4 虚拟交换机管理


5.5 nat网络映射


5.6 网络安全管理


5.7 Quantum 项目介绍





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值