Вот что сработало для меня.
С точки зрения инфраструктуры вам потребуется кластеризовать 2 сервера Windows. (Подойдут 2 стандартных блока Windows Server, компонент Clustering может быть установлен и настроен, большинство администраторов sys должны знать, как это сделать.) Затем установите службу на обоих узлах кластера и отключите их оба и установите значение MANUAL. запускать. Затем добавьте кластерный ресурс в администратор кластеров Windows для своей службы, которая будет управлять включением и выключением службы на любом активном узле. Позвольте кластеру Windows управлять, когда ваша служба работает и на каком узле. Это простая часть кластеризации вашего сервиса.
С точки обслуживания вы захотите спроектировать свой сервис таким образом, чтобы он мог быть как можно без состояний. Это своего рода неудачный совет, но он действительно зависит от того, что делает ваш сервис. При проектировании просто предположите, что в какой-то момент в течение времени жизни кода он остановится в самый неподходящий момент. Как служба на узле 2 узнает, где можно забрать, где остановился узел 1? Это сложная часть, для которой вам нужно разработать. В зависимости от того, что делает ваша служба, вы можете оставить последнее выполненное задание в таблице базы данных или в файле общих данных. Вы также можете запустить его с самого начала и дважды проверить, было ли выполнено это задание, прежде чем выполнять его.
Опять же, это действительно будет зависеть от того, что сервис должен выполнить. Надеюсь, это поможет.