云服务器带外管理的神兵利器:RedFish

云服务器带外管理的神兵利器:RedFish

如果大家用过阿里云的IaaS服务,一定对其丰富的管理界面印象深刻,尤其是Remote Console等等让管理一台虚拟机十分轻松。这些炫酷的特性背后是阿里的Hypervisor提供支持,并不需要真正的硬件。但在这一切的背后,那些运行这些虚拟机和Hypervisor本身的云服务器,它又是如何管理的呢?

大家心目中的云服务器管理也许是这样:

但请相信我,没有人愿意在云服务器机房里呆上超过一分钟。不说要不过冷,要不过热的温度,那要命的风扇啸叫会让你在几分钟内烦躁不堪。想象一下,你来到一个钢铁森林,Funcy的灯光闪烁。你正想欣赏这充满科技感的奇异景象,忽然同时有几千只蝉在你的四周聒噪,仿佛你是个大号母蝉,那声音就像有两架黑鹰直升飞机在你身边起飞。除非你的神经特别大条,一般人都会转身离开。曾经的服务器管理确实需要进行现场管理,当CPU死机,ssh不响应的时候,拿上笔记本,推上带有键鼠和蹩脚显示器的小车去到服务器机架下,现场调试。当然,别忘了你的防噪耳塞。

IPMI

1998年,IPMI的出现让这一切好了不少。由Intel和HP主推的IPMI标准,引入了单独的带外管理芯片BMC:

现在应用最广泛的BMC芯片

所谓的带外,是指在CPU这个主计算资源之外。有了这个ARM based芯片加持,和开放免费的IPMI标准,服务器的管理上了一个台阶。IPMI定义了一个所谓的服务器管理的最小集,并标准化了相关命令集合。IPMI消息采用统一格式,它的下层是透明的,可以架构在网络、串行/Moderm接口、IPMB(I2C)、KCS、SMIC、SMBus等不同接口上。如BIOS和BMC之间的IPMI消息是在KCS或者IPMB管道中,而远程控制Console则和BMC通过网络发送IPMI消息。

IPMI的引入极大的方便了服务器的远程管理。拿着一杯咖啡,坐在舒适的办公区管理服务器的时代来临了。尽管IPMI标准规定的功能十分有限,但各个服务器厂商则百花齐放,在其基础上扩展了很多实用的功能,包括Remote Console(KVM,注意不是虚拟机世界那个KVM),Remote Media等等新鲜实用的功能。我可以坐在我的cubicle里,把我的笔记本上插的U盘Remote Mount到某个服务器中,更新其中的BIOS或者操作系统,并通过KVM监视进度。太方便了。

但隐患已经埋下,这些繁杂的功能没有统一的标准,各家都不通用,而一个云服务厂商为了保障供应链往往会采购不同的品牌的服务器,从而造成了极大的混乱。IPMI更多的是单点的服务,扩展性(Scale Out)差。而这些仅仅是开始,在它发明的后很长时间,IPMI的管理网络是一个专有的网络,只有授权的用户才能访问,这导致其在开始设计的时候就对安全性考虑有所欠缺。在爆出安全漏洞后,IPMI2.0增加了增强身份认证(RAKP+、SHA-1等),但其后更有别的漏洞爆出。业界呼唤一种新的,重新设计的新标准,一劳永逸的解决这些问题,于是RedFish应运而生,IPMI也在2015年公布2.0 v1.1标准[1]后,不再更新,被RedFish永久代替,Intel也宣布不再维护,号召大家转战RedFish[2]

RedFish

RedFish标准由DMTF组织的SPMF论坛维护,官网[3]

它的初始提出者和IPMI初始提出者几乎一样,为Intel,HPE(HP拆分),Dell和Emerson。在标准订立之初,就设定了以下目标:

1.安全

2.高可扩展管理(Scalable)

3.人类可读数据界面(Human readable data)

4. 基于现有硬件可实现

第四条十分浅显易懂,也就是现在支持IPMI的BMC上,不需要(或者很小)硬件改动,就可以支持RedFish,也就是硬件兼容。安全性依赖TLS-Secured HTTP,也就是HTTPS来保证。高可扩展性通过定义所有的API为RESTful形式的API来完成。RESTREpresent State TransferREST),这个概念从Web API而来,相对于传统的SOAP API,RESTful的API定义很简单(如:POST,GET,PUT或DELETE),将对象的状态State,用JSON或XML格式在服务器和Client之间传递,这也是它的名字的由来。

RedFish定义了四种RESTFul的API:

来源:参考资料8

这些访问的数据格式都是JSON形态的数据。JSON(JavaScript Object Notation) 脱胎于JavaScript,不过这并不代表JSON无法使用于其他语言,它现在迅速成为一种现代数据格式。它比XML简单,也是实现人类可读数据界面的重要手段。关于它我就不展开了,网上资料很多。

光有RESTful API和JSON格式数据是不够的。RedFish还引入OData,定义了一组常见的 RESTful Schema,提供 API 之间的互操作性。如描述JSON有效负载的模式、URL约定、通用属性等等。

感兴趣的朋友可以阅读RedFish中文白皮书[4],想追究细节的朋友可以阅读RedFish Spec[5]

结论

自RedFish在2014年推出以来,几乎所有重要的大厂都已经开启了“红鱼”之旅。如Dell在其iRAC中加入了RedFish[6],SuperMicro引入了RedFish[7]。值得一提的是,国产之光的华为服务器的iBMC中也全面支持了RedFish[8],国产BIOS和BMC领军企业百敖软件自研BMC中也全面支持了RedFish[9]

最后要多说一句,RedFish和IPMI并不矛盾,很多现有BMC同时支持IPMI 2.0和RedFish,有些甚至在IPMI上包装了一层RedFish界面。全面淘汰IPMI还需时日,同时支持两者也保证了过渡的平滑性。最后的最后是个bonus,一段视频,请英语有基础的同学收看学习(纯英文,无字幕):

IPMI已死,RedFish当立https://www.zhihu.com/video/1251579463085322240

欢迎大家关注本专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog",在那里有最新的文章。

用微信扫描二维码加入UEFIBlog公众号

参考

  1. ^IPMI Spec https://www.intel.com/content/www/us/en/servers/ipmi/ipmi-technical-resources.html
  2. ^IPMI Home https://www.intel.com/content/www/us/en/products/docs/servers/ipmi/ipmi-home.html
  3. ^RedFish官网 https://redfish.dmtf.org/
  4. ^Red白皮书 https://www.dmtf.org/sites/default/files/DSP2044%20Redfish%20%E7%99%BD%E7%9A%AE%E4%B9%A6%201.0.0.pdf
  5. ^RedFish Spec https://www.dmtf.org/sites/default/files/standards/documents/DSP0266_1.10.0.pdf
  6. ^Dell RedFish http://cdn.tony-yin.site/Implementation%20of%20the%20DMTF%20Redfish%20API%20on%20Dell%20EMC%20PowerEdge%20Servers.pdf
  7. ^超微RedFish http://cdn.tony-yin.site/RedfishRefGuide.pdf
  8. ^华为RedFish https://support.huawei.com/view/PdfRead/EDOC1000126991/SUPE_DOC/k001/document.pdf
  9. ^百敖BMC http://www.byosoft.com.cn/gj5/index.htm
编辑于 06-03

文章被以下专栏收录

    从首次运用于Intel 安腾处理器,到第一版统一的可扩展固件接口(UEFI)规范出版,无论是在高性能服务器,移动设备或是深度嵌入式设备等,UEFI已在所有平台完全淘汰了BIOS。这里有关于UEFI的一切。