写点什么

OpenStack 的“神秘组件” 裸金属 (Ironic) 管理使用

作者:统信软件
  • 2023-01-31
    北京
  • 本文字数:1947 字

    阅读完需:约 6 分钟

OpenStack 是目前全球部署最广泛的开源云基础架构,在 OpenStack 中提供的裸金属服务的项目是 Ironic。OpenStack 的官网主要介绍裸金属的用途在如下 5 方面:


(1)高性能计算;

(2)无法虚拟化的硬件设备的计算任务;

(3)数据库主机(一些数据库在 hypervisor 中运行不佳);

(4)单租户、专用硬件、安全性、可靠性以及其它需求;

(5)快速部署云基础设施。


其本质是在过去的几年中随着如电信工作负载的 5G,还有智能化的机器学习和人工智能,甚至是大数据,都在推动人们朝着越来越专业化的设备发展,数据中心和云环境统一建设模式。人们希望通过如 OpenStack Ironic 对物理硬件上实现自动化和控制,从而减少设备的空闲时间,降低运维人员对硬件安装部署时间。


为什么说 OpenStack Ironic 是一个神秘的组件:


原因一:Ironic 使用了 BMC(Baseboard Manager Controller)即基板管理控制器,独立的系统在服务器通过额外的硬件控制器和 PXE(Pre-boot Execution Environment)网络启动,直接把事先做好的操作系统磁盘镜像克隆到物理服务器上,免去了使用 Kickstart 自动安装系统的过程,高效省时;


原因二:Ironic 是通过 Nova 来调用的,是模拟 Nova 的一个虚拟化驱动,其创建和管理物理服务器资源是和虚拟化实例创建部署流程一样。


揭开 OpenStack Ironic 神秘的面纱,首先 Ironic 作为 OpenStack 一个独立的模块同样可与 keystone、nova、neutron、cinder 等组件交互,和部署虚拟机的调用流程是一样的,都是通过 Nova 的接口来执行创建实例,只是底层的 nova-scheduler 和 nova-compute 驱动不一样,虚拟机底层驱动采用的是虚拟化技术,而物理机采用的是 PXE 和 IPMI 技术。在 OpenStack 官网的架构时序图如下:


OpenStack Ironic 时序图(来源于 OpenStack 官网)


从时序图中可以看到 Ironic 组件的流程比较复杂,其主要是考虑与各个组件交互和错误异常的处理,其核心的逻辑流程可以简化为如下:用户通过 Nova API 和 Nova Scheduler 来启动一个裸金属实例,之后请求会通过 Ironic API,连接到 Ironic Conductor 服务,由 Ironic Conductor 负责和 Neutron 网络、Glance 镜像、Cinder 存储等组件交互确定安装服务器的系统、网络规划等,再到对应的 Driver,并把信息记录到 Ironic DB 数据库中,最后完成实例部署,为用户提供成功部署的物理机服务。


OpenStack Ironic 部署使用,Ironic 部署和 Nova 等常用的组件部署方式基本一样,主要分为如下流程:


(1)环境准备,如果实验环境最少需要准备两台物理服务器,一台作为 Ironic 控制节点也就是我们常说的 controller 节点,一台作为 Ironic Node 节点即裸金属的被管理节点,需要注意在 Node 节点需要具备并开启 BMC、PXE 功能,如果服务器有 RAID 需要先创建完成 RAID,同时确保网络 DHCP 能力;


(2)配置 Ironic 服务,主要是创建数据库,安装和配置 Ironic-api 和 Ironic-conductor 服务,配置 Nova、Neutron,详细部署可以参考 OpenStack Ironic 官网部署。Ironic-api 和 Ironic-conductor 服务可以部署在相同或不同主机。用户也可以添加新的 Ironic-conductor 主机以应对不断增长的 bare metal node。不过新增 Ironic-conductor 服务需要与现有 Ironic-conductor 保持相同版本。建议每个 Ironic-conductor 管理 100 个左右的 bare metal 裸机节点,以平衡较优的可靠性和性能;


(3)构建或使用现有镜像,部署一个裸机节点需要两组镜像:实施/部署镜像(deploy images)和用户镜像(user images)。Bare Metal Provisioning 使用 deploy images 来准备 bare metal(裸机) node,进行 clean 等操作,为 user images 的安装做准备。user images 被安装 bare metal node 上,供用户最终使用。deploy images 镜像包括.kernel 文件和 .initramfs 文件。可以直接下载 OpenStack 官方发布的镜像(建议初学者优先使用)https://tarballs.opendev.org/openstack/ironic-python-agent/dib/files/中下载。user images 镜像可以使用 disk-image-builder 工具来制作,不过目前此工具仅支持 centos/fedora/ubuntu/opensuse 等系统。如果想要构建 UOS 等镜像也可以使用虚拟机软件如 vrish,创建好虚拟机后,虚拟机的 qcow2 磁盘文件可作为 user images 使用;


(4)设置驱动程序,在正确配置所有服务之后,您应该用 Bare Metal 服务注册硬件,并确认 Compute 服务看到可用的硬件。一旦 bare metal 节点处于 available provisioning 状态,Compute 服务就可以看到。


OpenStack Ironic 在部署时可能会遇到各种问题,经过一段时间学习,主要的报错原因分成如下几类:


1)环境部署问题,例如 Ironic 和 Nova 服务建议单独部署在不同的节点上;


2)构建或使用现有镜像问题,主要是自己制作的镜像会出现 grub.efi 找不到问题;


3)配置问题,由于 OpenStack 官网对于 Ironic 文档更新会慢与版本更新,导致有些配置有问题,例如报'ServiceTokenAuthWrapper' object has no attribute '_discovery_cache'可修改 keystoneauth1/plugin.py。

用户头像

统信软件

关注

还未添加个人签名 2022-08-11 加入

还未添加个人简介

评论

发布
暂无评论
OpenStack的“神秘组件” 裸金属(Ironic)管理使用_OpenStack_统信软件_InfoQ写作社区