日本电子维修技术 电源esxi 6.0 连接 APC BK650-CH 断电自动关机




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)

2017-12-10 14:54 上传


建立一个虚拟交换机不添加上行端口   添加vmk   将VM的网卡加到这个虚拟交换机中   这样做是为了保证在外部断电  交换机断电的情况下可以从内部网络通信

015.jpg (25.18 KB, 下载次数: 0)

2017-12-10 14:55 上传



安装 PowerChute Personal Edition 有了这个软件可以方便的查看UPS的状态以及电源故障记录

004.jpg (110.45 KB, 下载次数: 0)

2017-12-10 14:54 上传


安装PowerChute后  在出现电源故障和电源恢复时  事件查看器  中会有日志记录

005.jpg (239.14 KB, 下载次数: 1)

2017-12-10 14:54 上传


006.jpg (237.7 KB, 下载次数: 1)

2017-12-10 14:55 上传


添加一条任务计划  当APC UPS Service 发出事件ID 为 174时 延迟3分钟开始执行关机操作

007.jpg (93.61 KB, 下载次数: 1)

2017-12-10 14:55 上传


008.jpg (82.35 KB, 下载次数: 0)

2017-12-10 14:55 上传


当APC UPS Service 发出事件ID 为 61455时执行电源恢复的脚本

010.jpg (102.35 KB, 下载次数: 1)

2017-12-10 14:55 上传


011.jpg (33.43 KB, 下载次数: 0)

2017-12-10 14:55 上传



电源恢复脚本
很简单就是停止正在运行的电源故障任务计划

012.jpg (31.92 KB, 下载次数: 0)

2017-12-10 14:55 上传


电源故障关机脚本
注意第二行  断电3分钟后已经开始关机流程   为了保证关机流程正常执行  在开始关机操作前先将监控电源恢复的任务计划禁用
4到8行是将局域网中其他win VM关机  需要在凭据管理器中提前添加目标主机的管理员用户名和密码
使用plink 第一次登录esxi需要接受来自esxi的SSH指纹   这里会有一个交互  脚本直接执行过不去    最好是先用plink 登录一次esxi保存 SSH指纹 然后在启用脚本

009.jpg (82.43 KB, 下载次数: 1)

2017-12-10 14:55 上传



最后再添加一个任务计划  在开机时启用被禁用的电源恢复任务计划

013.jpg (40.13 KB, 下载次数: 0)

2017-12-10 14:55 上传


到此完成


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 电路 电子 维修 我现在把定影部分拆出来了。想换下滚,因为卡纸。但是我发现灯管挡住了。拆不了。不会拆。论坛里的高手拆解过吗? 评论 认真看,认真瞧。果然有收
 ·日本留学生活 求个大阪合租
·日本留学生活 自家房招租求
·日本留学生活 东京地区出9成新lv钱包
·日本育儿教育 孩子从国内过来如何学习日语
·日本育儿教育 明年四月横滨招月嫂
·日本育儿教育 请问咋让娃突破识字关?感谢分享中文共读和学习经验的妈妈
 ·中文新闻 东区明星迈克尔·格列柯,53 岁,将在第一次出生两年后第二次
·中文新闻 《爱情岛》明星卡米拉·瑟洛和杰米·朱维特在透露即将迎来第三

维修经验

CPUcpu-z 1.77版低调发布

日本维修技术更新: New benchmark “submit and compare” feature New clocks dialog reporting all system’s clock speeds in real-time Preliminary support for Intel Kaby Lake AMD Bristol Ridge processors 主要是增加了支持I、A两个新架构的 ...

维修经验

CPU这几天经常开机黑屏,热重启后又正常

日本维修技术这几天经常开机黑屏,热重启后又正常,今天热重启也不管用了。折腾半天总算点亮,显示超频失败,以前出这个画面我是不理它的,直接重启就能正常进系统了,今天不敢托大,因为 ...

维修经验

CPU超频求助!关于华擎H170和6700K

日本维修技术问题见楼主的show贴 https://www.chiphell.com/thread-1634895-1-1.html 这次华擎的H170 Hyper最大的特色应该是自带时钟发生器可以自由超外频 可是楼主好久没有折腾超频了。。。 两图中除了CPU外频 以 ...

维修经验

CPU液态金属会侵蚀cpu核心吗?

日本维修技术前阵子看到有人说,液态金属时间长了会侵蚀cpu铜盖,那么问题来了,这货会不会侵蚀核心呢? 评论 这玩意儿好像只对铝起反应 评论 不是说,cpu的盖子是铜的吗。。。 评论 不会,核 ...

维修经验

CPUm6i究竟支不支持e3 1231v3

日本维修技术官网上看支持列表没写有e3 1231v3,装机帖又有人晒,百度也没个明确答案,那究竟能不能点亮?有在用的chher说一下么 评论 升级最新bios肯定可以支持 评论 我的p67evo官网上也没说支持12 ...

维修经验

CPU华擎 HYPER 妖板 正确玩法

日本维修技术600元的 B150,10相供电,释放洪荒之力 注意必须官网 Beta 区的 BIOS 有 AVX 的 CPU 可能会掉缓存 启动时按 X 键激活 SKY OC,重启后进入 BIOS 160924164727.jpg (95.63 KB, 下载次数: 1) 2016-9-24 17:47 上传 ...

维修经验

CPUE5 2686 V3和i7 6800K如何选择

日本维修技术默认用,不超频,两者功耗是一模一样的 E5 2686 V3:2.0主频,3.5睿频, 18核心36线程 ,45M L3 咸鱼大约2500~3000元 i7 6800K : 3.5主频,3.8睿频 ,6核心12线程 ,盒装3000元 评论 性能应该是26 ...

维修经验

CPUHD530硬解4K能力还是有点弱呀!

日本维修技术播放器用PotPlay 64bit,各种优化后,跑4K @120Hz视频只能到70帧左右的速度,勉强能用! 显示器用的4K的优派VP2780 未标题-1.jpg (211.97 KB, 下载次数: 0) 2016-9-26 21:29 上传 评论 这个估计你没优化 ...

维修经验

CPU6900k 1.25V到4.2体质怎么样

日本维修技术如图,体质怎么样,ring是35,没敢试了,都说ring高了毁硬件 评论 不错的U,但不算雕,上4.4就大雕了,这电压上4.5的目前没见有人发图 评论 谢谢前辈告知 评论 我这个用1.2V超的4.2,R ...

维修经验

CPUI3 6100 华擎B150M pro4超4.5g测试。

日本维修技术看看论坛没多少i3 6100的帖子,就转下自己发的show贴里面的数据,给大家参考下。家里还有当年的神U i3 540 oc 4.5G在给老妈用。 不知道数据上正常吗?有6100的朋友可以告诉下,另外是不有 ...

维修经验

CPU7系u会兼容100系主板吗?

日本维修技术RT,听说要推200系板,100系还能用吗以后。。 评论 兼容的 评论 感谢!以后换u就行了,目前消息200系板会有新的特性吗? 评论 24条PCI-E 3.0通道、支持Intel Optane混合存储技术、十个USB 3 ...

维修经验

CPU有心入5820k了,求教下温度问题

日本维修技术一直徘徊在6700k和5820k之间,6700k现在这德行直接把我推向了5820k啊,从2600k升级上来,三大件都要换,现在唯一疑惑的是IB-E ex这种顶级风冷能不能压住4.5g的5820呢?毕竟刚刚买一个多月。 ...

维修经验

CPU6600&amp;6600K才100的差价

日本维修技术太少了吧。。。 6600.JPG (106.91 KB, 下载次数: 0) 2016-10-1 10:30 上传 评论 毕竟只是i5而已…… 评论 上z170 6600也能超,等于没区别,差价能有100已经不错了 评论 然后又见不超频人士推荐超频 ...