Fuel部署OpenStack架构分析


问题导读

1.什么是fuel?
2.fuel有什么特点?
3.openstack支持哪些hypervisor?
4.Fuel-OpenStack如何工作?






一.什么是fuel1.简介
Fuel是一个开源的软件用来部署和管理openstack,并且与openstck社区息息相关有着自己的GUI界面来管理整个openstack平台。

值得注意的是,Fuel是Mirantis公司开发的部署openstack集群工具,主要功能为裸机PXE安装操作系统,master节点提供DHCP、TFTP服务,能够实现openstack服务编排,通过puppet进行配置服务管理,此外还提供了openstack关键服务的健康检查和log实时查看等基础运维服务。支持openstack服务HA部署,有比较友好的交互式的web界面。
这里有一个在线demo—传送门: http://demo.fuel-infra.org:8000/
2.特点
Ø  硬件的自动查询
Ø  在UI配置网络和磁盘分区
Ø  可以管理和加快多个openstack节点集群
Ø  提供了HA部署模式
Ø  安装前的检查包括网络可通性
Ø  安装后的自动测试
Ø  可以在UI里面查看到实时的日志
Ø  提供了不止centos、ubuntu等linux版本
Ø  提供了多种Openstack版本

二.OpenStack Hypervisor
openstack的hypervisor支持多种,目前支持 KVM,XEN,VMware和docker。openstack负责管理hypervisor的项目是nova。因此可以通过在计算节点,修改nova的配置文件中的compute_driver选项,来选择不同的驱动来使用不同的hypervisor。


三.Fuel架构
1.操作系统配置

1.1节点配置

Fuel部署OpenStack架构分析_第1张图片



MCollective是一个构建服务器编排(ServerOrchestration)和并行工作执行系统的框架。
首先,MCollective是一种针对服务器集群进行可编程控制的系统管理解决方案。在这一点上,它的功能类似:Func,Fabric 和 Capistrano。


1.2网络验证

Fuel部署OpenStack架构分析_第2张图片


1.3集群配置和部署细节(via Facter extension)


Fuel部署OpenStack架构分析_第3张图片

说明
一旦部署和配置消息由Astute接受,配置方法被调用。供应部分Cobbler创建系统和超过Cobbler会重启。那么Astute使用MCollective直接寻址模式,并检查所有必需的节点可用,包括puppet。如果某些节点还没有准备好,Astute等待几秒钟,并试图再次请求。当节点引导的目标OS,Astute使用upload_fileMCollective插件数据推到目标系统上的一个特殊的文件/etc/astute.yaml。数据包括:角色和部署所需的所有其它变量。于是,Astute要求puppetdMCollective插件开始部署。用puppet启动节点。

因此,puppet agent开始其运行。模块包含facter扩展,在部署之前运行。扩展读取/etc/astute.yaml数据放置mcollective,并与它延伸Facter数据作为单个事实,然后由parseyaml功能解析以创建$ :: fuel_settings数据结构。该结构包含所有变量作为一个单一的哈希和支持嵌入等丰富的结构,如节点哈希或数组。箱体结构运行中的类选择相应的类基础,/etc/astute.yaml发现role和deployment_mode变量。

本小节参考自:
http://docs.mirantis.com/fuel-dev/develop/sequence.html



2.Fuel架构分析



Fuel部署OpenStack架构分析_第4张图片



Fuel不是巨大的单片,而是由几个相互依赖的组件构成的!其中有一些是fuel定义的组件,还有一些是第三方服务提供的比如cobbler、puppet、mcollective等等。一些组件可以被重复利用不需要任何更改,而一些则需调整。
2  UI 是一个用JaveScript写的页面应用,主要还是用bootstrap框架。
2  Nailgun是fuel的核心,当然是用python写的。它实现了REST API以及部署数据管理。这些数据包括磁盘卷配置、网络配置和其他使之部署成功必要的数据。它需要有编制逻辑去建造指令使部署能顺序性地完成。nailgun主要是使用SQL存储数据和AMQP服务来关联其他workers。Fuel的命令行也是由它提供的。
2  Astute是另外一个重要的组件,代表着nailgun的workers。它主要是根据nailgun提供的指令运行着某些操作。Astute实际上什么东西都没有只是一层封装着所有细节和相互影响的服务比如cobbler、puppet、shell scripts等等,和提供了异步通用接口给那些服务。它是通过其他基本本地协议(比如XML-RPC协议)来管理这些服务或者可以使用Mcollective agents去提供定义好的命令比如运行’puppet apply’在其他的远程节点上面或运行某些脚本。当然它是通过AMQP来与nailgun交互数据。
2  Cobbler 被用来提供快速网络安装的linux服务。
2  Puppet 仅仅是一个部署安装服务。当然它还创建了mcollective agent去管理其他配置管理框架比如chef、saltstack等!
2  Mcollective agents 实现具体的任务像设备清理,网络连接性测试等等。
2  OSTF (OpenStack Testing Framwork,or Health Check)主要执行在部署完成后验证openstack。


3.如何工作
Fuel说具体点就是个管理节点。这个节点包含了给节点提供网络、安装操作系统以及部署openstack创建云平台环境等所有服务。上面说了nailgun是fuel里面的最重要的服务。它是用Python编写的RESTful应用程序包含所有系统的业务逻辑。


Fuel部署OpenStack架构分析_第5张图片



一个用户能过通过页面或者CLI来编辑配置、给新节点分配角色以及搭建集群。
Naligun的数据都是存储在postgreSQL数据库里(跟mysqlfreedb一样属于开源的数据库)。这些数据包含了新节点硬件配置信息、角色、环境配置、现状部署情况等。
管理节点里的PXE服务使用了特殊的bootstrap image来发现新的节点。这个bootstrap image运行着特殊的脚本——nailgun agent.这个脚本收集了服务器硬件信息并提交给了nailgun通过REST API。
部署程序是在用户配好了环境才开始启动的。Nailgun服务端会创建一个环境配置的JSON数据文件然后交给rabbitmq队列中。这个信息会被一个“任务执行者“——astute接受。最终由它去发送配置任务给其他组件安装部署节点。


Fuel部署OpenStack架构分析_第6张图片


Astute workers会去主动监听rabbitmq队列并接受消息。首先,一旦有提供环境的节点,astute会使用XML-RPC去给cobbler设置那些节点的配置并使用mcollective重启那些节点让cobbler去安装基础操作系统。Cobbler是一个部署系统能控制DHCP和TFTP服务并使用他们去网络启动那些节点以及部署系统根据用户的配置内容。
Astute发送一个特殊的信息给rabbitmq队列包含着所有需要在托管节点的操作。在已经被引导启动的节点上mcollectvie服务端会去监听刚才发送消息,一旦有消息过来他们就会运行所需的代理的操作与给定的参数。Mcollective客户端只是一组ruby脚本程序。这些程序会去运行mcollective所需要的执行的操作。

Fuel部署OpenStack架构分析_第7张图片


当节点的操作系统被安装完成后,Astute会去启动部署openstack的服务。首先它会上传节点的配置给/etc/astute.yaml这个文件,通过uploadfile agent这个文件包好了所有部署需要的变量与配置。
接下来,astute会去使用puppetsync agent去同步puppet模块和脚本。这个agent运行了一个rsync进程——它会去同步master节点并下载最新版本的puppet模块和脚本。
当模块同步完成后,astute就会去运行部署脚本通过puppet主要清单文件site.pp。mcolletve agent使用daemonize工具在后台运行puppet脚本进程:
  1. daemonize puppet apply /etc/puppet/manifests/site.pp"
复制代码

Astute会定期地调用agent去检查部署是否完成并汇报给nailgun,当然这一过程也是通过rabbitmq队列实现的。
部署开始的时候,puppet会去读取astute.yaml文件内容通过fact并解析它到$fuel_settings结构,这样一来就可以获取所有部署配置。
当puppet进程退出来之后无论成功还是返回一个错误,astute都会从节点得到一个报告文件并发送一个结果给nailgun。然后用户可以通过监控看到这个日志,无论是从fuel界面还是cli。
Astute也可以做额外的部署操作,这要根据用户的环境配置,都可以添加无论部署是否已经完成:
2  生成和上传SSH keys
2  网络验证
2  上传cirros镜像
2  上传/etc/hosts文件给所有节点
2  上传RadosGW map(ceph节点)

部署教程:【博文推荐】使用Fuel安装OpenStack juno之使用OpenStack创建云主Volume     http://cloud.51cto.com/art/201502/465207_all.htm
PDF离线文档: http://wenku.baidu.com/view/eb5a3a796c85ec3a87c2c5e5.html
---------------------------------------------------------------------------------------------------------
备注说明常用的Openstack批量部署工具及其介绍
---------------------------------------------------------------------------------------------------------
Fuel比较值得推荐
  这是Mirantis出品的部署安装工具,2013年10月份,推出他的3.2版本,让人很震撼,基本算是把Openstack所有的部署都web化,你可以太多的选择:尤其是网络,存储。这基本都是大家学习的榜样。已经敢和企业签订SLA。
  目前国内杜玉杰,九州云,在做该项目的汉化工作和考虑日后的技术支持。

Devstack
  这应该算是Openstack最早的安装脚本,他是通过直接git源码,进行安装,目的是让开发者可以快速搭建一个环境。目前这套脚本可以在Ubuntu和Fedora下跑的很好。
  如果你想了解新版本的功能,通过Devstack是一个最佳选择。我第一次成功安装Openstack,就是用这个。
Diablo安装脚本
  这算是我知道的第一个基于ubuntu 源的安装脚本,当时Diablo发布的时候,有bug,keystone和Horizon无法一起工作,ubuntu 11.10源里的包也是有相同的bug,并且Ubuntu 官方并不打算维护和升级。这位作者个人身份,维护了Diablo 版本后来的升级,打包,并且写了一套脚本。
  这套脚本,其实写的非常好,我同事改造了一下,就可以安装Essex版本。目前正在改进,用来安装Folsom版本。
Stackops
  Openstack起步的时候,官方的安装文档,其实基本都是来自Stackops,当时他们提供Openstack的部署服务。你下载一个iso,装完一个ubuntu系统后,就会转到他们的web,你填写相关的配置参数,通过chef进行部署。
  Stackops在Chef上是比较强悍的,包括Dell的Crowbar,也是和他合作,才搞定Chef。不过我的理解,他的Chef 脚本是没有开源的。
  Stackops通过商业定制,进行收费。目前感觉有点走下坡路,业内的声音比较小了。对openstack的新版本支持比较慢,Essex支持,到9月份才支持。目前还没有任何关于Folsom 的支持。
Crowbar
  在Openstack上,Dell是有点郁闷,中国的那句老话,起个大早,赶个晚集。Openstack刚发布的时候,Dell就号称要做一个工具部署,不过毕竟是硬件公司,对软件还是比较外行。
  Dell的Crowbar,是一个iso,装完后,你可以在web界面进行Openstack的部署,底下其实也是使用Chef。集成了Nagios监控,安装OS是dell自己开发的,有点创新。
  以前Dell的Crowbar一个大的特色就是可以远程设置机器的Raid和Bios,这是从Dell,我才知道可以这样做。不过也正因为这个特色,导致厂商绑定,还有Dell自己如何定位Crowbar,当初还想搞一个商业的版本,结果后来放弃。
  Crowbar目前的开发,其实应该是遇到问题,任何做部署工具的,应该都是一个很好的失败的案例。后续的发展,维护,更新都是问题。

Maas+Juju
  这是Canonical推出的部署工具,可以用在Openstack的部署,类似Puppet,Chef 的部署工具。Maas是用于安装ubuntu,juju是用于部署应用。
  我是很早就测试他们,本来有操作系统的优势,做部署工具,应该会有优势,不过比较失望,Maas开始的时候,就是一个半成品,Maas装完的操作系统,是无法固定IP地址,真不知道他们怎么想的,可能是我土鳖,不能理解数据中心的机器,都是通过dhcp获得IP。我订阅了juju的邮件列表,一个星期就1,2封邮件,比较惨淡。研究的人估计也很少。
  以前Maas底下是使用cobbler,不过现在最新的版本,已经去掉,用ubuntu自己搞的。
  依靠自己的公司投入去维护一套工具,难度都是比较大的。所以Maas和juju,前景真的不是太好。你如何和Puppet和Chef竞争?

你可能感兴趣的:(性能调优,服务器架构,网站运营,云计算技术,软件开发,企业信息化,软件工程,项目分析,产品设计)