代码库:https://github.com/13620557355/ESXI-poweroff-automatic-shutdown
解决这个问题的方法有很多种,这里的解决方案是通过编程实现。
思路:
通过一台工控机集成一个断电监控模块通过串口来监控市电(之所以不跟UPS集成,是因为UPS品牌众多,不通用),一旦监控到市电断电,就执行相应的关闭(集群)操作(发送网络指令),监控到市电通电后,执行相应的唤醒(集群)操作。
关闭流程如下:
1.指定的虚拟机热关机(顺序)—>(间隔时间)—>余下所有虚拟机热关机—>(间隔时间)—>所有ESXI操作系统热关机,最后物理服务器处于关机状态。建议先将一些管理的服务器先进行关闭(例如vcenter、horizon等服务),防止在热关机时其它虚拟机时又被vcenter、horizon等服务唤醒.
2.另外,我们加了一个环境温度的传感器,一旦数据中心温度过高执行关机操作,关机操作同断电一致。
通电唤醒流程如下:
根据MAC地址广播唤醒(网口唤醒)物理主机—>(ESXI唤醒所需大约时间)—>第一批虚拟机开机—>(间隔时间)—>第二批虚拟开机—>(间隔时间)—>第三批虚拟开机。建议先将一些依赖性的虚拟服务器(例如:数据库服务、域控服务等)放在第一批,将其他需要依赖第一批服务器启动(例如:vcenter、horizon等服务)的放在第二批,然后是第三批。
注:根据MAC地址唤醒(网口唤醒)物理主机需要注意广播隔离,不同网段之间自行设置网络。