IPMI与BMC带外管理架构原理
IPMI(Intelligent Platform Management Interface)是服务器带外管理的工业标准协议,独立于主机操作系统和CPU运行。BMC(Baseboard Management Controller)是IPMI规范的硬件实现,一颗独立的ARM微控制器,直接焊接在服务器主板上,通过LPC或eSPI总线与主机通信。BMC即使服务器处于关机状态或操作系统崩溃仍可正常工作,这是带外管理的核心价值。
服务器带外管理架构中,BMC通过以下通道与外界通信:RJ45专用管理网口(推荐)、共享网口(NCSI)、串口(SOL)。管理网络必须与业务网络物理隔离,这是安全基线要求。
BMC初始网络配置与IPMItool操作
BMC初始配置通常需要通过物理串口或BIOS设置管理口IP。配置完成后即可通过ipmitool远程操作:
# 查看BMC网络配置
ipmitool lan print 1
# 配置BMC管理口IP(channel 1为通常的管理通道)
ipmitool lan set 1 ipaddr 192.168.1.100
ipmitool lan set 1 netmask 255.255.255.0
ipmitool lan set 1 defgw ipaddr 192.168.1.1
# 配置BMC管理用户
ipmitool user set name 2 admin
ipmitool user set password 2 "Str0ngP@ssw0rd"
ipmitool user enable 2
ipmitool channel setaccess 1 2 link=on ipmi=on callin=on privilege=4
权限级别说明:1=Callback,2=User,3=Operator,4=Administrator。生产环境建议创建Operator级别用户用于日常监控,Administrator仅限紧急运维使用。
IPMI传感器监控与告警阈值设置
BMC内置传感器可实时采集服务器温度、电压、风扇转速、功耗等指标。传感器数据是带外监控的基础:
# 列出所有传感器及其当前读数
ipmitool sensor list
# 查看传感器详细阈值
ipmitool sensor get "CPU1 Temp"
# 输出示例:
# Sensor ID : CPU1 Temp (0x1)
# Entity ID : 3.1 (Processor 1)
# Sensor Type : Temperature
# Readings : 62 (degrees C)
# Lower Non-Recoverable : na
# Lower Critical : 0.000
# Lower Non-Critical : na
# Upper Non-Critical : 85.000
# Upper Critical : 95.000
# Upper Non-Recoverable : 100.000
关键告警阈值配置需要根据服务器型号和散热设计调整。CPU温度告警通常设置为:Non-Critical 85°C、Critical 95°C、Non-Recoverable 105°C。硬盘温度告警:Non-Critical 50°C、Critical 55°C。修改阈值:
# 修改CPU温度告警阈值
ipmitool sensor thresh "CPU1 Temp" upper 85 95 105
IPMI事件日志与SEL告警推送
IPMI系统事件日志(SEL)记录硬件级别的事件,包括温度越限、风扇故障、电源异常、ECC内存纠错等。SEL是硬件故障排查的第一手信息源:
# 查看SEL日志
ipmitool sel list
# 查看SEL详细信息
ipmitool sel elist
# 清除SEL日志(谨慎操作)
ipmitool sel clear
# 配置SEL告警通过LAN告警转发
ipmitool lan alert set 1 1 ipaddr 192.168.1.200
ipmitool lan alert set 1 1 enable
ipmitool lan alert set 1 1 ack
将SEL告警集成到Prometheus监控体系,可通过ipmi_exporter实现:
# ipmi_exporter部署
docker run -d --name ipmi_exporter \
-p 9290:9290 \
-v /etc/ipmi_exporter:/config \
prometheuscommunity/ipmi-exporter \
--config.file=/config/config.yml
# config.yml
modules:
default:
collectors:
- bmc
- ipmi
- dcmi
- sel
collector_cmd:
bmc: sudo ipmitool bmc info
ipmi: sudo ipmitool sensor list
sel: sudo ipmitool sel list
对应的Prometheus告警规则:
groups:
- name: ipmi_alerts
rules:
- alert: ServerTemperatureCritical
expr: ipmi_temperature_celsius{state="critical"} > 0
for: 1m
labels:
severity: critical
annotations:
summary: "服务器温度达到Critical阈值"
description: "{{ $labels.sensor }} 当前温度 {{ $value }}°C"
- alert: FanSpeedTooLow
expr: ipmi_fan_speed_rpm < 500
for: 2m
labels:
severity: warning
annotations:
summary: "风扇转速异常偏低"
description: "{{ $labels.sensor }} 当前转速 {{ $value }} RPM"
远程电源控制与SOL串口重定向
带外管理最常用的场景之一是远程电源控制,当服务器操作系统无响应时可强制重启:
# 查看当前电源状态
ipmitool chassis status
# 远程开机
ipmitool chassis power on
# 远程强制重启(等同于按下电源按钮5秒)
ipmitool chassis power reset
# 远程关机(ACPI关机,需OS支持)
ipmitool chassis power soft
# 强制断电(硬关机,最后手段)
ipmitool chassis power off
SOL(Serial Over LAN)将服务器串口输出重定向到IPMI会话,当SSH不可达时可通过SOL进入终端:
# 激活SOL会话
ipmitool -I lanplus -H 192.168.1.100 -U admin -P "Str0ngP@ssw0rd" sol activate
# 退出SOL:按 ~. 断开连接
# 注意:SOL会话独占,同一时间仅允许一个活跃SOL连接
IPMI带外管理的安全加固包括:修改默认账户密码、禁用默认ADMIN账户、限制管理口访问IP范围、启用SSL/TLS加密通信、定期更新BMC固件修复已知漏洞。管理网络与业务网络隔离是底线要求,绝不应将BMC管理口暴露在公网。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/fu-wu-qi-ipmi-yu-bmc-dai-wai-guan-li-pei-zhi-ji-yuan-cheng/