2011-02-03 2 views
2

У меня есть проект, в котором мы хотели бы сделать следующее:Запустите службу с другого компьютера

  • Установить службу, выполнение нескольких задач. это будет помещено в компьютер A и B
  • Другой компьютер C служит свидетелем;
  • В начале запускается только A, потому что работа, которую он выполняет, не может быть дублирована;
  • В случае сбоя, тогда B должен начаться. C должен быть тот, который проверяет, что он работает или нет;
  • Sholud Возвращение обратно после сбоя, затем B все еще работает и A находится в режиме ожидания;
  • Должно ли B затем не работать, C начать Услуги,
  • И так далее.

Возможно ли, если да как? Оба A и B имеют на них SQL Server 2008, но эта часть позаботится о нас.

Большое спасибо.

EDIT: Я пытался остановить службу (что я знаю, работает), и это dosn't похоже на работу:

Dim path As ManagementPath = New ManagementPath 
    path.Server = System.Environment.MachineName 
    path.NamespacePath = "root\CIMV2" 
    path.RelativePath = "Win32_service.Name='" + strServiceName + "'" 
    Dim service As ManagementObject = New ManagementObject(path) 
    Dim temp As ManagementBaseObject = service.InvokeMethod("StopService", Nothing, Nothing) 

В этом случае strServiceName является "CommunicationInterface", которая является услугой I недавно добавить и запустить вручную.

Я бег под окнами 7.

+0

На каком уровне вам нужно реализовать это? – r3st0r3

+0

В Windows это называется Microsoft Cluster Service или Veritas Cluster Server. В AIX это HACMP или PowerHA. На Linux есть множество мониторов, включая Red Hat Cluster или Veritas. Вы не знаете об этом или пытаетесь получить «кластер бедных» и избегаете стоимости лицензии? Сделать это правильно - нетривиальный проект, поэтому есть так много доступных вариантов поставщиков. –

+0

Я просто пытаюсь заставить все работать: p Я буду использовать все, что угодно, но так как я не знаю этого поля, может быть много чего я забыл. Это то, что вы пришли :) –

ответ

1

Просто установите службы не запускаются автоматически, а затем имеют С компьютером начать их по мере необходимости, используя класс WMI Win32_Service. Вы также можете использовать этот класс для запроса, если службы работают или нет.

Посмотрите на методы StartService и StopService так же, как и на State.

Вот некоторые примеры кода: Service Management in VB.NET

+0

Было бы здорово, но как мы опросили службы с другого компьютера? –

+0

@David: компьютер C подключится к A и/или B с помощью WMI и с помощью 'Win32_Service.State', чтобы проверить состояние интересующей вас службы. Если вы посмотрите на образец кода из моего ответа, просто измените 'System.Environment.MachineName' на имя A или B, чтобы подключиться к ним удаленно. –

+0

Человек, если это работает, я отказываюсь от 2 upvotes ... О, верно, я не могу :( –

1

Вы должны смотреть в Windows Server 2008 Failover Clusters. С этой страницы:

Отказоустойчивый кластер представляет собой группу независимых компьютеров, которые работают вместе, чтобы повысить доступность приложений и услуг. Кластерные серверы (называемые узлами) - это , подключенные физическими кабелями, и по программному обеспечению . Если один из узлов кластера выходит из строя, другой узел начинает предоставлять услугу (процесс, известный как переход на другой ресурс). У пользователей возникает как минимум сбоев в работе.

+0

Это именно то, что я хочу сделать. Это что-то, что нужно сделать путем кодирования или это можно настроить каким-то другим способом.Я не знаю ничего подобного. –

+0

David - это может быть сделано с помощью кодирования. В основном вы делаете свое приложение «осведомленным о кластере», реализуя набор интерфейсов, которые может вызвать подсистема отказоустойчивого кластера, когда он «хочет» выполнить переход на другой ресурс. –

+0

Хорошо. Я проверю это. Идеальный случай заключается в том, что я могу сделать это с минимальным кодом или вообще без кода. в таких вещах. –

Смежные вопросы