简 介
在维护过程中,服务器难免会死机,此时如果服务器远在“天边”,“千里奔波”只是为了按一下电钮,不仅“劳命伤财”,也不符合SA“决胜千里 之外”的风格。
此时,我们希望做到:
- 一条命令重启(启动/关闭)服务器
- 一条命令检查服务器状态
- (远程)终端诊断启动问题,解决ssh服务无法访问的问题
解决的方案是采用IPMI(Intel公司推出的远程管理解决方案),也 称为Baseboard Management Cards (BMCs) ,可以在服务器通电(没有启动操作系统)情况下对服务器进行远程管理。
Dell的 Baseboard Management Controller (BMC) 是IPMI的一个实现。该BMC可以通过主板集成的第一块网卡实现网络管理。并且这个BMC管理IP是独立的IP地址(需要单独占用)。
在设置 IPMI时,建议先在主机前设置,因为多数IPMI命令关闭主机时也会杀掉BMC,这样需要手工按电源开关启动服务器,只有确实完成了所有设置,则不再需 要现场操作。为实现管理,需要一个Linux主机安装IPMI命令包来发出IPMI指令,在其他操作系统平台,也有类似IPMI软件包。
- Dell服务器在1850/2850系列中,实现了IPMI v1.5规范,也就是能够通过ipmi指令来关闭和重启服务器,但是不能ipmi控制台登录。
- Dell服务器在1950/2950之后,实现了IPMI v2.0规范,不仅能够远程重启服务器,并且能够通过ipmi控制台,远程维护服务器(即使操作系统死机,ssh网络无法登录),控制台重定向到ipmi控制台(这样可以远程连接服务器,就像连接了键盘和显示器),对于我们故障抢修有很大帮助。
- BIOS中设置好串口控制台重定向(如果这一步不设置,则启动时BIOS信息不能查看,但仍然可以使用IPMI远程管理)服务器启动时设置Remote Access IP和帐号密码用于IPMI管理
- 这个步骤也可以在操作系统中通过命令来实现。也就是说,即使一些服务器已经安装部署了,不方便再出差去调整配置,只要我们能够远程ssh登录到操作系统,仍然可以通过软件的方式来开启IPMI管理。
- 建议在实施的时候,提前设置好IPMI配置,并验证使用。毕竟远程设置存在一些风险。另外,在设置前,先在本地做好详尽测试,确保设置无误。
配置IPMI(BMC)远程工作
有两种方式配置IPMI,一种是启动服务器时进入Remote Access
Setup系统(BIOS 启动自检),可以激活IPMI远程访问;另一种方式是安装了Linux操作系统,在Linux操作系统中使用ipmitool来设置(前提是已经加载了一 些ipmi内核模块)。
BIOS启动时设置
在BIOS启动最后阶段,按下ctrl-e进 入Remote Access
Setup管理界面,并激活IPMI远程访问
- 激活
IPMI Over LAN
激活时会提示BMC Management traffic will not function properly if the LAN on Motherboad (LOM) is teamed with any network adapter add-in-cards,这表明如果主板上网卡和附加网卡 bonding时,IPMI功能将失效。
-
NIC Seclection设置默认是Shared状 态,另外两种状态是Shared-Failover和Dedicated where applicable-
LAN Parameters设置-
IP Address Source默认是Static静 态分配方式,另一种模式为DHCP模式。通常IPMI为了能够管理,设置静态地址较好。 -
Etnernet IP Address设置为192.168.8.213 -
Subnet Mask设置为255.255.255.0 -
Default Gateway根 据情况设置。要保证设置了默认网关后,能够通过IPMI方式访问服务器的管理主机的访问是有限制的和安全的,否则会存在安全隐患。 -
VLAN Enable默认没有激活,或许适合在复杂的VLAN网络中使用。
-
-
LAN User Configuration是重要设置,保障IPMI访问安全-
Account Access默 认激活 -
Account Privilege默认权限是Admin -
Account User Name默认用户名是root - 设置访问密码
-
-
操作系统上使用 ipmitool 命令设置IPMI
/usr/bin/ipmitool -I open lan set 1 ipaddr 192.168.8.213 /usr/bin/ipmitool -I open lan set 1 netmask 255.255.255.0 /usr/bin/ipmitool -I open lan set 1 access on
如果需要设置网关,则输入以下命令
/usr/bin/ipmitool -I open lan set 1 defgw ipaddr 192.168.8.1
- 加强BMC安全,这样非授权用户才不会重启服务器。为做到这点,首先是需要修改默认的SNMP通讯串,null用 户密码,以及root用户密码。
/usr/bin/ipmitool -I open lan set 1 snmp COMUNIATION
- 设置null用户的密码
/usr/bin/ipmitool -I open lan set 1 password PASSWD
- 设置root用户密码
/usr/bin/ipmitool -I open user set password 2 PASSWD
- 检查配置(在服务器上本地执行)
ipmitool -I open lan print 1
操作系统准备
- 安装
IPMItool和启动脚本
在Redhat Enterprise服务器需要安装 OpenIPMI OpenIPMI-tools OpenIPMI-libs 和 OpenIPMI-devel 软件包。安装完成后可以实现所有功能。
- 安装OpenIPMI
# yum install OpenIPMI
- 安装
OpenIPMI-tools
yum install OpenIPMI-tools
- 启动服务
/sbin/chkconfig ipmi on /sbin/service ipmi start
- 安装
freeipmi,该软件包包含ipmiconsole
yum install freeipmi
Gentoo平台安装IPMI软件包
http://en.gentoo-wiki.com/wiki/Dell_PowerEdge_2950_III 提供了有关在Dell PowerEdge 2950 III安装gentoo的资料,也提供了IPMI安装介绍
- 内核要求(注意客户机和服务器都需要支持)。不过,客户端不需要启动
ipmievd服务,因为缺少设备/dev/ipmi0 /dev/ipmi/0 /dev/ipmidev/0
Device Drivers ---> Character devices ---> <M> IPMI top-level message handler ---> [*] Generate a panic event to all BMCs on a panic [*] Generate OEM events containing the panic string <M> Device interface for IPMI <M> IPMI System Interface handler <M> IPMI Watchdog Timer <M> IPMI Poweroff
- 安装IPMI软件包
emerge -avb sys-apps/ipmitool sys-libs/openipmi sys-libs/freeipmi rc-update add ipmievd default;
启动ipmievd报错信息表明系统没有支持ipmi功能模块(不过客户机不需要启动此服务)
ipmievd: using pidfile /var/run/ipmievd.pid0
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory
Unable to open interface
* start-stop-daemon: failed to start `/usr/sbin/ipmievd' [ !! ]
* ERROR: ipmievd failed to start
ipmitool
检查当前配置
[root@ws02 ~]# ipmitool -I open lan print 1
Set in Progress : Set Complete
Auth Type Support : NONE MD2 MD5 PASSWORD
Auth Type Enable : Callback : MD2 MD5
: User : MD2 MD5
: Operator : MD2 MD5
: Admin : MD2 MD5
: OEM : MD2 MD5
IP Address Source : Static Address
IP Address : 192.168.8.213
Subnet Mask : 255.255.255.0
MAC Address : 00:1e:4f:36:ef:9f
SNMP Community String : public
IP Header : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
Default Gateway IP : 0.0.0.0
Default Gateway MAC : 00:00:00:00:00:00
Backup Gateway IP : 0.0.0.0
Backup Gateway MAC : 00:00:00:00:00:00
802.1q VLAN ID : Disabled
802.1q VLAN Priority : 0
RMCP+ Cipher Suites : 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
Cipher Suite Priv Max : aaaaaaaaaaaaaaa
: X=Cipher Suite Unused
: c=CALLBACK
: u=USER
: o=OPERATOR
: a=ADMIN
: O=OEM
- 客户端远程检查服务器状态
ipmitool -I lan -H 192.168.8.213 -U root -a chassis power status
使用ipmitool
- 可以设置一个环境变量
IPMI_PASSWORD,该环境变量就是你使用的密码。
export IPMI_PASSWORD="PASSWORD"
然后在使用时,只要使用参数 -a 就可以使用以上密码。
- 以下命令检查目标服务器是否启动
/usr/bin/ipmitool -I lan -U root -H 10.1.1.34 -a chassis power status
则可能获取到如下信息
Chassis Power is on
如果没有收到任何信息,则检查BMC是否设置正确,是否使用正确密码,以及IP地址。特别检查 Ctrl-E 启动菜单。
- 关闭目标服务器电源
/usr/bin/ipmitool -I lan -U root -H 10.1.1.34 -a chassis power off
- 重启目标服务器
/usr/bin/ipmitool -I lan -U root -H 10.1.1.34 -a chassis power cycle
- 显示目标服务器的系统日志(sel, system event log)
/usr/bin/ipmitool -I lan -U root -H 10.1.1.34 -a sel list
ipmi端口镜像
BIOS串口重定向
参考 http://bgoglin.livejournal.com/13317.html
要 让控制台能够从IPMI网络输出,需要同时配置 BIOS, GRUB 和 ttyS1 以从IPMI网络输出。注意:COM2/ttyS1是 逻辑的(mandatory),可能并不适合使用COM1/ttyS0。
重新启动服务器,按F2访 问BIOS,在Serial Communication菜单设置:
- 设置
Serial Communication为On with Console Redirection via COM2 - 设置
External Serial Connector为COM2 - 设置
Failsafe Baud Rate为115200(这个设置似乎不影响) - 设置
Remote Terminal Type为VT100/VT220 - 设置
Set Redirection After Boot为Enabled
以 上设置完成后,一旦服务器重启,就可以使用以下命令
ipmitool -I lanplus -H 192.168.8.213 -U root -P password sol activate
访问服务器。
服务器启动的BIOS自检信息将在终端中输出。并且,可以使用IPMI方式,在远程终端中查看和设置BIOS信息(虚拟 kvm)

不过,启动到操作系统级别后,控制台输出将不走IPMI。因为,尚没有设置grub 的串口输出(见下配置)。
Grub串口重定向
参考: http://www.webhostingtalk.com/archive/index.php/t-439550.html
一 些服务器可以实现将原来串口输出的内容镜像到IPMI接口上。
在启动的grub.conf中添加
default=0 timeout=10 #for IPMI Setup serial (COM2) ,不过不要设置以下串口配置!!!(仅作参考) # 按照参考文档,在这里需要设置串口的速率。但是我在实践中发现,一旦设置了串口配置, # 启动时就必须在GRUB提示"Press any key to continue"时在主机前的键盘或者远程ipmi控制台按一下回车键。 # 如果没有按回车键,系统就会挂在那里。等到超时以后,不论主机键盘或ipmi控制台都没有响应,只能reset电源重启,非常麻烦。 # serial --unit=1 --speed=57600 --word=8 --parity=no --stop=1 # terminal --timeout=5 serial console #splashimage=(hd0,0)/boot/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-164.11.1.el5PAE) root (hd0,0) kernel /boot/vmlinuz-2.6.18-164.11.1.el5PAE ro root=LABEL=/1 console=tty0 console=ttyS1,57600n8 initrd /boot/initrd-2.6.18-164.11.1.el5PAE.img
并且在/etc/inittab中的6个mingetty行下添加
S1:2345:respawn:/sbin/agetty ttyS1 57600 vt100
注意:控制台重定向的bit率要设置为57600!
已经测试,设置为115200/9600会导致一旦grub开始输出控制台,则ipmitool中输出的都是乱字符。如果设置为19200,启动到中途会挂起,即不继续 启动,也没有输出。
控制台连接
- 联机服务器
ipmiconsole -h 192.168.8.213 -u root -p PASSWORD
或者使用
ipmitool -I lanplus -H 10.0.99.x -U login -P password sol activate
参考
- Running IPMI on Linux 详细的IPMI部署文档
- How to Configure IPMI on a Dell PowerEdge running Red Hat Enterprise Linux 这个文档介绍了IPMI软件在dell服务器redhat linux上的安装,以及基本的服务器重启方法,但没有详细介绍控制台重定向,所以需要参考下一个文档。
- Remote Console Access with IPMI on Dell 2950 这个文档比较清晰明了,特别介绍了在BIOS中启用IPMI和通过操作系统软件启用IPMI方法,重点参考。另外,远程终端访问功能特别重要,需要仔细学 习。
- Howto setup IPMI under Linux (RHEL/CentOS 5) on the HP BL460c (Intel(R) Xeon(R) E5430) 在RHEL上部署IPMI
- IPMI Sensor Data on Dell 1850s and 2850s via SNMP and Cacti 使用snmp结合cacti查看Dell服务器的ipmi输出
- http://supportapj.dell.com/support/edocs/software/smdrac3/index.htm Dell网站在线提供有关DRAC手册
- Integrated Dell™ Remote Access Controller 6 (iDRAC6) Enterprise for Blade Servers Version 2.2 用户指南 提供最新iDRAC使用指南,适合最新R710服务器远程管理(2950的升级换代产品)
Comments
Leave a comment Trackback