ipmitool实现服务器远程开、关机的具体实现
2018-07-24
今天在运用ansible实现批量关机时,意外发现了ipmitool工具可以实现远程开机,这简直就是神奇!记得以前在面试的时候,在回答一位面试官的问题时说过“开关机”这个词,对方疑惑的问我,如何实现远程开机?当时我的回答是,我说错了。没想到今天,这个真的可以实现了!真的可以实现远程开机了!下面就详细说一下具体是如何实现的!
最初看到的文章中,是如下描述的:
# ipmitool -H mgmt_ip -U USER -P PASSWORD power
status # 查看状态
# ipmitool -H mgmt_ip -U USER -P
PASSWORD power
on # 开机
那么我的思路就是先安装ipmitool工具,尝试去实现该功能。
centos 7 安装ipmitool:
yum install OpenIPMI OpenIPMI-devel OpenIPMI-tools OpenIPMI-libs
启动ipmi服务:
service ipmi start
这样,就成功的安装好了ipmitool并启动。
执行:ipmitool -H192.168.1.* -U root -P 123456 power status
报错:
Error: Unable toestablish LAN session
Error: Unable toestablish IPMI v1.5 / RMCP session
和
Error: Unable toestablish IPMI v2 / RMCP+ session
于是各种查找原因,也是各种尝试,其中我的理解是ip是某台服务器的网卡ip,用户是root,密码是该台服务器的ssh登录密码,但是怎么尝试都是报错。一度都要放弃了!但是这个远程开机的功能,是真的非常吸引我,如今就差临门一脚了,真不愿意放弃,于是在仍然在坚强的查找······
后来在查找中,偶然发现有网友说是与主板有关,这激发了我的想象力,怀疑可能是因为硬件层面的限制,导致的软件方面无法使用,于是按这个思路,查找“dell R720 ipmi”,果然查到了我想要的结果:
R720的配置
着重说明一下版本信息为1.57, 对于这个配置,不同的版本界面及配置均有所区别
重启,F2进去System Setup界面,选择iDRAC Settings:
进入后,先配置Network:
先后在这个页面中配置了:
启动iDrac网卡
设置idrac的ip
启用ipmi
如果服务器启用了idrac卡,在Nic Selection可以看到这个Dedicated的专用网卡,否则只能看到LOM1,LOM2(为Lan Of MotherBoard的缩写)这样的配置。没有这个只是功能缩减了一点,其余的配置依然相同。
以上只是网络截图,具体情况视真实情况而定!
此处的ip,默认是:192.168.0.120
gateway:192.168.0.1
掩码:255.255.255.0
最开始,没有修改这些,但是后来使用时,根本无法ping通,这时才发现,原来是192.168.0网段我是无法访问的,所以此处做了调整:
ip:192.168.1.224
网关:192.168.1.1
掩码:255.255.255.0
经过如上配置,就可以ping通了!!!
需要注意的是,该ip是有别于网卡ip的,该ip是static ip,是绑定在IDRAC上的,而不是绑定在em1网卡上的。所以,这IDRAC上的static ip与em1网卡上的ip地址不能配置为同一个 ,此处配置成192.168.1.224,完全是为了可以在内网环境能直接访问到;也可以是其他ip,只不过在内网就无法访问到了。另外,ipmi 网口 :可以共用 第一个网口 或 使用iDRAC的网口,请确保网线正确!为了方便的话,肯定是不再接网线,直接接到第一个网口上。本次就是这么做的,实现了一个网口,同时接通em1网卡(idrac express共享口)和IDRAC两个网卡!!!非常的便于使用!
接着,启用ipmi后可以通过ipmitool来进行远程管理了
配置完网络后,再配置User
Configuration,只是配置一下用户名及密码即可:
按如上配置,就实现了BIOS端的ipmi配置!
验证:
首先,需要明确一点,在253服务器上,执行:ping 192.168.1.224是不通的!因为IDRAC和em1走的是一个网口,无法实现ping!
那么就通过其他机器执行:ping 192.168.1.224,发现是通的!!!这就证明了,IDRAC和em1是可以通过一根网线实现的,并且其他机器可以找到位于253上的IDRAC !!!
通过以下配置,可以看到,IDRAC默认的用户是root,但是并未设置密码,原来默认的密码是:calvin
知道了IDRAC的用户名和密码,就可以在其他机器上通过ipmitool命令查看253服务器的运行状态了:
ipmitool -I lanplus -H 192.168.1.224 -U root -P calvin chassis powerstatus
可以看到,显示电源的状态是on的,表示当前253处于开机运行状态。需要注意的是,ipmitool命令中的:-H 192.168.1.224 是253的IDRAC的static ip,该ip不可换成192.168.1.253。此命令中的ip必须是IDRAC的static ip!!!
这样,就可以继续做实验了,将253关机,执行:shutdown -h now。
然后再用ipmitool命令查看253的状态,这时就是off了。
然后再用:ipmitool -I lanplus -H 192.168.1.224 -U root -P calvin power on
启动253服务器,等待一会,253服务器就启动成功了,查看253状态也是on了!
至此,就实现了通过ipmi服务和ipmitool工具,远程对服务器开关机的功能了,真的是非常的方便。当以后有计划性停电或维护的时候,就可以批量执行关机命令,待恢复通电后,如果机器没有自启动,就可以通过ipmitool工具,实现远程批量开机操作了!再也不用去挨个服务器怼开电源按钮了!!!该方法特别适用于服务器规模庞大,人工操作繁琐等条件的情况!
dell针对IDRAC还有一个控制台界面,在浏览器中输入IDRAC的static ip地址,就可以访问IDRAC控制台了:
默认登录信息是:root/calvin
该登录信息也可以通过ipmitool命令去更改!
然后会提醒,更改密码,也可以不更改,继续使用默认的密码:
可以看到左侧菜单栏中,包含了像CPU,内存,电源,风扇,温度等固件及运行信息,通过这个控制台,可以清洗的看到该台服务器各硬件的情况,便于排查问题!