Если у Вас каждый сервер работает от выделенного ИБП (Источника Бесперебойного Питания) и на каждом сервере стоит ПО от этого ИБП, которое аккуратно выключает сервер, в случае потери питания и приближении заряда батарей ИБП к критической точке, и все это действительно работает, могу Вас поздравить, дальше будет скучно.
Если у Вас один могучий ИБП, который держит на своих могучих батареях целую группу серверов - то милости просим, эта тема для вас, если вы еще не настроили все как надо. Ну, или если вы планируете обзавестись такой системой, то, надеюсь, пример ниже Вам поможет.
В первую очередь, естественно, нужно после сборки все обработать напильником установить ПО от ИБП, и допустим, если Вы счастливый обладатель APC, то в Ваших руках софт - PowerChute Business Edition, который замечательно настраивается и умеет отключать сервер, а при грамотной настройке и группу серверов, но на сколько я помню, в базовом варианте, т.е. в комплекте с их ИБП идет лицензия на отключение всего пяти серверов. А если их больше, то тогда есть возможность запустить скрипт, программу или батч файл. Вот о нем дальше и пойдет речь.
И так, по умолчанию дается default.cmd
следующего содержания:
rem -----------------------------------------------------------------------------
rem
rem Maximize for best viewing
rem This command file provides examples of proper command file syntax
rem
rem Command Files run by PowerChute Business Edition must be placed in this directory.
rem
rem Use the full path name of executable programs and external command files.
rem
rem The @START command must be used to run executable programs (see example below).
rem For the @START command, path names that include spaces must be enclosed in quotes;
rem arguments for the executable must be outside the quotes. A double quote must
rem precede the quoted path name. For example, to execute a command file in
rem c:\Program Files\APC\PowerChute Business Edition\agent\cmdfiles called myShut.exe,
rem the following line should be entered in the command file:
rem
rem @START "" "c:\Program Files\APC\PowerChute Business Edition\agent\cmdfiles\myShut.exe"
rem
rem -----------------------------------------------------------------------------
Можно сделать следующее (добавить в конец этого файла):
@START "" c:\CMD\psshutdown.exe -k -c -t 5 -u admin@domain.ru -p PaSsWoRd \\@c:\CMD\servlist.txt
При этом используется одна из утилит набора PsTools, который можно свободно скачать с сайта technet.microsoft.com, в комплекте идет очень подробный манул, по работе с утилитой.
В файле servlist.txt
может быть сколько угодно серверов, нужно помнить только одно, при таком воздействии отключение серверов будет происходить последовательно, и стоит задуматься о параллельном отключении серверов. Что же можно для этого сделать?
Можно сделать множественный вызов как в самом default.cmd
файле, так и через другие батч файлы. Точнее, команда @START
по своей сути вызывает еще один процесс, за пределами среды батч файла в котором она была запущена. Т.е. можно выполнить следующее:
@START "" c:\CMD\psshutdown.exe -k -c -t 5 -u admin@domain.ru -p PaSsWoRd \\@c:\CMD\servlist1.txt
@START "" c:\CMD\psshutdown.exe -k -c -t 5 -u admin@domain.ru -p PaSsWoRd \\@c:\CMD\servlist2.txt
В этом случае одновременно будет происходить процесс завершения работы по двум спискам.
В качестве примера, вот коды трех файлов, можете поиграться на досуге, параллельные процессы:
main.cmd
echo off
cls
@START cmd /C slave1.cmd
@START cmd /C slave2.cmd
pause
slave1.cmd
echo off
cls
echo SLAVE 1
pause
slave2.cmd
echo off
cls
echo SLAVE 2
pause
Надеюсь, Вам пригодится.
P.S.
У всех производителей ИБП свой софт, и в каждом случае серверное и клиентское ПО настраивается по своему.