V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wsgzao
V2EX  ›  程序员

Redfish 下一代数据中心管理标准详解和实践

  •  
  •   wsgzao ·
    wsgzao · 2020-04-29 10:36:05 +08:00 · 2329 次点击
    这是一个创建于 1651 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    纵观现在的服务器从以前闭源的管理系统,如 DELL 的 OpenManage 和 iDRAC,华为的 iBMC,惠普的 OneView 和 iLO,联想的 XClarity 和 XClarity Controller 嵌入式管理,IMM2 (收购自 IBM 的 SystemX PC Server 系列)等等,都在积极拥抱开源自动化工具如 Ansible 等开源软件,在这种情况下被称作下一代数据中心管理标准的 Redfish 出现了。

    更新历史

    2020 年 04 月 28 日 - 初稿

    阅读原文 - https://wsgzao.github.io/post/redfish/


    Redfish 简介

    DMTF’s Redfish® is a standard designed to deliver simple and secure management for converged, hybrid IT and the Software Defined Data Center (SDDC). Both human readable and machine capable, Redfish leverages common Internet and web services standards to expose information directly to the modern tool chain.

    https://www.dmtf.org/standards/redfish

    DMTFRedfish®是一个标准API,旨在为融合、混合IT和软件定义数据中心(SDDC)提供简单和安全管理。

    Redfish出现之前,现代数据中心环境中缺乏互操作管理标准。随着机构越来越青睐于大规模的解决方案,传统标准不足以成功管理大量简单的多节点服务器或混合基础设施。IPMI是一种较早的带外管理标准,仅限于“最小公共集”命令集(例如,开机 /关机 /重启、温度值、文本控制台等),由于供应商扩展在所有平台上并不常见,导致了客户常用的功能集减少。许多用户开发了自己的紧密集成工具,但是也不得不依赖带内管理软件。

    而对于企业级用户来说,设备都是上千台,其需要统一的管理界面,就要对接不同供应商的API。当基本IPMI功能已经不太好满足大规模Scale-out环境时,如何以更便捷的方式调用服务器高级管理功能就是一个新的需求。

    为了寻求一个基于广泛使用的工具来加快发展的现代接口,现如今,客户需要一个使用互联网和web服务环境中常见的协议、结构和安全模型定义的API

    Redfish可扩展平台管理APIThe Redfish Scalable Platforms Management API)是一种新的规范,其使用RESTful接口语义来访问定义在模型格式中的数据,用于执行带外系统管理 (out of band systems management)。其适用于大规模的服务器,从独立的服务器到机架式和刀片式的服务器环境,而且也同样适用于大规模的云环境。

    Redfish的第1版侧重于服务器,为IPMI-over-LAN提供了一个安全、多节点的替代品。随后的Redfish版本增加了对网络接口(例如NICCNAFC HBA)、PCIe交换、本地存储、NVDIMM、多功能适配器和可组合性以及固件更新服务、软件更新推送方法和安全特权映射的管理。此外,Redfish主机接口规范允许在操作系统上运行应用程序和工具,包括在启动前(固件)阶段与Redfish管理服务沟通。

    在定义Redfish标准时,协议与数据模型可分开并允许独立地修改。以模式为基础的数据模型是可伸缩和可扩展的,并且随着行业的发展,它将越来越具有人类可读性定义。

    Redfish 应用场景

    可能上面那一大段晦涩的介绍描述让你难以理解Redfish的用处,简而言之,如今大多数服务器厂商(比如SupermicroDell等等)都会自带IPMI系统,这个系统是独立装在主板芯片上,用户可以通过浏览器远程控制服务器,比如开关、装系统、进入服务器终端等等,而不用跑到机房忍受过高或过低的温度、忍受服务器嘈杂的声音、忍受蹩脚的显示器……

    传统的IPMI是带来了很多的便捷,但是当服务器规模变大后,单一服务器的管理已经满足不了需求,用户期望能够批量管理服务器,比如笔者想一次性给100个服务器安装系统,并且这100个服务器并不都是同一厂商,不同厂商的IPMI操作都不一样,比如DelliDRAC,你还需要专门学习iDRAC使用和各种对接,这会带来很多困扰。而Redfish标准的出现彻底改变这种情况,它是凌驾于所有服务器之上的一个标准,对服务器的基本操作都是统一的,并且是基于Restful API的方式实现。所以客户可以利用ansible等工具轻松实现自动化批量管理大规模服务器。

    服务器供应商都希望成为Redfish生态系统的一份子,但他们不想放弃对自家的服务器的管控机制。因此,他们会在Redfish规定范围之外,持续强化其API支持的功能,比如DellRedfish接口就要比Supermicro多很多,强大很多。

    为什么选择 REST 、HTTP 以及 JSON?

    Redfish 将语言支持与普遍存在的 REST 、HTTP 和 JSON 相结合,使 IT 管理任务能够与其他 IT 和 dev/ops 任务的技能集和工具链结合使用。随着云生态系统采用 REST,RESTful 协议正在迅速取代 SOAP,web API 接口也紧随其后。RESTful 协议比 SOAP 学习起来要快得多,而且它具有数据模式(因为 REST 严格来说不是协议)的简单性,可以直接映射到 HTTP 操作。

    HTTP 以其常用的安全模型和网络配置为管理员所熟知。

    JSON 正迅速成为现代数据格式。它本质上是人类可读的,比 XML 更简洁,拥有大量现代语言支持,是 web 服务 API 中增长最快的数据格式。

    对于嵌入式可管理性环境,JSON 还有一个额外的优势:大多数基板管理控制器( BMC )已经支持 web 服务器,通过浏览器来管理服务器已经非常普遍(通常通过 Java 脚本驱动的接口)。通过在 Redfish 中使用 JSON,可以在浏览器中直接查看来自 Redfish 服务的数据,从而确保数据和编程接口在语义和价值上是一致的。

    除了 REST 、HTTP 和 JSON 之外,Redfish 还采用常见的 OData v4 约定来描述模式、URL 约定和命名,以及 JSON 有效负载中常见属性的结构。越来越多的通用客户端库、应用程序和工具生态系统使用 Redfish 。

    它有多简单?下面显示了使用 Redfish 从服务器检索序列号的示例 Python 代码:此示例中的输出如下所示

    rawData= urllib.urlopen(‘http://192.168.1.135/redfish/v1/Systems/1’) jsonData=json.loads(rawData)print(jsonData[‘SerialNumber’])
    
    1A87CA442K
    

    Redfish 实践

    更多硬件厂商的 Redfish API 接口可以浏览参考文章

    The python-redfish project

    Python 环境 redfish 接口获取泰山服务器和鲲鹏 CPU 信息

    pip install python-redfish
    
    import redfish
     
    login_host="https://10.93.20.10"
    login_account="ADMIN"
    login_password="ADMIN"
    REDFISH_OBJ = redfish.redfish_client(base_url=login_host, username=login_account, password=login_password, default_prefix='/redfish/v1')
    REDFISH_OBJ.login(auth="session")
    response = REDFISH_OBJ.get("/redfish/v1/Systems/1", None)
    print(response)
    REDFISH_OBJ.logout()
    
    

    基于 Redfish 你可以获取详细的硬件资产信息与 CMDB 联动

    参考文章

    DMTF’s Redfish

    Redfish 融合、混合 IT 的简单和安全管理

    Redfish 白皮书

    Redfish:下一代数据中心管理标准

    Redfish 详解

    Supermicro Redfish Reference Guide

    Redfish API with Dell integrated Remote Access Controller

    华为服务器 iBMC Redfish 接口说明

    3 条回复    2020-04-30 10:48:19 +08:00
    fengshils
        1
    fengshils  
       2020-04-30 10:07:13 +08:00
    打赏 就是想知道 这个 api 各个品牌支持的怎么样,怕像 snmp 的那个 mib 一样不能成为通用标准
    wsgzao
        2
    wsgzao  
    OP
       2020-04-30 10:18:04 +08:00
    @fengshils #1 放心,这是我见过支持最全面的项目,国产主流的硬件厂商大部分都加入了,对数据中心管理真的算是福音
    fengshils
        3
    fengshils  
       2020-04-30 10:48:19 +08:00
    哈哈 好呀 我今天会测试几个机型 然后给你回复到下边 昨天我用这个测试了惠普的 ilo4,dl
    380 gen9 dl380p gen9 支持的还不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3060 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:45 · PVG 21:45 · LAX 05:45 · JFK 08:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.