给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

追加修改(2017-05-22 21:05:19):
文中ups型号“APC BK500-CH ”有误,应该为“APC BK650-CH”,目前在售型号为apc BX650CI-CN

目前各大公网云盘纷纷嗝(关)屁(门),仅存的几家不是坐地涨价就是种种限制,同时个人数据体量暴涨,这对存储对速度和安全性有了越来越高的要求,公网云盘至少在传输速率上已out,家用NAS(Network Attached Storage:网络附属存储)绝壁是一种有效的解决方案。

NAS可分两大类:一类是成品NAS,如群晖、威联通、西部数据my cloud系列等;另一类是DIY产品,可通过普通电脑安装nas操作系统实现,近年HP的迷你服务器gen8 microserver凭着优良的做工灵活多样的玩法在DIY NAS圈内火了一把,本文主要针对gen8方案的ups配置进行讨论,至于gen8实现nas功能的具体玩法zdm有高质量的介绍(见下图),本文不表。无论是哪类NAS,突然断电对数据安全有可能带来十分严重的不良影响,轻则个别大姐姐失踪(丢失部分数据),重则别墅坍塌(硬盘损坏)大姐姐团灭给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案 。所以给NAS配个保姆UPS很有必要。

gen8之应用gen8之应用

一、UPS的选择

UPS当然是越贵越好,有米选贵的,用起来6!(废话)

下面简单说下如何选择

UPS从原理上分两类:在线式和后备式,各自原理大概是这样的:

在线式:     

山特UPS不间断电源C1K两电脑单机60-90分钟在线式带网络接口内置电池800W断电延时 【京东仓配】山特C1K正品UPS1508元在线式UPS京东去购买

正常供电情况时:220V交流电---->整流成直流(同时给内部电池充电)---->逆变成220V交流(接NAS、电脑等用电器)

失去交流电时:内部电池提供直流电源(无切换延时)---->逆变成220V交流(接NAS、电脑等用电器)

后备式: 

APC BK500-CH 500VA UPS不间断电源 防雷浪涌保护300W 15分钟329元后备式UPS天猫精选去购买

正常供电情况时:

220V交流电---->直接接NAS、电脑等用电器

(与此同时)220V交流电---->整流成直流(给内部电池充电)

失去交流电时:切换成内部电池提供直流电源(有切换延时,通常10毫秒以下)---->逆变成220V交流(接NAS、电脑等用电器)

显然,在线式UPS没有电池切换供电延时,用电设备几乎感受不到停电影响;后备式有几个毫秒的切换时间,正常情况下对用电设备无影响,若NAS或电脑电源质量不过关,有可能掉电重启和死机,不过几率非常小。

所以在线式UPS优于后备式UPS,有预算尽量上在线式UPS。要求不高(穷)买APC BK500-CH(后备式)够用了给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案 。

二、保姆方案思路

对于成品NAS尤其是群晖,对市面上的UPS支持都很好,usb插上就能用,gen8直接裸装dsm或win系统也类似,没啥好讲的。主要说说gen8安装esxi后如何与UPS配合实现停电自动关机,确保数据安全。

APC BK500-CH UPS为例,文章《基于APCUPSD实现断电时ESXi自动关机》(链接:http://blog.ltns.info/linux/esxi_auto_shutdown_with_apcupsd/)对gen8与UPS配合实现断电自动关机作了详细介绍,但使用下来至少有2个方面的不足:1、必须单独建立虚拟winxp运行APCUPSD客户端,占用gen8系统资源;2、最大的不足是断电触发gen8自动关机后,UPS不能自行关闭自身电源,直至电池耗尽,严重影响UPS使用寿命,下次再停电可能直接挂掉失去保姆作用。

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

                                                   基于APCUPSD实现断电时ESXi自动关机

于是对现有方案进行改进,经多次实验,最终方案如下:

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

仍然用APCUPSD实现对UPS供电情况进行监视和控制,不同的是需要另备能刷lede(openwrt)并且带usb接口的路由器,将APCUPSD客户端运行于路由器上,结合监控脚本,实现停电后能依次关闭esxi客户机(dsm等)--->esxi系统--->gen8物理机--->UPS自身电源(路由此时也断电,但对路由无不良影响),并且来电后能自动开启UPS,自动启动gen8及相关系统。

三、方案具体实践

1、路由器准备

带有usb口能刷lede(openwrt)的都可以,目的是安装apcupsd并通过usb连接线实现ups监控。本人路由器为wrt1900acs。配置步骤如下:

领势( LINKSYS )WRT1900ACS 双频千兆无线路由器1299元京东去购买

(1)刷入lede(openwrt)系统

(2)用putty ssh进入路由器,opkg update

(3)安装软件包:

opkg  install kmod-hid

opkg  install kmod-hid-generic

opkg  install kmod-usb-hid

opkg  install apcupsd

期间有其他依赖包,安装程序会自动下载。安装完毕后用winscp进入路由器,首先进入目录/etc/apcupsd,有如下文件(见下图)

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

编辑配置文件/etc/apcupsd/apcupsd.conf

找到UPSCABLE 一行,填上usb(见下图)

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

找到UPSTYPE 一行,按下图改

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

找到NETSERVER一行,确认与下图一致,保存文件。

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

按下图修改/etc/init.d/apcupsd(选中部分)

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

putty ssh 登陆路由,运行命令:

/etc/init.d/apcupsd enable

将APC BK500-CH通信线usb口插入路由器,重启路由器。路由重启成功后,用putty ssh进入路由器,输入命令检测ups状态:

/usr/sbin/apcaccess

如果出现如下图信息,说明ups已被路由正确识别,否则请检查之前步骤是否遗漏或错误。如果出现诸如端口无权限访问等提示信息,请安装软件包haveged再试。

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

至此,路由器配置完毕。

2、esxi关机脚本

该脚本参考自文章《基于APCUPSD实现断电时ESXi自动关机》(链接:http://blog.ltns.info/linux/esxi_auto_shutdown_with_apcupsd/),可直接到文章主页按提示下载。

本人对脚本进行了优化(加入了esxi客户机关机状态判断,若当前esxi客户机已关闭,立即关闭下一客户机,缩短esxi关机时间等待,具体自己体会),下载地址:https://pan.baidu.com/s/1skUtrRn       提取码:e8n7     

注意将脚本ups.sh中的日志存储路径改为你自己的esxi数据存储路径,如本例为/vmfs/volumes/OS/ups.log

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

开启esxi的ssh功能,利用winscp将下载好的关机脚本放入esxi 数据存储(datastore)中,如/vmfs/volumes/OS/ups.sh,并给ups.sh增加执行权限(如何开启esxi的ssh,如何增加脚本执行权限,度娘有)。

3、实现停电时路由apcupsd客户端自动调用esxi关机脚本

(1)打通路由远程调用gen8 esxi 关机脚本的通道

apcupsd运行于路由,ups关机脚本放在gen8的esxi数据存储中,为实现停电自动执行ups关机脚本,必须在路由端用pubkey方式ssh登陆进esxi后远程调用/vmfs/volumes/OS/ups.sh。该过程实现方法如下:

首先在路由端生成生成密钥和公钥,用putty ssh 进路由,输入如下命令:

mkdir /root/.ssh/

dropbearkey -t rsa -f ~/.ssh/id_rsa.db

生成完毕后有类似下图输出:

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案在输出的内容中选择”ssh-rsa AAAAB…...y9KdM= root@LEDE“这一段拷贝至gen8 esxi 的/etc/ssh/keys-root/authorized_keys文件中(如无此文件,新建一个),保存,重启esxi。

下面进行远程调用验证(这一步必须做,目的是让路由保存ssh登陆gen8 esxi的指纹信息),ssh登入路由,输入如下命令:

ssh -i /root/.ssh/id_rsa.db root@你的gen8 esxi的管理ip

第一次执行会有安全提示,输入"y"并回车,若ssh显示的登陆账号已变为root@你的esxi名称,则路由与gen8 esxi之间的联系已建立,下一步可测试远程调用关机脚本,输入如下命令:

ssh -i /root/.ssh/id_rsa.db root@你的gen8 esxi的管理ip /vmfs/volumes/OS/ups.sh

若esxi开启关机流程(可在vmware client里看到),说明路由远程调用gen8 esxi关机脚本成功,bingo,你离成功不远了给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案 ,可进行下一步设置。

(2)路由端apcupsd脚本设置

通过研究apcupsd的wiki文档,发现当apcupsd检测到ups交流电源停电后,首先调用/etc/apcupsd/apccontrol中的powerout代码段,经过一定延时(对应配置文件/etc/apcupsd/apcupsd.conf中的ONBATTERYDELAY 参数),会触发onbattery事件,并执行/etc/apcupsd/onbattery脚本,当ups交流电源恢复后,apcupsd会调用/etc/apcupsd/offbattery脚本,于是考虑在这里做点文章给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案 。

经多次实验,如果直接把远程关机代码“ssh -i /root/.ssh/id_rsa.db root@你的gen8 esxi的管理ip /vmfs/volumes/OS/ups.sh”放入etc/apcupsd/onbattery脚本或etc/apcupsd/apccontrol 脚本的powerout代码段中,apcupsd检测到ups交流电源停电后,该远程关机代码都不会被执行,估计是apcupsd的bug,于是采用“cron计划任务+onbattery事件”结合的方式实现实时监视ups状态并在停电时及时自动调用关机脚本的功能,简单说就是cron计划任务调用ups监视脚本“upscheck”并进而调用esxi远程关机脚本,onbattery事件触发后运行etc/apcupsd/onbattery脚本,检测gen8是否已关机,若已完成关机则立即执行ups关机命令。具体过程如下:

按下图修改/etc/apcupsd/onbattery(图看不清请右键点新窗口打开放大,没办法,zdm贴不了代码,图片也被强制压缩给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案 )

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

按下图修改/etc/apcupsd/offbattery

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

按下列图打开/etc/apcupsd/apccontrol增加或修改对应位置代码并保存

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案


给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

按下图修改/etc/init.d/apcupsd

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

putty ssh 登陆路由,运行命令:

/etc/init.d/apcupsd enable

(3)路由端ups监控脚本设置

在/root/目录下新建文件upscheck,按下图增加代码(图看不清请右键点新窗口打开):

给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案

保存后,为upscheck文件增加执行权限。

(4)crontab计划任务设置

将下列内容填入路由器的计划任务中,本例每10秒调用一次/root/upscheck 脚本进行检测。保存后最好重启一次路由。

* * * * * /root/upscheck > /dev/null 2>&1

* * * * * sleep 10 && /root/upscheck > /dev/null 2>&1

* * * * * sleep 20 && /root/upscheck > /dev/null 2>&1

* * * * * sleep 30 && /root/upscheck > /dev/null 2>&1

* * * * * sleep 40 && /root/upscheck > /dev/null 2>&1

* * * * * sleep 48 && /root/upscheck > /dev/null 2>&1

(5)关机流程测试

putty ssh 登入路由器,输入如下命令(无需拔掉UPS电源插头):

touch /etc/powerfail

10秒后刷新并观察日志/var/log/upscheck.log是否变化、/root/shutdown.log是否生成,同时在vmware client里是否看到esxi启动关机流程,若上述现象都存在,说明你成功了给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案 。

在gen8完全关闭后1分钟内,ups将自动关闭自身电源,因UPS电源插头未拔掉,ups立刻恢复自身电源并正常供电。

(6)断电测试

请在“关机流程测试”正确完成的前提下进行断电测试。“关机流程测试”完成后,确认路由正常运转,手动打开gen8电源,启动esxi,esxi启动完毕后(无需启动虚拟客户机),拔掉ups电源插头给你的NAS(GEN8之esxi+dsm)找个靠谱保姆:一种实用UPS方案 完成你的终极测试。

正确结果为:ups电源插头拔掉后esxi启动关机流程,gen8关闭后1分钟内ups自动切断自身电源(电源指示灯灭)。插上ups电源插头后ups自动打开自身电源并给路由器、gen8正常供电。

至于来电后自动启动gen8,应该很简单,gen8  bios里有。

推荐关注:
经验
标签:经验 +关注
其他电脑配件
分类:其他电脑配件 +关注

提示

鼠标移到标签上方,

尝试关注标签~

相关热门原创
评论154

发表评论请 登录
  • 最新
  • 最热
评论举报

请选择举报理由

723 154

关注数量超出限制,请先删除部分内容再尝试

关注数量超出限制,
请先删除部分内容再尝试

登录
注册
用户名/邮箱
密码
验证码
看不清?点击更换
看不清?点击更换 忘记密码?

已收藏
去我的收藏夹 >

已取消收藏
去我的收藏夹 >

小提示