esxi连接UPS在断电后自动关机已经不是啥新鲜话题了,有好多的解决方案。我也放一个我自己的方案。
在我采用的方案中借鉴了很多其他人的方案,不过具体的出处已经记不清楚了。
简单的说明下我的方案 安装PowerChute后 在出现电源故障时windows 事件查看器中会有日志记录 通过任务计划监控指定的日志 在出现电源中断的时执行关机操作
需要用到的软件
PowerChute Personal Edition(UPS管理软件 APC官网有 买UPS的光盘里也有)
plink.exe(百度一下很多)
powerdown-esxi5.sh(忘了哪个大神写的了 很好用 虽然是写给esxi 5的 在esxi 6.0上一样可以用 代码在最后)
APC BK650-CH是面向家庭用户的产品对win server兼容不好所以用win7装一个VM 配置不要求很高 能运行win7就行
win7比Linux的好处是操作更简单 更直观 之前用过apcupsd 关机脚本执行起来太费劲
将USB连接主机后连接到VM
002.jpg (73.51 KB, 下载次数: 1)
建立一个虚拟交换机不添加上行端口 添加vmk 将VM的网卡加到这个虚拟交换机中 这样做是为了保证在外部断电 交换机断电的情况下可以从内部网络通信
015.jpg (25.18 KB, 下载次数: 0)
安装 PowerChute Personal Edition 有了这个软件可以方便的查看UPS的状态以及电源故障记录
004.jpg (110.45 KB, 下载次数: 0)
安装PowerChute后 在出现电源故障和电源恢复时 事件查看器 中会有日志记录
005.jpg (239.14 KB, 下载次数: 1)
006.jpg (237.7 KB, 下载次数: 1)
添加一条任务计划 当APC UPS Service 发出事件ID 为 174时 延迟3分钟开始执行关机操作
007.jpg (93.61 KB, 下载次数: 1)
008.jpg (82.35 KB, 下载次数: 0)
当APC UPS Service 发出事件ID 为 61455时执行电源恢复的脚本
010.jpg (102.35 KB, 下载次数: 1)
011.jpg (33.43 KB, 下载次数: 0)
电源恢复脚本
很简单就是停止正在运行的电源故障任务计划
012.jpg (31.92 KB, 下载次数: 0)
电源故障关机脚本
注意第二行 断电3分钟后已经开始关机流程 为了保证关机流程正常执行 在开始关机操作前先将监控电源恢复的任务计划禁用
4到8行是将局域网中其他win VM关机 需要在凭据管理器中提前添加目标主机的管理员用户名和密码
使用plink 第一次登录esxi需要接受来自esxi的SSH指纹 这里会有一个交互 脚本直接执行过不去 最好是先用plink 登录一次esxi保存 SSH指纹 然后在启用脚本
009.jpg (82.43 KB, 下载次数: 1)
最后再添加一个任务计划 在开机时启用被禁用的电源恢复任务计划
013.jpg (40.13 KB, 下载次数: 0)
到此完成
powerdown-esxi5.sh
#!/bin/ash
# title: powerdown-esxi5.sh
# version: 0.5
# date: october 09, 2011
# author: herwarth heitmann
# edit by: massimo vannucci
#variables
PATH=/bin:/sbin:/usr/bin:/usr/sbin
VIMSH_WRAPPER=vim-cmd
VM_FILE=vm_list
INTERVAL=60
MAXLOOP=3
#DATE=`date "+%Y-%m-%d %H:%M:%S"`
# To enable logging, set the following variable to 1
LOG_ENABLED=1
#下面你自己的存储路径,最好是用uuid的路径,最好能把这行中文删掉
LOG_FILE=/vmfs/volumes/1111111111111111111111111111111/powerdown-esxi5.log
# Remember that >> after echo, redirect and append to file
# Set the log file
if [ $LOG_ENABLED -eq 1 ]; then
echo -e "\n\n\n"`date "+%Y-%m-%d %H:%M:%S"` "\t\tExecuting powerdown-esxi5.sh" >> $LOG_FILE
fi
#check if parameter given
case "$1" in
"") LASTACTION=shutdown
;;
reboot) LASTACTION=reboot
;;
vmonly) LASTACTION=vmonly
;;
*) echo "usage $0 <|vmonly|reboot>"
exit 1
;;
esac
#retrieve all VmId for VM(s) registered under ESXi host
${VIMSH_WRAPPER} vmsvc/getallvms >> $LOG_FILE
${VIMSH_WRAPPER} vmsvc/getallvms | awk '{print $1}' | grep -v 'Annotation' | grep -v 'Vmid' > $VM_FILE
#first time initialisation
ERROR=0
FIRSTRUN=1
LOOP=0
#we want to run the loop at least 1 time! and loop until no more errors occur
while [ $ERROR -ne 0 -o $FIRSTRUN -eq 1 ]; do
LOOP=$(($LOOP+1))
if [ $FIRSTRUN -eq 0 ]; then
if [ $LOG_ENABLED -eq 1 ]; then
echo -e `date "+%Y-%m-%d %H:%M:%S"` "\t\tGive virtual machines time to shutdown..." >> $LOG_FILE
else
echo "Give virtual machines time to shutdown..."
fi
sleep $INTERVAL
fi
#exit loop if $LOOP gets bigger than $MAXLOOP
if [ $LOOP -gt $MAXLOOP ]; then
echo "Maximum loops reached!"
break
fi
FIRSTRUN=0
ERROR=0
for VM_LINE in $(cat ${VM_FILE}); do
STATE=$(${VIMSH_WRAPPER} vmsvc/power.getstate ${VM_LINE} | grep -v 'runtime')
if [ "$STATE" = "Powered off" -o "$STATE" = "Suspended" ]; then
if [ $LOG_ENABLED -eq 1 ]; then
echo -e `date "+%Y-%m-%d %H:%M:%S"` "\t\tVM with ID: ${VM_LINE} is: $STATE, skipping..." >> $LOG_FILE
else
echo "VM with ID: ${VM_LINE} is: $STATE, skipping..."
fi
else
#try to do proper shutdown if VMware Tools are installed
if [ $LOG_ENABLED -eq 1 ]; then
echo -e `date "+%Y-%m-%d %H:%M:%S"` "\t\tVM with ID: ${VM_LINE:} is: $STATE, trying guest shutdown..." >> $LOG_FILE
else
echo "VM with ID: ${VM_LINE} is: $STATE, trying guest shutdown..."
fi
${VIMSH_WRAPPER} vmsvc/power.shutdown "${VM_LINE}" > /dev/null 2>&1
#if it fails to shutdown, we know there are no VMware Tools installed
if [ $? -eq 1 ]; then
#hard power off
if [ $LOG_ENABLED -eq 1 ]; then
echo -e `date "+%Y-%m-%d %H:%M:%S"` "\t\tGuest shutdown not working, hard powering off" >> $LOG_FILE
else
echo -e "\tGuest shutdown not working, hard powering off"
fi
${VIMSH_WRAPPER} vmsvc/power.off "${VM_LINE}" > /dev/null 2>&1
else
if [ $LOG_ENABLED -eq 1 ]; then
echo -e `date "+%Y-%m-%d %H:%M:%S"` "\t\tSuccessfully initiated shutdown of ${VM_LINE}" >> $LOG_FILE
else
echo -e "\t\tSuccessfully initiated shutdown of ${VM_LINE}"
fi
fi
ERROR=$(($ERROR+1))
fi
done
done
# clean up temporary file
rm -f $VM_FILE
#execute last action
case "$LASTACTION" in
shutdown) #shutdown ESXi host
if [ $LOG_ENABLED -eq 1 ]; then
echo -e `date "+%Y-%m-%d %H:%M:%S"` "\t\tShutting down ESXi host..." >> $LOG_FILE
fi
/sbin/poweroff
;;
reboot) #reboot ESXi host
if [ $LOG_ENABLED -eq 1 ]; then
echo -e `date "+%Y-%m-%d %H:%M:%S"` "\t\tRebooting ESXi host..." >> $LOG_FILE
fi
/sbin/reboot
;;
vmonly) #do nothing! only VMs needed to be shutdown
if [ $LOG_ENABLED -eq 1 ]; then
echo -e `date "+%Y-%m-%d %H:%M:%S"` "\t\tDo nothing with ESXi host..." >> $LOG_FILE
fi
;;
esac
exit 0复制代码
评论
买个有esxi管理工具的就行没必要那么麻烦
评论
那种贵啊
评论
powerwalker750也就五六百,还是在线互动的
评论
深水宝没找到你说的那个 也不了解你说的这个牌子 BK650 用了两年多了 我记得是深水宝400多买的
评论
你那个 深水宝 有类似的么
评论
我找深圳的ups商家买的,他们不做淘宝
评论
MARK,同样的 UPS,有空试用
评论
APC的那个软件在WINDOWS 2012完美运行,我们公司就是用的2012配 650,小公司 没办法 经济实惠
评论
楼主能给一个plink的下载地址吗?没找到啊
评论
求介绍个商家的联系方式呢
评论
楼主,我想问问我下载的plink在windows2012 64位系统中运行之后闪了一下就没有了,而且在进程中也看不懂是怎么回事呢?
评论
没在2012下用过plink
你用plink执行的什么命令?
你不会是直接双击的plink.exe吧
plink需要在命令行里使用
评论
从来没有用过plink 具体怎么用的 有资料吗?万分感谢
评论
可以百度下plink的使用 plink需要在命令行下使用
评论
百度了几天了,都没有看明白 我问问公司同事吧 他们对linux熟悉些 谢谢了
评论
LINUX新手和菜鸟请注意 plink.exe不是一个单纯的可执行文件,需要用楼主里面提到的bat批处理文件来调用运行的。我当时以为是个exe就是可直接运行的文件。
还有esxi 6.5的 vmfs目录中不允许新建目录,我已经是用root用户登录都不行,只能在根目录下建一个ups目录了事
十分感谢楼主的分项和解答!!还有建议和我一样的新手把时间从5秒改为15秒,不要问我为什么,当你测试执行批处理文件在生产机上 看到倒数5秒的时候 感觉不异于CS里面C4炸药快爆炸的感觉...关闭服务器两次,办公室一片哀嚎!!
评论
额 提醒你一下 vmfs下是不能建立目录的 但是可以在 /vmfs/volumes/datastore1中建立目录和文件 (具体看你的配置的数据存储名称)
esxi的根目录是在内存中 如果你在根下放置文件 服务器重启后文件就没有了
另外你说的5秒是指关闭服务器的间隔么?
评论
5秒就是指关闭服务器的间隔,你参数里面的5不是5秒吗?
评论
UPS 抗不了多久 我希望虚拟机可以尽快关闭
之前测试 我的UPS满电大概能抗15-18分钟
从断电开始等待3分钟 到完全关闭大概要10-12分钟
所以断电后关机的时间是争分夺秒
那个几个关机的命令加不加其实无所谓,通过执行esxi的脚本也可以关闭。
我这几个虚拟机有相关性 有启停的顺序要求所以单独去关闭这几个。
另外你好像没有关注我上个回复的重点。。。
主要是提醒你esxi根下存放的文件重启后会丢失
评论
我看到你的提醒了 十分感谢!!还有 我测试后发现ESXI不是每次都能关机 不知道问题出在哪?倒是WINDOWS 每次都关了。
评论
我觉得应该是esxi的关机脚本在执行完之前执行plink的虚拟机被关闭使脚本中断。
start plink.exe -ssh root@[esxi ip] -pw [密码] /vmfs/volumes/datasotre1/scripts/shutdown.sh^&复制代码
执行plink的时候最后加一个^&可以让脚本在后台运行
之前发的图被水印挡住了。。。
评论
评论
求个联系方式
评论
ESXI原生支持安装APC软件,不用到windows里边去搞计划任务.
评论
楼上可否介绍下?
评论
楼上可否介绍下?
评论
APC有linux平台的powerchute管理包,直接安装到esxi平台上就可以实现断电关机. APC安装光盘里边应该有rpm包.
评论
esxi可以安装 rpm包?
评论
当然可以.
我没有用过你说的这个powerchute,但是你看过官方说明吗?需要配合APC USP 网络管理卡使用,https://kb.vmware.com/s/article/1007036?lang=zh_CN
我之前玩esxi的时候是使用的nut实现的。教程https://www.bohica.net/main/free ... ent-for-vmware-esxi
评论
网络管理卡也是一个办法,但只连接一台电脑没必要添加多一个硬件,用USB线或RS232信号线可以直接安装软件.
评论
小弟才疏学浅 没见过这么高端的技术 大佬牛逼 电路 电子 维修 求创维42c08RD电路图 评论 电视的图纸很少见 评论 电视的图纸很少见 评论 创维的图纸你要说 版号,不然无能为力 评论 板号5800-p42ALM-0050 168P-P42CLM-01 电路 电子 维修 我现在把定影部分拆出来了。想换下滚,因为卡纸。但是我发现灯管挡住了。拆不了。不会拆。论坛里的高手拆解过吗? 评论 认真看,认真瞧。果然有收
·日本中文新闻 唐田绘里香为新剧《极恶女王》剃光头 展现演员决心
·日本中文新闻 真子小室夫妇新居引发隐私担忧
·日本中文新闻 前AKB48成员柏木由纪与搞笑艺人交往曝光
·日本学校 {日本国际学校}梅田インターナショナルスクール
·日本学校 LINE:sm287 陳雨菲、20歳、台湾からの留学生、東京に来たばかり
·日本留学生活 出售平成22年走行48000km 代步小车
·日本华人网络交流 円相場 一時1ドル=140円台まで上昇?
·日本华人网络交流 问日本华人一个问题
·日本旅游代购 富山接机
·生活百科 英国转澳大利亚转换插头
·汽车 【求助】修车遇到困难怎么办?