一、Fuel架构

Fuel是一个开源的OpenStack部署和管理的工具,它允许用户通过Web UI进行OpenStack的部署和管理,并可以通过插件来扩展。

Fuel的目标:加快和简化不同配置的OpenStack环境的部署、测试和维护。

Fuel面向普通用户提供了多种不同需求的简化的OpenStack部署方式,主要特性有:

自动发现硬件环境;

UI界面配置;

多OpenStack集群管理;

可选是否做HA;

部署前的配置及网络检查;

部署后的OpenStack环境测试;

UI界面实时查看日志;

支持CentOS和Ubuntu,通过扩展也可支持其他版本。

 Fuel的架构如下:

 Fuel由许多独立的组件构成,有些组件来自第三方,如Cobbler、Puppet、Mcollective等。

UI基于bootstrap和backbone框架使用JavaScript开发。

Nailgun是Fuel的核心组件,使用Python开发。它提供用于部署和管理的REST API;管理磁盘卷配置数据、网络配置数据以及其他环境相关的数据。它能够根据编排逻辑按照正确顺序生成部署命令。Nailgun使用SQL数据库保存数据,使用AMQP服务与workers进行交互。用户通过Web UI或 Fuel CLI与其进行交互。

Astute是另外一个重要的组件,代表着nailgun的workers。它主要是根据nailgun提供的指令运行着某些操作。Astute实际上什么东西都没有只是一层封装着所有细节和相互影响的服务比如cobbler、puppet、shell scripts等等,和提供了异步通用接口给那些服务。它是通过其他基本本地协议(比如XML-RPC协议)来管理这些服务或者可以使用Mcollective agents去提供定义好的命令比如运行’puppet apply’在其他的远程节点上面或运行某些脚本。当然它是通过AMQP来与nailgun交互数据。

Cobbler用于网卡启动环境准备,被用来提供快速网络安装的linux服务。

Puppet用户部署,可以通过MCollective agent去管理其他的配置管理框架,比如Chef,SaltStack等。

Mcollective agents用于执行类似硬件驱动清理、网络连接探查等特别任务。

OSTF(OpenStack Testing Framework/Health Check)是一个独立的组件,用于在部署后测试OpenStack环境。

二、Fuel执行原理

 

1、节点部署

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

  一个用户能通过页面或者CLI来编辑配置、给新节点分配角色以及搭建集群。

  Naligun的数据都是存储在postgreSQL数据库里(跟mysqlfreedb一样属于开源的数据库)。这些数据包含了新节点硬件配置信息、角色、环境配置、现状部署情况等。

  管理节点里的PXE服务使用了特殊的bootstrap image来发现新的节点。这个bootstrap image运行着特殊的脚本——nailgun agent.rb这个脚本收集了服务器硬件信息并提交给了nailgun通过REST API。

  部署程序是在用户配好了环境才开始启动的。Nailgun服务端会创建一个环境配置的JSON数据文件然后交给rabbitmq队列中。这个信息会被一个“任务执行者“——Astute接受。最终由它去发送配置任务给其他组件安装部署节点。

  Astute workers会去主动监听rabbitmq队列并接受消息。首先,一旦有提供环境的节点,astute会使用XML-RPC去给cobbler设置那些节点的配置并使用mcollective重启那些节点让cobbler去安装基础操作系统。Cobbler是一个部署系统能控制DHCP和TFTP服务并使用他们去网络启动那些节点以及部署系统根据用户的配置内容。

  Astute发送一个特殊的信息给rabbitmq队列包含着所有需要在托管节点的操作。在已经被引导启动的节点上mcollectvie服务端会去监听刚才发送消息,一旦有消息过来他们就会运行所需的代理的操作与给定的参数。Mcollective客户端只是一组ruby脚本程序。这些程序会去运行mcollective所需要的执行的操作。

2openstack环境部署

  各节点的基础操作系统安装完成后,Astute便开始部署OpenStack的服务了。

  1) 首先,Astute通过uploadfile agent将节点配置传至节点机器的/etc/astute.yaml文件,该文件包含所在节点的所有参数和配置信息;

  2)  然后,Astute通过puppetsync agent同步Puppet的modules和manifests到各节点。这个agent其实就是运行rsync命令,而rsyncd服务就在Master节点。

  3) 同步完成后,Astute通过puppet apply(Fuel没有使用puppet的master-agent的方式,而是直接在各节点apply的)命令执行Puppet manifest的site.pp。MCollective agent使用daemonize工具在后台执行puppet(不过在Fuel9.0部署后的节点上没有找到这个文件):

  daemonize puppet apply /etc/puppet/manifests/site.pp

  同时,Astute定期通过agent检查部署过程是否已经完成,并将进度通过RabbitMQ报告给Nailgun,从而可以在UI前端看到安装进度和实时的日志。

 部署过程启动后,Puppet读取astute.yaml文件作为fact,然后转化数据到$fuel_settings数据结构中,后者在部署过程中用来获取所有的配置信息。

  当puppet进程退出来之后无论成功还是返回一个错误,astute都会从节点得到一个报告文件并发送一个结果给nailgun。然后用户可以通过监控看到这个日志,无论是从fuel界面还是cli。

  Astute也可以做额外的部署操作,这要根据用户的环境配置,都可以添加无论部署是否已经完成:

  生成和上传SSH keys

  网络验证

  上传cirros镜像

  上传/etc/hosts文件给所有节点

  上传RadosGW map(ceph节点)

OpenStack之Fuel架构及其工作原理的更多相关文章

  1. 转载->CPU的内部架构和工作原理

    CPU的内部架构和工作原理 本片博客转自:http://www.cnblogs.com/onepixel/p/8724526.html  感谢博主分享! 内部架构 CPU 的根本任务就是执行指令,对计 ...

  2. CPU处理器架构和工作原理浅析

    CPU处理器架构和工作原理浅析 http://c.biancheng.net/view/3456.html 汇编语言是学习计算机如何工作的很好的工具,它需要我们具备计算机硬件的工作知识. 基本微机设计 ...

  3. 1、cpu架构和工作原理

    cpu架构和工作原理 计算机有5大基本组成部分,运算器,控制器,存储器,输入和输出.运算器和控制器封装到一起,加上寄存器组和cpu内部总线构成中央处理器(CPU).cpu的根本任务,就是执行指令,对计 ...

  4. CPU的内部架构和工作原理 (转,相当不错)

    http://blog.chinaunix.net/uid-23069658-id-3563960.html 一直以来,总以为CPU内部真是如当年学习<计算机组成原理>时书上所介绍的那样, ...

  5. CPU的内部架构和工作原理

    一直以来,总以为CPU内部真是如当年学习<计算机组成原理>时书上所介绍的那样,是各种逻辑门器件的组合.当看到纳米技术时就想,真的可以把那些器件做的那么小么?直到看了Intel CPU制作流 ...

  6. [基础架构]PeopleSoft工作原理(从浏览器发送请求开始)

    PeopleSoft体系结构是由几大组成部分构成,之前文章已经详细讲过,了解这几大组成部分是怎么协同工作的更为重要.在本文中将帮助您了解PeopleSoft的工作原理以及用户发送的请求是如何被解析以及 ...

  7. CPU的内部架构和工作原理-原文

    CPU从逻辑上可以划分成3个模块,分别是.和,这三部分由CPU内部总线连接起来.如下所示: 控制单元:控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register). ...

  8. Hive架构与工作原理

    组成及作用: 用户接口:ClientCLI(hive shell).JDBC/ODBC(java访问hive).WEBUI(浏览器访问hive) 元数据:Metastore 元数据包括:表名.表所属的 ...

  9. Linux运维---1.Ceph分布式存储架构及工作原理

    Ceph理论 Ceph 简介 Ceph 是一个开源项目,它提供软件定义的.统一的存储解决方案 .Ceph 是一个具有高性能.高度可伸缩性.可大规模扩展并且无单点故障的分布式存储系统 . Ceph 是软 ...

随机推荐

  1. mybatis入门系列二之输入与输出参数

    mybatis入门系列二之详解输入与输出参数   基础知识   mybatis规定mapp.xml中每一个SQL语句形式上只能有一个@parameterType和一个@resultType 1. 返回 ...

  2. 解决Linux启动redis时出现提示权限不够问题

    如果权限不够请使用一条命令 chmod 777  操作 参考:https://blog.csdn.net/zczzsq/article/details/8162339

  3. PHP内核之旅-5.强大的数组

    PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 PHP内核之旅-4.字符串 PHP内核之旅-5.强大的数组 PHP内核之旅-6.垃 ...

  4. 【Netty】(6) ---源码ServerBootstrap

    [Netty]6 ---源码ServerBootstrap 之前写了两篇与Bootstrap相关的文章,一篇是ServerBootstrap的父类,一篇是客户端Bootstrap类,博客地址: [Ne ...

  5. Harbor配置https认证

    Harbor配置https认证由于Harbor不附带任何证书,它默认使用HTTP来提供注册表请求.但是,强烈建议为任何生产环境启用安全性.因为测试使用,使用自签名证书: 1.创建CA证书 首先创建个目 ...

  6. Python爬虫入门教程 48-100 使用mitmdump抓取手机惠农APP-手机APP爬虫部分

    1. 爬取前的分析 mitmdump是mitmproxy的命令行接口,比Fiddler.Charles等工具方便的地方是它可以对接Python脚本. 有了它我们可以不用手动截获和分析HTTP请求和响应 ...

  7. ES 05 - 通过Kibana管理Elasticsearch集群服务

    目录 1 检查集群的健康状况 2 查看集群中的节点个数 3 查看集群中的索引 4 简单的索引操作 4.1 创建索引 4.2 删除索引 在本篇文章之前, 需要完成: ① 启动Elasticsearch服 ...

  8. 从PRISM开始学WPF(五)MVVM(一)ViewModel-更新至Prism7.1

    0x5 MVVM [7.1updated]截止到目前,我们看到7.1的更新主要在三个地方 PrismApplication ,并且不再使用Bootstrapper 更新了unity,现在使用prism ...

  9. Linux 命令行

    Linux 命令笔记 一.目录/文件 1.1 目录文件日常操作 . -> 当前目录 .. -> 上一级目录 .file/.dir -> 隐藏文件/文件夹 [ls] 查看指定目录文件 ...

  10. 对HTML5标签的认识(三)

    这篇随笔继续来认识HTML标签.这次随笔主要是对<table>标签的认识和最近我学习到的一些标签来和大家分享. 一.<table>标签 <table>标签的作用主要 ...