BMC(Redfish)
BMC(Baseboard Management Controller)是服务器主板上的一台小型计算机,使用独立的电源和 网络连接。即使主机关机、无响应或尚未安装操作系统,BMC 仍可能可访问。SSH 和 Monitor agent 依赖主机运行,因此这些情况下无法提供连接。
Server Box 通过 Redfish 连接 BMC。Redfish 是企业服务器使用的 HTTPS 管理 API。仅支持 IPMI 的 BMC 暂不支持;设计原因见BMC 工作原理。
- **电源状态:**即使 SSH 和 Monitor agent 不可用,也能查看主机是开机还是关机。
- **硬件传感器:**读取 BMC 上报的进风口和 CPU 温度、风扇转速及机箱功耗。
- **电源控制:**开机、请求操作系统关机或重启,或直接执行电源循环和强制断电。
BMC 用于补充 SSH,不会替代常规主机连接。同一台服务器可以同时配置 SSH、Monitor agent 和 BMC。
配置 BMC
Section titled “配置 BMC”- 打开服务器编辑页,找到 BMC(Redfish)。
- 填写 BMC 地址,不要填写主机操作系统的地址。例如
https://10.0.0.9;只需填写协议、 主机和端口,Redfish 路径由 App 补全。 - 选择已有 BMC 账户,或新建账户。
- 打开证书,将 fingerprint 与 BMC 网页界面显示的值核对。确认设备无误后再接受证书。
- 保存服务器。
保存后,服务器详情页会显示 BMC 卡片,其中包含 BMC 上报的状态和硬件电源控制。
BMC 账户
Section titled “BMC 账户”BMC 账户是独立记录,不需要在每台服务器中重复填写用户名和密码。一个机架中的多台服务器通常共用账户,因此修改一次账户即可更新所有引用它的服务器。
账户管理入口是 设置 → BMC 账户。每个账户会显示当前引用它的服务器数量;修改账户会影响所有这些服务器。
删除账户不会删除引用它的服务器。相关服务器会保留 BMC 地址,但不再拥有可用账户,编辑页会显示这一状态。
BMC 通常使用自签名证书,没有公共证书颁发机构为其背书。Server Box 不提供“忽略证书”选项,因为 BMC 具有电源控制权限,关闭证书验证会允许地址上的任意服务冒充 BMC。
App 使用类似 SSH host key 的首次使用信任机制:
- 首次连接时显示证书 fingerprint。
- 你核对 BMC 网页界面中的 fingerprint 后,确认是否信任。
- 后续连接只接受已保存的证书。
- fingerprint 变化时拒绝连接并显示新旧值,要求你重新核对。
BMC 重新生成证书或升级固件后,fingerprint 可能正常变化;中间人攻击也会表现为 fingerprint 变化。接受新证书前,请先确认 BMC 的身份。
部分 BMC 出厂证书已经过期。App 会提示证书过期,但仍允许你在确认设备身份后接受它。
电源操作分为经过操作系统的操作和直接作用于硬件的操作:
| 操作 | 经过操作系统 | 说明 |
|---|---|---|
| 关机 | 是 | 请求操作系统关机,需要操作系统正在运行 |
| 重启 | 是 | 请求操作系统重启 |
| 开机 | 否 | 对已关机的主机执行开机 |
| 强制断电 | 否 | 直接切断电源,未保存的数据会丢失,文件系统不会正常卸载 |
| 电源循环 | 否 | 先断电,再重新上电 |
优雅关机和优雅重启表示请求已接受,不代表操作已经完成。 App 发送请求后会轮询 BMC 上报的电源状态,而不会只相信 HTTP 成功响应。有些固件会接受请求并返回成功,但操作系统可能没有执行操作。
如果等待时间内电源状态没有变化,App 会显示“已接受”,而不是“已确认”。“已接受”表示 BMC 收到了请求;“已确认”表示 App 观察到了预期的状态变化。
不同 BMC 支持的 ResetType 不同。App 会读取设备声明的可用操作,只显示设备实际提供的操作;未声明的操作不会显示为按钮。
当前尚未实现:
- 事件日志
- 存储清单
- 启动项覆盖
- 虚拟介质
- 通过 Monitor agent 中继访问 BMC
如果 BMC 位于隔离的管理网络中,手机必须能够直接路由到 BMC。Monitor agent 当前不能作为 BMC 的代理。
App 还没有建模物理主机和虚拟机之间的从属关系。多个虚拟机可能指向同一台物理主机的 BMC;在任意虚拟机页面执行电源操作,都会影响整台物理主机及其所有虚拟机,读取到的电源状态也是物理主机的状态。请只在物理主机上配置 BMC。