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. 修改easyui的easyloader的默认css目录路径

    easyloader默认情况下会使用js文件所在目录下的themes文件夹中的css,这里改成项目自定义的css文件夹. 首先找到: var m=src.match(/easyloader\.js(\ ...

  2. 大数问题:求n的阶乘

    题目:求100! 这看起来是一个非常简答的问题,递归解之毫无压力 int func(int n){ if(n <= 1) return 1; else return n*func(n-1); } ...

  3. [svc]caffe安装笔记

    以前是word排版,加上没有些技术博客经验,相当的糟心. 现在想改,发现博文太多,找不到对应在那一页了,所以老的博文留着吧. caffe,这是是数据组需要做一些大数据模型的训练(深度学习), 要求 服 ...

  4. netty深入学习之中的一个: 入门篇

    netty深入学习之中的一个: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java ...

  5. 优雅得使用composer来安装各种PHP小工具

    Composer对php世界的影响是巨大的,使用composer来代替PEAR一定是大势所趋.当小伙伴们都还沉浸在composer带来的便利的时候,有没有想过如何更好的使用composer呢,网上大部 ...

  6. 关于ajax上传文件的流程 和选择图片立即显示

    关键点: 1.制作一个表单..然后把上传字段附加到该表单中 2.制作一个框架..把表单的_target的属性指向该框架. 3.提交表单.. jQuery.extend({ createUploadIf ...

  7. 将Java项目从maven迁移到gradle

    将Java项目从maven迁移到gradle 如何将一个java项目从maven迁移到gradle呢?gradle集成了一个很方便的插件:Build Init Plugin,使用这个插件可以很方便地创 ...

  8. electron 的跳转

    // 测试 正常跳转应该登录成功 // that.timer = setInterval(() => { that.$router.push('/mainChat');//路由跳转mainCha ...

  9. Ribbon重试机制与Hystrix熔断机制的配置问题1

    Ribbon超时与Hystrix超时问题,为了确保Ribbon重试的时候不被熔断,我们就需要让Hystrix的超时时间大于Ribbon的超时时间,否则Hystrix命令超时后,该命令直接熔断,重试机制 ...

  10. jar包调用jar包内部和外部的配置文件

    http://blog.csdn.net/lpftobetheone/article/details/32689467 **************************************** ...