Bare Metal Service (裸金属服务器)架构

Ironic是一个用来发放裸金属服务器的Openstack工程, 它可以和Openstack其它服务组件集成,如Openstack鉴权Keystone, 计算服务Nova, 网络服务Neutron, 镜像服务Glance, 对象存储服务Swift。

基本架构

Conceptual Architecture

逻辑架构

Logical Architecture

裸金属服务宿主关键技术

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简单说就是电源管理。给系统管理员在特定场景下使用的,比如不能发放状态通过网络给服务器下电操作等。

裸金属服务器发放步骤

发放步骤

发放步骤

  1. 通过nova api请求发放实例,经过消息队列和nova scheduler

  2. Nova scheduler开始过滤并找到合适的计算结点。 Nova scheduler使用flavor的extra_specs信息,如‘cpu_arch’, ‘baremetal:deploy_kernel_id’, ‘baremetal:deploy_ramdisk_id’ 等去匹配目标物理结点

  3. 包含所有信息如什么镜像启动的生产任务开始. 它调用Nova compute中virt层的driver.spawn

  4. 裸金属结点的信息从数据库中取到,而且结点并预定。

  5. ironic-conductor服务结点从glance获取镜像并下载到本地磁盘

  • pxe_* 驱动包含所有镜像:下发使用的ramdisk和用户实例镜像
  • agent_* 只有本地的deploy ramdisk
  1. 虚拟网络被挂载,Neutron API更新DHCP 网口以支持PXE和TFTP
  2. Nova中的ironic驱动通过ironic API为裸机结点提交发放请求到ironic conductor.
  3. PXE准备tftp加载
  4. IPMI驱动通过命令启用网络,给裸机上电操作
  5. DHCP加载deploy ramdisk, 下一步取决于具体使用的驱动。一种是condutor从iSCSI拷贝镜像到物理机(pxe_ 类型的驱动), 另一种是deploy ramdisk从临时地址下载镜像,镜像一般被swift等存储。
    发放完成,ironic conductor会切换pxe启动到本地盘启动(service mode)
  6. IPMI驱动重启裸金属结点。发放完成后结点被上电
  7. 更新裸金属结点信息,裸金属实例现在就为available状态了。

PXE启动和发放示例
PXE boot