高级的UPS可以与ESXi系统实现联动完成断电关机
如果UPS的联动软件只支持Windows可以开一个Windows虚拟机实现虚拟机控制宿主机关机,变相实现联动关机。
如果普通UPS不支持系统联动
只能采用曲线救国的方案:当主机Ping不通路由的时候说明路由已经断电,判断为市电已断(路由未接入UPS)
实现方法
开启 ESXi 的 SSH 服务,通过 SSH 在数据盘新建一个脚本文件,比如 /vmfs/volumes/esxi-os/UPS/shutdown.sh,内容如下:
#!/bin/sh
ping -c 1 192.168.3.1 > /dev/null
ret=$?
if [ $ret -eq 0 ]
then
echo 'AC Power OK!'
else
echo 'AC Power maybe off,checking again after 150 seconds!'
sleep 150
ping -c 1 192.168.3.1 > /dev/null
ret=$?
if [ $ret -eq 0 ]
then
echo 'AC Power OK!'
else
echo 'AC Power maybe off,checking again after 100 seconds!'
sleep 100
ping -c 1 192.168.3.1 > /dev/null
ret=$?
if [ $ret -eq 0 ]
then
echo 'AC Power OK!'
else
echo 'AC Power off, shutdown esxi-server!'
/sbin/poweroff
fi
fi
fi
为了防止路由器升级重启,或者整理网线导致网线插拔短暂的断网情况,脚本在第一次ping不通之后过150秒继续ping,依然不通再等100秒继续ping,如果还是不通就会进行关机操作
给脚本添加执行权限
chmod 777 /vmfs/volumes/esxi-os/UPS/shutdown.sh
或者
chmod +x /vmfs/volumes/esxi-os/UPS/shutdown.sh
添加一个计划任务,每1分钟执行脚本,由于 ESXi重启后会重置计划任务,所以需要通过修改 /etc/rc.local.d/local.sh
文件,实现每次开机时自动添加计划任务
编辑/etc/rc.local.d/local.sh
,在 exit 0 前面添加:
/bin/kill $(cat /var/run/crond.pid)
/bin/echo '*/1 * * * * /vmfs/volumes/esxi-os/UPS/shutdown.sh' >> /var/spool/cron/crontabs/root
/bin/crond
可以自行修改脚本重复执行时间
文章评论