OpenStack 裸金属服务 Ironic 原理简介
疫情期间,在家办公,如何远程搞定公司机房的服务器重装系统?
服务器的远程管理
服务器放在机房里,正常运行的时候我们不会去直接接触,但是难免有个系统死机、硬件损坏等连不上的情况,或者需要重装系统的时候,就需要人去机房操作了。
但是,数据中心里的服务器往往成百上千,对环境的安全要求也很高,总是要靠人去处理这些事情很不方便也不安全。工作人员需要通过网络来操作和配置服务器,包括重启机器和重装系统。
如何在服务器关机的状态下通过网络让它开机?
显然,我们需要另外一个独立的系统,这个独立的系统在服务器都是通过一个控制器上来实现,即基板管理控制器(Baseboard Manager Controller,简称 BMC)。
我们还需要通过一个接口来和 BMC 交互,其中最广泛使用的就是 IPMI,全称是 Intelligent Platform Management Interface,智能平台管理接口。有的品牌服务器还有其它接口,例如 dell 的 iDRAC,HP 的 iLo,这些远程网络管理接口基本都是 IPMI 兼容。
因为这套管理系统和用户业务使用的系统独立,所以又称为带外(Out of Band)系统。
这里我们不用过多关注这些细节,只要知道平常我们说起 BMC 或 IPMI 或 带外系统 的时候,基本上就是在说同一个东西,就是远程管理服务器的接口。
网络远程管理服务器是裸金属管理的基础要求,实际上即使没有裸金属管理系统,日常运维中也会提供很大的便利。
IPMI 的基本功能
我们需要在服务器初次上电的时候,通过 BIOS 配置好 BMC 的地址,然后就可以通过浏览器直接访问了:
不同品牌的服务器页面外观会有较大差别,但是整体功能大同小异,主要就是查看服务器的硬件信息,当前状态等等。
这里有一个功能比较实用,就是 KVM 系统。注意,这里 KVM 是 Keyboard Video Mouse 的缩写,和虚拟化那个两码事。通过 KVM 我们可以远程和服务器直接交互,就和在机房里接了显示器和键盘后一样。
Linux KVM 虚拟化技术的缩写是 Kernel-based Virtual Machine
在 KVM 系统中可以挂载本地的 iso 镜像文件,完成操作系统的安装。不过这种交互式安装系统效率太低,在裸金属的管理中,我们是通过网络启动自动化完成系统的安装。
在 Linux 系统中还可以通过命令行工具 ipmitool 来执行相关操作:
PXE 网络启动
现在有了可以远程管理服务器的接口,但是上面通过上述的方法安装系统仍然是一件麻烦事,这时需要介绍一下 PXE。
PXE 全称 Pre-boot Execution Environment,是由 Intel 设计的协议,它可以使计算机通过网络启动。协议分为 client 和 server 两端,client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。
典型的 PXE 启动流程大致如下:
- PXE 启动开始通过 DHCP 获取 IP,所以需要有一台 DHCP 服务器
- 随着 DHCP 响应的除了 IP 还有 PXE 相关的配置信息,用来指示下一步去哪里
- 根据上一步得到的信息去某个地方,通常是 TFTP 服务器上请求下载 Linux 引导系统
- TFTP 服务器事先准备好包括 Linux 内核在内的文件供下载
- 进一步下载操作系统文件,包括自动应答文件
- 完成操作系统安装
注意,这里的第 5,6 步是传统物理服务器管理时的操作系统安装办法。裸金属云使用 iSCSI 挂载磁盘,直接把事先做好的镜像通过 dd 命令复制到磁盘上,免去了系统安装的过程,更加的高效省时。
看上去挺复杂的,实际上网上有很多相关的教程,可以尝试手动完成一遍。
Ironic 的架构
Ironic 系统就是一个典型的 OpenStack 服务架构,包含了一个 API 组件,和一个处理后台任务的 Conductor 组件,Conductor 通过各种 Driver 完成实际的工作。
它和 OpenStack 的其它核心组件需要完成一系列的交互,获取所需的资源:
从图中我们可以看出,Ironic 和 OpenStack 的核心模块 Nova、Neutron、Glance、Cinder 都有交互。
熟悉 OpenStack 的人看着上面的图应该很眼熟,这和创建虚机的架构几乎完全一样,就是把 VM 换成了 Bare Metal。所以,要想玩转 Ironic,需要对这些服务已经有一定程度掌握。
最终裸金属的部署流程如图所示:
实践示例
裸金属服务器在 OpenStack 系统中开始称之为 节点,有点类似于计算节点,区别在于计算节点是在上面创建虚拟机,而裸金属节点一旦被调度就完全占用。
节点只有管理员可以操作,因为此时它是属于计算资源。
用户在使用裸金属的时候体验完全和虚机没有两样,包括展示界面,启动方式等,部署成功的裸金属和虚拟机一样都叫 实例:
上面的裸金属实例,就是在疫情期间,在家里远程办公的情况下,在家部署完成。最终安装好的服务器是作为新的节点扩充到了另外一套 OpenStack 环境中了。如果没有 Ironic,而通过 VPN 挂载本地几 GB 大小的镜像文件,网络带宽将很难保证稳定的安装完系统。
\m/ ʕ•͡ᴥ•ʔ \m/