Учитывая следующую ситуацию:
Есть ли служба, которую я могу установить на обеих машинах и которая часто проверяет работоспособность той же службы на другой машине? Если они оба видят друг друга, побеждает тот, у кого наивысший приоритет, и он включит (или оставит включенными) все зарегистрированные запущенные процессы. Другая служба остановит все зарегистрированные службы на своем компьютере.
В случае отказа машины с высоким приоритетом другая система обнаружит это и запустит службы.
Короче говоря: отказоустойчивый сервис
Я пытался найти что-то подобное в гугле, но ничего не нашел.
Я очень хочу найти существующее решение, иначе мне придется прибегать к собственному.
Если вам нужно подходящее решение, вы должны посмотреть либо на MSCS (если у вас есть общее хранилище), либо на NeverFail / WanSyncHA / DoubleTake (погуглите их и ознакомьтесь с техническими документами). Ручные сценарии подходят для базовых и очень примитивных вещей, но они могут привести к серьезному повреждению данных, если они не могут обеспечить общий доступ или не могут обнаружить splitbrain и избежать его.
Вы могли бы определенно свернуть свой собственный, возможно, сценарий PowerShell и запланированную задачу.
В противном случае вы можете использовать Microsoft Clustering. Возможно, вам придется провести некоторое исследование, чтобы узнать, поддерживает ли ваш сервис его, он предоставляет некоторые другие функции, которые, возможно, сложнее создать самостоятельно. например Восстановление после сбоя, группировка ресурсов (ваша служба, хранилище для службы, ключи реестра, сеть).
ок ... скатил свой.
Сделал небольшое сервисное приложение .Net, которое делает именно то, что я описал. С некоторыми уведомлениями системного журнала и возможностью уведомлять людей через sms в случае отказов.
Я посмотрю и постараюсь разместить его на codeplex или sourceforge, чтобы другие могли использовать / развивать
Когда это произойдет, я опубликую ссылку здесь, в комментариях.