Ironic是一个用来发放裸金属服务器的Openstack工程, 它可以和Openstack其它服务组件集成,如Openstack鉴权Keystone, 计算服务Nova, 网络服务Neutron, 镜像服务Glance, 对象存储服务Swift。
基本架构
逻辑架构
裸金属服务宿主关键技术
PXE
PXE是Inter和Microsoft开发的,它能够让系统BIOS从网卡启动从而替代本地磁盘。启动过程是将系统加载到临时内存并被处理器可执行操作。简单说就是管理员可以从网络发放服务器和管理服务器
DHCP
不用多说,用来发现网络,获取IP地址
Network Bootstrap Program (NBP)
NBP相当于GRUB (GRand Unified Bootloader) 或者 LILO (LInux LOader) 这两种传统的本地启动方式. 就像从磁盘启动, NBP负责加载系统内核到内存从而可以从网络启动
Trivial File Transfer Protocol (TFTP)
TFGP意思是简单文件传输,用来在机器和本地环境之间自动传输配置文件或者启动文件。在PXE环境中,TFTP通过网络DHCP后下载NBP
Intelligent Platform Management Interface (IPMI)
IPMI简单说就是电源管理。给系统管理员在特定场景下使用的,比如不能发放状态通过网络给服务器下电操作等。
裸金属服务器发放步骤
发放步骤
-
通过nova api请求发放实例,经过消息队列和nova scheduler
-
Nova scheduler开始过滤并找到合适的计算结点。 Nova scheduler使用flavor的extra_specs信息,如‘cpu_arch’, ‘baremetal:deploy_kernel_id’, ‘baremetal:deploy_ramdisk_id’ 等去匹配目标物理结点
-
包含所有信息如什么镜像启动的生产任务开始. 它调用Nova compute中virt层的driver.spawn
-
裸金属结点的信息从数据库中取到,而且结点并预定。
-
ironic-conductor服务结点从glance获取镜像并下载到本地磁盘
- pxe_* 驱动包含所有镜像:下发使用的ramdisk和用户实例镜像
- agent_* 只有本地的deploy ramdisk
- 虚拟网络被挂载,Neutron API更新DHCP 网口以支持PXE和TFTP
- Nova中的ironic驱动通过ironic API为裸机结点提交发放请求到ironic conductor.
- PXE准备tftp加载
- IPMI驱动通过命令启用网络,给裸机上电操作
- DHCP加载deploy ramdisk, 下一步取决于具体使用的驱动。一种是condutor从iSCSI拷贝镜像到物理机(pxe_ 类型的驱动), 另一种是deploy ramdisk从临时地址下载镜像,镜像一般被swift等存储。
发放完成,ironic conductor会切换pxe启动到本地盘启动(service mode) - IPMI驱动重启裸金属结点。发放完成后结点被上电
- 更新裸金属结点信息,裸金属实例现在就为available状态了。
PXE启动和发放示例