1.IPMI及其原理介绍
1.1 ipmi简介
       IPMI是智能型平台管理接口(Intelligent Platform Management Interface)。用户可以利用IPMI监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应以及机箱入侵等。IPMI最大的优势在于它是独立于CPU,BIOS和OS的,所以用户无论在开机还是关机的状态下,只要接通电源就可以实现对服务器的监控。IPMI是一种规范的标准,由美国英特尔、惠普(Hewlett-Packard)、NEC、美国戴尔电脑和SuperMicro等公司制定。最新的版本是IPMI2.0.
1.2 ipmi可以实现的主要功能
1. 可以在服务器通电(没有启动操作系统)情况下,对它进行远程管理:开机,关机,重启。
2. 基于文本的控制台重定向,可以远程查看和修改bios设置,系统启动过程,登入系统等。
3. 可以远程通过sol连接服务器,解决ssh服务无法访问,远程安装系统,查看系统启动故障等问题。
4. 故障日志记录和 SNMP 警报发送,访问系统事件日志 (System Event Log ,SEL) 和传感器状况。
:目前,我们公司线上主要要求实现远程重启和远程屏幕两个功能。
1.3 ipmi进行远程管理的必要条件
(1) 服务器硬件本身提供对 IPMI的支持。
目前惠普、戴尔和 NEC 等大多数厂商的服务器都支持 IPMI 2.0但并不是所有服务器都支持,所以应该先通过产品手册或在 BIOS 中确定服务器是否支持 IPMI,也就是说服务器在主板上要具有 BMC 等嵌入式的管理微控制器。
(2)操作系统提供相应的 IPMI驱动。
通过操作系统监控服务器自身的 IPMI信息时需要系统内核提供相应的支持,linux 系统通过内核对 OpenIPMI(IPMI驱动)的支持来提供对 IPMI的系统接口。
(3) IPMI管理工具。
本文选择的是 Linux 下的命令行方式的 IPMI平台管理工具 ipmitool。
1.4 New for IPMI v2.0
新版本的ipmi增加了一些新特性,以下列出几个比较重要的功能:
1.Enhanced Authentication----RMCP+,key, sessions, au user //认证协议由RMCP到RMCP+,采用安全哈希算法
2.VLAN Support ---IEEE 802.1q //vlan功能,局域网环境更加安全和方便管理
3.Serial Over LAN (SOL) // 串口信息通过lan通信,实现远程屏幕功能
4.Firmware Firewall //类似防火墙特性,可以设置一些安全策略,防止误操作之类
1.5一些名词概念
BMC:IPMI管理平台的核心控制器
IPMB:IPMB 总线上连接着各个管理控制器,分别执行不同功能
 ICMB: 在IPMB总线上,连接着一个ICMB桥,通过ICMB可以和远程的另一个管理平台通信
SDR: (Sensor Data Record) 用于保存传感器的具体配置信息,如告警门限、事件触发是否允许等配置数据
 SEL: (Sensor Event Log) 用于保存传感器产生的告警事件等数据
 SMBus: BMC通过芯片上一对SMBus接口连接网络。
1.6 IPMI管理方式
IPMI管理的两种方式:本地管理和远程管理
本地管理,是由应用层的工具,如ipmitool发送指令通过OS内核提供的接口(如下图1.1的①)和bmc进行通信。
           应用软件-------------------------->OS内核接口-------------------------->bmc
远程管理,则是通过网络(如下图1.1的②)以udp报文形式与远端服务器bmc进行通信。Dell很多服务器默认是从udp消息是从eth0发出。多网卡情况下,其他网卡能否进行通信根据服务器型号而异,需要进行测试。多网卡绑定的情况则要求每个独立的网卡都可以与远端的bmc通信。
      (监控端)应用软件---------------->网卡(udp)----------------->bmc(被监控端)
IPMI远程管理那些事~_ipmi 远程管理
图1.1主板上IPMI通信结构图
结合图1.1,了解一些通信过程:
ØBMC是核心,所以都命令都是先发送到BMC再执行。
ØIPMB总线连接着各个管理控制器,执行不同功能,总线上还连着一些I2C器件,作为传感器接口,让系统软件能通过IPMB来读取传感器的数据。
ØSDR、SEL、FRU(Field Replacement Unit)物理实体可以是做在芯片内的存储体,也可以是外挂的E2PROM。
Ø通过BMC芯片上一对SMBus接口连接网络,用户可通过网络访问实现对远程服务器接管的带外管理(Out-of-band)功能,例如远程接管服务器(Pre-OS),在客户端实现对远程服务器的完全接管。
Ø通过RS-232接口连接Modem,在远程服务器宕机情况下,用户可以通过拨号访问获取SDR、SEL数据,分析诊断故障原因。
ØBMC通过IPMB接口访问模组风扇背板、电源背板等上的SMC,实现对各种背板的温度电压风扇转速等关键参数管理。
ØBMC通过系统接口(多用SMIC:Server Management Interface Chip),实现IPMI消息传输机制,控制LCD显示和实现上层软件与底层F/W通信,实现告警、数据采集。
2.IPMI 管理
2.1 ipmi驱动工具和测试环境
除了服务器本身支持IPMI之外,还需要额外安装ipmi驱动和工具,如下所示:
ipmitool-1.8.11-1.x86_64.rpm OpenIPMI-2.0.16-7.el5.x86_64.rpm OpenIPMI-libs-2.0.16-7.el5.x86_64.rpm
:两个Open*.rpm 主要是系统接口的驱动
Ipmitool*.rpm 作为应用层软件,发送指令获取机器信息
测试之前,Bios需要进行一些设置,具体步骤如下:
1. 开启远程管理和屏幕功能 ( ipmi over lan , serial over lan )
2. 串口重定向,默认是没有定向。(根据产品型号,serial redirect选择性的设置为串口1或串口2,波特率等参数)
3. 开启BMC 的网络功能,( nic enable/share, bmc的ip ,网关,账号等参数可以直接设置或用ipmitool 进行设置)
注:不同型号的机器,修改的方式不一致, 比如R410开机ctrl+e,R620则进入 idrac 卡里修改,但设置的参数一致。
     文档里的环境,161作为监控端,180.34作为被监控端,在同一个局域网环境中
2.2 ipmitool 命令
ipmitool本地监控使用命令: ipmitool –I open command,其中-I open表示使用OpenIPMI接口,常用command有以下项:
a) raw:发送一个原始的IPMI请求,并且打印回复信息。
b) Lan:配置网络(lan)信道(channel)
c) chassis :查看底盘的状态和设置电源
d) event:向BMC发送一个已经定义的事件(event),可用于测试配置的SNMP是否成功
e) mc:查看MC(Management Contollor)状态和各种允许的项
f) sdr:打印传感器仓库中的所有监控项和从传感器读取到的值。
g) Sensor:打印详细的传感器信息。
h) Fru:打印内建的Field Replaceable Unit (FRU)信息
i) Sel:打印 System Event Log (SEL)      
j) Pef:设置 Platform Event Filtering (PEF),事件过滤平台用于在监控系统发现有event时候,用PEF中的策略进行事件过滤,然后看是否需要报警。
k) Sol/isol:用于配置通过串口的Lan进行监控
: ipmitool 工具详细命令参数很多,此处不一一列举。详细请看ipmitool命令帮助文档
2.3用IPMI管理工具对服务器进行管理
(1)ipmi基本信息确认
  1. [root@18034 ~]# service ipmi start  // 先启动ipmi  

  2. Starting ipmi drivers:                                     [确定]  

  3. [root@18034 ~]# ipmitool -I open mc info  // 先查看下ipmi版本,是2.0没错.  

  4. Device ID                 : 32  

  5. Device Revision           : 0  

  6. Firmware Revision         : 1.10  

  7. IPMI Version              : 2.0  

  8. Manufacturer ID           : 674  

  9. Manufacturer Name         : DELL Inc  

  10. Product ID                : 256 (0x0100)  

  11. [root@18034 ~]# ipmitool -I open channel info 1  // 查看通道信息,dell机型基本默认采用channel1,其它机型则不一定.一般在1-7之间。  

  12. Channel 0x1 info:  

  13.  Channel Medium Type   : 802.3 LAN     // 表示可以使用的通道,channel 1  

  14.  Channel Protocol Type : IPMB-1.0  

  15.  Session Support       : multi-session  

  16.  Active Session Count : 0  

  17.  Protocol Vendor ID    : 7154  

  18.  Volatile(active) Settings  

  19.     Alerting            : disabled  

  20.     Per-message Auth    : disabled  

  21. UserLevel Auth     : enabled  

  22.     Access Mode         : disabled  

  23.  Non-Volatile Settings  

  24.     Alerting            : disabled  

  25.     Per-message Auth    : disabled  

  26. UserLevel Auth     : enabled  

  27. Access Mode         : disabled  

  28. [root@18034 ~]# ipmitool -I open channel info 2   // 看看其它channel?,就没有802.3 lan类型  

  29. Channel 0x2 info:  

  30.  Channel Medium Type   : Serial/Modem  

  31.  Channel Protocol Type : IPMB-1.0  

  32.  Session Support       : single-session  

  33.  Active Session Count : 0  

  34.  Protocol Vendor ID    : 7154  

(2)设置BMC ip,作为远程管理ip
  1. [root@18034 ~]# ipmitool lan set 1 ipaddr 192.168.180.201   // 1 代表channel   

  2. Setting LAN IP Address to 192.168.180.201  

  3. [root@18034 ~]# ipmitool lan set 1 netmask 255.255.255.0  

  4. Setting LAN Subnet Mask to 255.255.255.0  

  5. [root@18034 ~]# ipmitool lan set 1 defgw ipaddr 192.168.180.34  

  6. Setting LAN Default Gateway IP to 192.168.180.34  

:IP网段可选,不一定跟主机一个网段,只要监控端和被监控端可通信,监控端有和被监控端bmc同一网段ip即可。网关可设可不设,若设置则设置成物理网卡ip,一般是eth0ip
  1. [root@18034 ~]# ipmitool lan print 1   // 查看channel 1的配置信息  

  2. Setin Progress         : Set Complete  

  3. Auth Type Support       : NONE MD2 MD5 PASSWORD

  4. Auth Type Enable        : Callback : MD2 MD5   

  5.                         : User     : MD2 MD5   

  6.                         : Operator : MD2 MD5   

  7.                         : Admin    : MD2 MD5   

  8.                         : OEM      : MD2 MD5   

  9. IP Address Source       : Static Address  

  10. IP Address              : 192.168.180.201  

  11. Subnet Mask             : 255.255.255.0  

  12. MAC Address             : 00:24:e8:74:0b:ad  

  13. SNMP Community String   : public

  14. IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10  

  15. Default Gateway IP      : 192.168.180.34  

  16. Default Gateway MAC     : 00:00:00:00:00:00  

  17. Backup Gateway IP       : 0.0.0.0  

  18. Backup Gateway MAC      : 00:00:00:00:00:00  

  19. 802.1q VLAN ID          : Disabled  

  20. 802.1q VLAN Priority    : 0  

  21. RMCP+ Cipher Suites     : 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14  

  22. Cipher Suite Priv Max   : aaaaaaaaaaaaaaa  

  23.                         :     X=Cipher Suite Unused  

  24.                         :     c=CALLBACK  

  25.                         :     u=USER

  26.                         :     o=OPERATOR  

  27.                         :     a=ADMIN  

  28.                         :     O=OEM  

(3)创建用户名和密码,并给管理权限
  1. [root@18034 ~]# ipmitool usersetname 2 root  //创建用户  

  2. [root@18034 ~]# ipmitool usersetpassword 2 opendoor //创建密码  

  3. [root@18034 ~]# ipmitool channel setaccess 1 2 callin=on ipi=on link=on privilege=4  //开权限   

  4. [root@18034 ~]# ipmitool user list 1   // 查看chanenel 1的用户信息  

  5. ID Name           Callin Link Auth       IPMI Msg   Channel Priv Limit  

  6. 2   root             truetruetrue       ADMINISTRATOR  

注:dell很多机型user list 里面 默认 id 1 的用户默认为空,或者不能设置。
    通常设置id 2 为root 用户,其他厂商机型 id 2用户可能已经设置如 Admin,并且不能更改,这时只能用给定的账号进行远程管理,或者id 3 再创建账号,同上。
 如果是用id 2 之外,如id 3等账号,在进行sol远程屏幕管理是,需要再敲一条指令,激活sol功能,不然会提示错误。
ipmitool sol payload enable 1 3// 1是channel 信息,3 是user id
2.4ipmitool获取远程服务器信息
(1)过程概述
         ipmitool命令需要通过相应的interface来访问BMC,在本地获取信息时候采用的是-I open,即为OpenIPMI接口,IPMItool命令包含的接口有open、lan、lanplus。其中open是指的是OpenIPMI与BMC通信,lan是通过Ethernet LAN request/resoponse消息,消息具有一个IPMI session头和RMCP头。采用IPV4的udp协议与BMC通信。UDP的数据段包含了IPMI 。IPMI使用Remote Management Control Protocol (RMCP) 版本1支持操作系统关闭(pre-OS和OS-absent),RMCP把把数据发送到UDP的623端口。像lan接口一样,lanplus同样使用Ethernet LAN的UDP协议与BMC通信,但是lanplus使用rmcp+协议(在IPMIV2.0中描述)来通信,RMCP+允许使用改经的认证方式和数据完整性检查。
Open端口用于本地监控系统使用的,lan/lanplus通过网络进行远程监控。远程获取服务器监控信息时,需要加上远程服务器的地址, 使用以下的命令格式:
ipmitool -H 192.168.180.201 -U root -P opendoor -I lan command 其中-H表示后面跟的是服务器的地址,-U表示后面跟着用户名,-P表示后面跟着用户密码,command与本地获取信息相同
(2)远程重启
  1. [root@161 ~]# ipmitool -I open -H 192.168.180.201 -U root -P opendoorc power status //检查远程服务器bmc 状态  

  2. Chassis Power ison

  3. [root@161 ~]# ipmitool -I open -H 192.168.180.201 -U root -P opendoor power ?   

  4. chassis power Commands: status, onoff, cycle, reset, diag, soft  

  5. 注: ?代表可填上面几条指令, on/off/reset   开机/关机/重启  

  6. ipmitool -I open -H 192.168.180.201 -U root -P opendoor sensor  // 这条可获取远端服务器的一些传感器信息,包含 cpu,电压,功率等  

(3)远程屏幕
1.grub.conf文件修改
  1. [root@18034 ~]# cat /boot/grub/grub.conf   

  2. # grub.conf generated by anaconda  

  3. #  

  4. # Note that you do not have to rerun grub after making changes to this file  

  5. # NOTICE: You have a /boot partition. This means that  

  6. #          all kernel and initrd paths are relativeto /boot/, eg.  

  7. #          root (hd0,0)  

  8. #          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00 #            

  9. initrd /initrd-version.img  

  10. #boot=/dev/sda  

  11. default=0  

  12. timeout=10  

  13. #splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz  

  14. serial --unit=0 --speed=57600 

  15. terminal --timeout=10 

  16. hiddenmenu  

  17. title #CentOS (2.6.18-308.20.1.el5debug)  

  18.        root (hd0,0)  

  19.        kernel /vmlinuz-2.6.18-308.20.1.el5debug ro root=/dev/VolGroup00/LogVol00 console=tty0 console=tty S0,57600  

  20. initrd /initrd-2.6.18-308.20.1.el5debug.img  

:grub.conf 文件主要修改的地方,如标记所示。
default=0    代表内核数,从0开始,即为1个内核
timeout=10 默认值为5,开机grub界面提示为5秒。这里建议调大,因为远程屏幕有时候避免不了一些delay.
#splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz 屏蔽掉图形界面,串口重定向,只能是文本信息
kernel /vmlinuz-2.6.18-308.20.1.el5debug ro root=/dev/VolGroup00/LogVol00 console=tty0 console=tty S0,57600 参数传递到内核中,实现串口重定向
console=tty0 代表显示器输出  
console=tty S0 代表定向到串口1 ,如果是 tty S1 代表定向到串口2
57600 则为串口通信采用的波特率,波特率和bios设置的一样,经测试,57600的波特率在 sol屏幕输出比较稳定,不容易出现乱码,进程挂起之类。
2.securetty 文件修改
  1. [root@18034 ~]# grep tty /etc/securetty   

  2. tty1  

  3. tty2  

  4. tty3  

  5. tty4  

  6. tty5  

  7. tty6  

  8. tty7  

  9. tty8  

  10. tty9  

  11. tty10  

  12. tty11  

  13. ttyS0   // 添加grub.conf 里kernel 后面跟的串口信息,为了屏幕信息可以从串口输出  

3.inittab 文件修改
  1.  [root@18034 ~]# grep -v "#" /etc/inittab   

  2. id:3:initdefault:  

  3. si::sysinit:/etc/rc.d/rc.sysinit  

  4. l0:0:wait:/etc/rc.d/rc 0  

  5. l1:1:wait:/etc/rc.d/rc 1  

  6. l2:2:wait:/etc/rc.d/rc 2  

  7. l3:3:wait:/etc/rc.d/rc 3  

  8. l4:4:wait:/etc/rc.d/rc 4  

  9. l5:5:wait:/etc/rc.d/rc 5  

  10. l6:6:wait:/etc/rc.d/rc 6  

  11. ca::ctrlaltdel:/sbin/shutdown -t3 -r now  

  12. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

  13. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

  14. S0:2345:respawn:/sbin/agetty -h -L 57600 ttyS0 vt100  

  15. 1:2345:respawn:/sbin/mingetty tty1  

  16. 2:2345:respawn:/sbin/mingetty tty2  

  17. 3:2345:respawn:/sbin/mingetty tty3  

  18. 4:2345:respawn:/sbin/mingetty tty4  

  19. 5:2345:respawn:/sbin/mingetty tty5  

  20. 6:2345:respawn:/sbin/mingetty tty6  

id:3:initdefault: 3代表文本显示,因为只能重定向文本,所以不能选择5-X11
S0:2345:respawn:/sbin/agetty -h -L 57600 ttyS0 vt100 为了显示登录系统的界面
(4)sol指令
  1. [root@161 ~]# ipmitool -I lanplus -H 192.168.180.201 -U root -P opendoor sol activate  

下图为成功远程重启,Xshell终端看到的信息
IPMI远程管理那些事~_ipmi 远程管理_02
图1.2 远程重启和远程屏幕
小结下:
       目前我们线上都是通过远程代理+脚本方式进行管理,ipmi暂不支持wan直接管理功能。
       远程重启和远程屏幕就主要通过command方式进行。如果要查看电源,电压,CPU,风扇,温度等信息可以通过ipmi的web界面查看。