当今信息化时代,大量业务系统都运行在X86服务器上,而服务器常年累月运行,其电源、风扇、CPU逐渐老化,指不定哪天就工作异常甚至罢工。对于重要的行业如金融业,可能会造成重大损失。为了提前发现各种潜在硬件故障,需要实时监控服务器主要组件的健康状态,包括风扇转速、CPU和主板的温度、核心电压、电源模块的状态等。
各个厂家的主板和模块的实现方式是不同的,为了统一不同厂家的实现方法,1998年Intel、Dell、HP、NEC共同提出了IPMI 规范,用来远程监控温度、电压、风扇转速和其它管理工作。
IPMI主要的功能包括:
上述功能与服务器上的CPU、内存和操作系统没有关系,都是由IPMI 独立提供的。比如,服务器关机后,只要服务器上电,可以远程控制服务器开机。
IPMI 内部模块图如下。IPMI 核心部分为BMC(Baseboard Management Controller ,基板控制器)。
BMC是集成于服务器或其它设备的主板上的一个小型系统,该系统由一颗CPU(一般是ARM处理器)和专门的固件(可视为一个小型操作系统)组成。 BMC通常还带有小于32MB 的flash 和小于256MB的 RAM。
BMC是IPMI架构的核心。BMC的任务包括:
BMC的传感器监测内部物理变量,如温度、湿度、电源电压、风扇速度,通信参数和操作系统(OS)功能。如果这些变量中的任何一个发生偏离指定的限制,则会通知管理员。然后,该人可以通过远程控制采取纠正措施。受监视的设备可以根据需要重新启动或重新启动。通过这种方式,单个管理员可以同时远程管理多个服务器和其他设备,从而节省了网络的总体运营成本并有助于确保其可靠性。
BMC还可以与BIOS和OS交互,这样可以起到更好的平台管理作用,OS下有系统管理软件可以与BMC协同工作以达到更好的管理效果。例如:BIOS会发送查询风扇转速的IPMI命令给BMC,BMC收到命令后就会发送返回结果给BIOS,这样就能在BIOS的界面上看到风扇转速了。
IPMI/BMC对外表现形式是一个标准RJ45网口,可配置为拥有独立的 IP 地址。
OpenBMC 项目的目标是定义一个可在包括企业、高性能计算(HPC)、电信和云规模数据中心的异构系统中运行的开源软件堆栈。参与该项目的成员各自已经为创建开源基板管理控制器固件做出了重大贡献。
由于各种硬架构(例如从8位微控制器到32位ARM内核的SoC)以及硬件设计的秘密性质,BMC软件堆栈迄今为止都是封闭和不开放的。直到最近几年,为了能够更好地访问和控制BMC,微软、Intel、IBM、谷歌和Facebook这五家大公司联合起来开发开放/开源版本的BMC——OpenBMC
OpenBMC 项目的五大创始成员:
这五家中的三家都是大型OTT, 拥有多个超大规模云数据中心。一个数据中心有几十万台服务器的情况下,传统BMC的以下几个地方有不足之处:
OpenBMC功能:
OpenBMC 除了可用于服务器,亦可用于交换机,比如OCP Wedge系列白牌交换机:Wedge100-32X 、Wedge100BF-65X等。Wedge 系列交换机每次开机都会先进入OpenBMC界面:
Wedge系列交换机的“OpenBMC”软件模块:
对于大型用户而言,他们可能拥有超过百万台服务器,服务器品牌、型号众多。而这种大型客户都会研发统一的管理界面,需要对接不同服务器厂商的API。当基本IPMI功能已经不能满足超大规模环境时,如何以更便捷的方式调用服务器高级管理功能就是一个新的需求。下一代的IPMI随之出现了,即Redfish 。
Redfish 规范的第一个版本于2015年8月由分布式管理任务组( Distributed Management Task Force,DMTF )发布,是一个开放的行业标准规范,为可扩展平台硬件提供简单,现代和安全的管理功能。基于Redfish统一的管理接口规范普及之后,未来能够有效减少不同服务器硬件管理接口带来的大量适配和开发和测试工作。
下图为DMTF组织定义的Redfish资源示意图,我们可以看到3大分支——Systems(系统的逻辑视图) 、Chassis(系统的物理视图)和 Managers(BMC功能)。
Redfish依赖于RESTful(Representational State Transfer)编程接口,该接口允许使用多种编程语言进行简单查询。数据传输在HTTPS上,数据格式为JSON,支持Apps、GUI和脚本多种调用方式。HTTP容易被运维人员理解,并且拥有众所周知的安全模型。JSON是一种现代化数据格式,比XML要简单,普通人都能看懂。运维人员可以使用他们现有的 DevOps (运维/开发) 技能和工具链来执行系统管理任务。
Redfish中的URI符合RFC 3986 规范,以一个URL为例介绍URL的三个组成部分。
URL示例:https://mgmt.vendor.com/redfish/v1/Systems/1
以Dell PowerEdge服务器为例,iDRAC with Lifecycle Controller从v2.30.30.30版本已经开始支持Redfishv1.0,其操作模型就是Get、Post这样的REST方式。在Dell服务器Redfish root下面的分类包括System逻辑视图、Chassis全局清单、iDRAC操作、报警、iDRAC会话功能和运行任务服务,这与前面列出的Redfish通用资源定义是基本对应的。
除了服务器外,Redfish也在逐渐扩展对存储、网络方面的支持,Redfish很有可能成为未来数据中心管理领域的标准。
Redfish里有Profile的概念,Profile定义了服务器、交换机等设备的具体接口标准。
Redfish 目前主要实现都基于OpenBMC,当然也可基于其它BMC。最后列出几款支持Redfish 的 OCP 白牌设备:
参考资料:
https://www.opencompute.org/wiki/Hardware_Management/SpecsAndDesigns
《Implementation of the DMTF RedfishAPI on Dell EMC PowerEdge Servers》