Ironic , Openstack Baremetal Hypervisor,首发于UnitedStack Inc.

转自: http://ju.outofmemory.cn/entry/48769

如今Openstack在虚拟化管理部分已经很成熟了, 通过nova我们可以创建虚拟机, 虚拟磁盘, 管理电源状态,快速通过镜像启动虚拟机。但是在物理机管理上一直没有成熟的解决方案。

在这样的背景下Ironic诞生了,它可以解决物理机的添加,删除,电源管理和安装部署。Ironic最大的好处是提供了插件的机制让厂商可以开发自己的driver,这让它支持几乎所有的硬件。

Ironic的前世和今生

最早baremetal的概念出现在nova里,最早的blueprint是由USC/ISI以及 NTT-Docomo提出并实现的,其中NTT-Docomo是一家日本公司,而USC/ISI是一家研究HPC的教育机构。

物理机和虚拟机管理有很多地方非常相似,比如物理机和虚拟机都需要开机关机,安装部署,添加和删除,为了避免重复造轮子,他们在nova中实现了一个物理机的driver,这样把物理机管理做为计算资源管理的一个子集了。后来发现这样做有问题:

  1. 早期baremetal作为一个driver有自己的数据库,同一个项目中有两套数据库不合适。
  2. 在部署和管理baremetal的过程中有很多需要存储的信息是和部署管理虚拟机是不同的,通过nova api来获取这些信息比较尴尬, 把baremetal剥离出来有助于划清baremetal和虚拟机部署的界限。
  3. 有时候baremetal需要做一些比较特殊的行为,比如discovery, hardware  raid configuration, firmware updates, burn-in这些操作,它们不适合放在nova里面。比较好的办法是当完成这些操作的时候,向nova去注册信息,作为nova中的可用的资源,最后通过nova boot去调用这些资源。

经过很多次讨论,社区把bare metal分离出来了, 命名为用Ironic, 今后会通过nova调用用Ironic的api来实现对物理机资源的管理和控制。

具体的讨论内容如下:

Openstack Nova baremental 部署数据流

  1. 我们可以看到数据流从nova boot开始,当用户执行nova boot的时候nova api 会通过message queues来通知nova-scheduler,通常message queue是rabbitmq。
  2. nova-schedule收到baremetal boot请求的时候会去找是否有可用的Baremetal Node。
  3. 如果有可用node,nova-scheduler就会通过RPC call nova-compute,根据baremetal driver调用driver.spawn()来启动物理机。
  4. nova-compute通过baremetal database可以获取已经注册节点的信息。
  5. 通过刚才从数据库中得到的节点信息,nova-comupte在quantum中配置VIFs。
  6. 配置完VIFs,nova-compute开始从glance中下载镜像。
  7. 然后nova-compute把需要安装的机器对应的bootloader激活。
  8. 通过IPMI 启动电源。
  9. 开机以后通过PXE启动到bootloader镜像下,自动暴露ISCSI,然后直接通过nova-baremetal-deploy-helper把镜像写到机器上去。
  10. 重启机器。
  11. 更新机器状态。
  12. 更新数据库中目标物理机状态。

Openstack Ironic 部署数据流

  1. 我们可以看到数据流从nova boot开始,当用户执行nova boot的时候nova api 会通过message queues来通知nova-scheduler,通常message queue是rabbitmq。
  2. nova-schedule收到baremetal boot请求的时候会去找是否有可用的Baremetal Node。
  3. 如果有可用node,nova-scheduler就会通过RPC call nova-compute,根据baremetal driver调用driver.spawn()来启动物理机。
  4. nova-compute通过Ironic API 可以获取已经注册节点的信息。
  5. 通过刚才通过Ironic API获取到节点信息,nova-comupte在neutron中配置VIFs。
  6. 配置完VIFs,nova-compute通过刚才获取的信息开始从glance中下载镜像。
  7. Nova compute 通过Ironic API 发出一些请求来部署节点。
  8. 一部分请求通过Ironic Conductor来调用PXE Dirver中的deploy方法来激活bootloader。
  9. 另一部分请求通过 Ironic Conductor来调用IPMI Dirver让目标机器重启。
  10. 机器重启到Bootloader镜像通过client和Ironic-Deploy-Baremetal-Helper取得联系让helper通过ISCSI把镜像写到物理机上。
  11. 写完以后reboot目标物理机。
  12. 更新数据库中目标物理机状态。

Ironic中硬件异构是通过写多个dirver的方式去解决的,而且每一台节点后端可以有不同的driver。

大家可以看上图中Ironic中driver的架构,每一个driver可以实现4类功能。

  1. deploy:实现把镜像部署到物理机中。
  2. power:实现对物理机电源的管理。
  3. console:实现通过硬件直接得到物理机Console。
  4. vendor: 厂商自定义行为。

1-3的功能可以完成大家90%以上的常用需求,而4可以完成硬件定制物理机管理过程的需求。

Ironic社区现状和总结

从上面的分析可以看到Ironic的结构良好,设计优雅,并且通过厂商自定义driver的机制来解决一直以来业界没有解决的厂商硬件异构的问题,前景非常好。

由于开发时间比较短,因此到目前为止,项目尚未开发完成,目前整体还不可用,如果你是用户可能还需要等上一段时间,如果你是开发者,请加入社区,为社区贡献一份力量。http://docs.openstack.org/developer/ironic/

Ref

Ironic , Openstack Baremetal Hypervisor的更多相关文章

  1. openstack知识---hypervisor

    hypervisor Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务 ...

  2. ironic baremetal node rescue/unrescue mode

    环境ironic-api ironic-conductor,ironicclient均升级为Queens版本 官网说明API版本为1.38才支持rescue/unrescue,所以修改下openrc文 ...

  3. ironic简介

    转:https://doodu.gitbooks.io/openstack-ironic 简介 Bare Metal Servcie 裸机服务 -- 'bear betal' ironic简介 如今O ...

  4. Ironic 裸金属实例的部署流程

    目录 文章目录 目录 逻辑架构 部署架构 前提条件 部署流程 iSCSI Deploy UML PXE Deploy Driver Direct Deploy UML IPA Deploy Drive ...

  5. Ironic 安装和配置详解

    转自:http://amar266.blogspot.com/2014/12/ironic-installation-and-configuration.html 1.Install Openstac ...

  6. Openstack 10 云环境安装

    概述 资源规划 Undercloud Installation Overcloud Installation Trouble Shooting 附录 本指南介绍了如何使用 Red Hat OpenSt ...

  7. ironic的自动化脚本

    # -*- coding:utf-8 -*- import json import subprocess import os import time import random trunk_start ...

  8. How Ironic Inspector Works

    翻译官网概述. 操作员将节点注册为Ironic,例如 通过openstack baremetal CLI命令. 电源管理认证应该在这一步提供给Ironic. 如节点状态所述,节点被置于正确的自省状态. ...

  9. 注册 Ironic 裸金属节点并部署裸金属实例

    目录 文章目录 目录 前文列表 注册(Enrollment)裸机 创建裸金属实例的 Flavor 部署裸金属实例 日志分析 问题:Failed to create neutron ports for ...

随机推荐

  1. git版本控制文件提交到composer应用市场,并下载用市场的软件库

    要把github中的项目提交到composer中去,必须在github管理的项目中新建对应的composer.json文件, composer.json文件建立的方法 cmd定位到项目目录 compo ...

  2. 怎么修改Elasticsearch的对外ip 默认是本地IP 127.0.0.1

    //修改C:\Program Files\elasticsearch-2.1.1\config\elasticsearch.yml: network.bind_host: 172.16.1.86 pa ...

  3. C 多级指针

    C多级指针 *p                      -----> &p1 *(*p)                   ----->*(&p1) = &p ...

  4. WCF使用net.tcp绑定时的注意事项

    IIS Express没有net.tcp绑定功能,本地测试的话只能使用本机的IIS进行承载,并且需要相应的配置(参见上一篇文章). 算了,直接举一个配置例子吧,懒得写了... <system.s ...

  5. [na]802.1x协议无线认证协议&dot1x有线认证实验

    以前搞无线时候,会涉及到无线client接入方式的认证协议. 认证方式+加密方式+有线的dot1x. 注:以前都是doc粘贴到博客的,加上没写博客的习惯,因此会比较乱. EAP(扩展认证协议)是什么? ...

  6. 【Android】3.6 地图基本控制方法

    分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 文件名:Demo05MapControl.cs 简介:介绍平移和缩放地图,双指操作地图,监听地图点击 ...

  7. HTML5 CSS3 专题 :诱人的实例 3D旋转木马效果相冊

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/32964301 首先说明一下创意的出处:http://www.zhangxinxu ...

  8. 配置 logrotate 指导

    一般来说,日志是任何故障排除过程中非常重要的一部分,但这些日志会随着时间增长.在这种情况下,我们需要手动执行日志清理以回收空间,这是一件繁琐的管理任务.为了解决这个问题,我们可以在 Linux 中配置 ...

  9. html 中 input 控制输入百分比数值范围(0.0-100)

    通过正则表达式在HTML的input中控制百分数的输入值(0.0-100),并且控制小数点的输入位置和个数 方案一: <input type="text" id=percen ...

  10. C中的空宏定义,即只有一个参数

    空宏定义的测试代码 #include <stdio.h> #define D(x) int main() { D(printf("null macro")); retu ...