简介
现在Openstack在虚拟化管理方面已经非常成熟。借助nova,我们可以创建虚拟机、枚举虚拟设备、管理电源状态和安装操作系统。但是,有时虚拟机无法满足要求。例如,以下情况需要直接使用物理机:
高性能计算集群。
计算任务需要访问无法虚拟化的硬件设备。
数据库主机(一些数据库在虚拟机管理程序中效率低下)。
单租户、专用硬件、安全性、可靠性和其他控制要求。
快速部署云基础设施。
然而,在物理机管理方面还没有成熟的解决方案。在这种背景下,讽刺(Articular,裸机预配置)应运而生,它可以解决物理机的添加、删除、电源管理、安装和部署等问题。讽刺提供了一系列常用的驱动,并为厂商开发自己的驱动提供了插件机制,使得它几乎支持所有的硬件。
部署物理机的概念和nova部署虚拟机的概念是一样的,都是通过创建虚拟机来触发的,只是底层nova-scheduler和nova- compute驱动方式不同。虚拟机底层驱动采用libvirt的虚拟化技术,物理机采用iron技术。铁可以看作是一套Hypervisor API,功能类似libvirt。
裸金属的概念最早出现在nova。物理机和虚拟机管理有很多相似之处。例如,物理机和虚拟机都需要通电和断电、安装和部署、添加和删除。为了避免重复造轮,他们在nova中实现了一个物理机驱动,从而把物理机管理作为计算资源管理的一个子集。后来,我发现这个有个问题:
早期的时候,baremetal作为一个驱动,有自己的数据库,同一个项目的两个数据库不适合。
在部署和管理裸机的过程中,有大量的信息需要存储,这与部署和管理虚拟机是不同的。很难通过nova api获得这些信息。剥离裸机有助于在裸机和虚拟机部署之间划清界限。
有时候裸机需要做一些特殊的动作,比如发现,硬件raid配置,固件更新,预烧,这些都不适合nova。更好的方法是在这些操作完成后,在nova中注册nova信息作为可用资源,最后通过nova boot调用这些资源。
经过多次讨论,社区开始分离裸机,命名为Iron。它从冰室版进入孵化项目,在朱诺版与Nova融合。完成项目的毕业评审后,正式以Kilo版本集成到openstack项目中。未来将通过nova调用Iron api,实现对物理机资源的管理和控制。
传统的虚拟机管理程序通常包括创建虚拟机、枚举虚拟设备、管理电源、加载操作系统等功能。相应的,讽刺可以看作是一个虚拟机管理程序API结合多个驱动来操作物理机提供类似的操作,所以讽刺可以看作是Nova使用的一个虚拟机管理程序驱动。
结构
项目构成
铁:包括铁-api和铁-导体过程。
python-ironic client:python clinet和CLI .
Iron-Python-agent:在部署ramdisk中运行的Python程序,用于执行一系列部署动作。
Pyghmi:一个python IPMI库,可以代替IPMItool。
讽刺-检查员:硬件自检工具。
铁库:铁的一般库函数。
讽刺-网络客户端:网络客户端。
Iron-ui:铁的地平线插件。
Bifrost:一组只运行iron的Ansible脚本。
概念架构(与其他组件的关系)
逻辑架构(与其他组件的调用关系)
讽刺性服务由以下组件组成。
讽刺API,RESTful API服务,管理员和其他服务通过它与iron进行交互。
反讽导体,完成铁服大部分工作,通过API对外开放功能,通过RPC与反讽API交互;负责与其他组件的交互。
驱动,真正管理物理机的模块,通过一系列的驱动支持不同的硬件。
用于存储资源信息的数据库。
信息排队
部署架构
云平台管理员可以使用RESTful API注册硬件,制定硬件属性,如MAC地址、IPMI证书等。您可以打开多个API服务实例。
由于讽刺导体是唯一需要访问数据层和IPMI控制层的服务,出于安全原因,最好将导体服务放在独立的主机上。为了支持各种驱动程序和管理故障迁移,可以有多个导体实例,每个导体实例可以运行多个驱动程序。
信息发送
每个指挥实例都希望在启动时向数据库注册自己。注册的信息包括该实例支持的驱动程序列表,并定期更新自己记录的时间戳,这使得所有服务知道哪些导体和驱动程序可用。
根据它自己的驱动程序,物理机器使用一致的哈希算法映射到一组导体上。部署任务通过RPC从应用编程接口层分发到适当的指挥中心。当指挥实例加入或退出集群时,物理机会被重新映射到不同的指挥,这将触发驱动程序的各种操作,例如接管或清理操作。
预启动执行环境(PXE)
预启动执行环境。PXE是目前主流的无盘引导技术,可以使计算机通过网络引导,而不是本地硬盘、光盘等设备。使用PXE系统安装需要在主机上安装PXE支持的网卡。然而,支持PXE的只读存储器芯片通常嵌入在当前的网卡中。当计算机启动时,基本输入输出系统将首先调用PXE客户端到内存中执行。PXE客户端加载到内存后,同时具有DHCP客户端和TFTP客户端的功能。DHCP客户端将请求DHCP服务器为将要安装该系统的主机分配ip地址,然后PXE客户端将下载远程文件,通过TFTP本地运行。
http://blog.csdn.net/miss_acha/article/details/50373040
https://technet.microsoft.com/zh-cn/library/cc732649
动态主机配置协议
动态主机配置协议是一种标准的网络协议,用于动态分配网络配置参数,如网络端口的IP地址。
http://network.51cto.com/art/201406/441752.htm
网络引导程序(NBP)
网络引导程序,NBP,与本地启动时通常使用的GRUB或LILO相同。和硬件驱动环境的启动程序一样,NBP负责将操作系统内核下载到内存中,然后通过网络启动系统。
普通文件传输协议(TFTP)
在PXE环境下,TFTP是用来通过网络下载NBP使用的DHCP服务器的信息。
智能平台管理界面(IPMI)
IPMI(Intelligent Platform M anagement Interface)是一个开放的标准硬件管理接口规范,它使用嵌入式管理子系统进行通信,而不依赖于主机操作系统,这使得即使操作系统没有响应或加载,也可以打开和关闭以及提取信息。讽刺可以使用这项技术远程打开和关闭裸机或执行其他操作,而不是依赖物理交换机或操作系统。
关于讽刺中的一些服务
讽刺api:接收REST请求并将其发送给讽刺指挥。
反光板:接收反光板的请求,创建、更新和删除节点,通过IPMI和ssh切换电源,或者部署裸机。
铁-python-agent:裸机服务启动时,如果从PXE启动,机器可以从远程位置拉一个最低版本的Linux内核或ramdisk,但是最低版本的Linux内核功能较弱。如果是ramdisk,可以在上面安装各种服务(也可以配置RAID),包括iron-python-agent。ramdisk中的铁-python-agent提供了与讽刺导体相同的服务。
讽刺的命令行界面
应用程序接口
依赖于节点(节点)
添加、删除和修改节点(列表、搜索、创建、更新和删除)
合法性检查
设置和清除维护状态
设置和获取引导设备
获取节点的当前综合信息,包括电源、配置、raid、控制台等。
改变电源状态
更改节点供应状态(管理、提供、检查、清理、活动、重建、删除(已删除)、中止)
设置磁盘阵列
开始,停止,获得控制台
检查并调用制造商定制的方法(直通方法)
端口相关(端口)
添加、删除和删除物理端口(列出、搜索、创建、更新和删除),创建新端口时,应指定端口的物理地址(通常是媒体访问控制地址)以与节点绑定。
检查连接到节点的端口
驾驶员相关(驾驶员)
枚举所有驱动程序
查看驱动程序的详细信息和属性
查看并致电制造商的司机
机箱(机箱,一组节点)
添加、删除和检查机箱
此资源类型用于对节点进行分组。目前只具有枚举一组节点的功能。我不赞成用这种类型,以后可能会去掉。
导体
iron-Conductor是iron中最重要的模块,通过iron-API提供外部功能,通过RPC与iron-API通信,负责大部分工作,包括与中子通信为物理机配置网络信息,与switch通信获取图像。iron-Conductor是iron中最重要的模块,通过iron-API提供外部功能,通过RPC与iron-API通信,负责大部分工作,包括与中子通信为物理机配置网络信息,与switch通信获取图像,与煤渣和Swift通信为物理机提供存储。用于储存。
同时控制物理机状态的变化过程。
在高可用性方面,导体采用一致的哈希算法,确保在添加和退出导体节点时,裸机节点不受影响。
分贝
MySQL用来存储物理机和驱动的状态信息,可以用其他数据库代替。
司机
驱动程序是真正操作物理机器的模块。讽刺的驱动是以插件的形式设计的,厂商可以实现自己的驱动,为自己的设备提供特殊的功能。要实现自己的驱动,只需要实现几个相关的方法。
参考文献:
https://wiki.openstack.org/wiki/Ironic
http://www.cnblogs.com/menkeyi/p/6063547.html
1.《ironic ironic架构及相关技术简介》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《ironic ironic架构及相关技术简介》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1192291.html