13

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

 3 years ago
source link: https://zhuanlan.zhihu.com/p/145587345
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

中央处理器 (CPU)话题下的优秀回答者

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

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

v2-909d6f94a1ce891ce2aefe4107215548_720w.jpg

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

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。在标准订立之初,就设定了以下目标:

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当立

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK