Как использовать .NET для координации / связи между узлами кластера MSCS - PullRequest
3 голосов
/ 16 июня 2011

Мне нужно разработать приложение службы Windows .NET, которое должно работать в активном / активном кластере.

Экземпляр службы Windows (один экземпляр среди множества узлов кластера) должен прослушивать IBM Websphere MQ и распределять элементы очереди по всем узлам кластера (включая узел распространителя) в зависимости от нагрузки на каждый экземпляр службы. В случае сбоя основного узла другой экземпляр службы на дополнительном узле должен взять на себя задачу распределения. Кроме того, узел распространителя должен иметь возможность контролировать уровень параллелизма экземпляра TaskScheduler в службе Windows на всех узлах. Для этого я должен иметь возможность общаться между узлами кластера без таблицы БД или другой очереди.

Я гуглил и обнаружил, что доступен C / C ++ Platform SDK . Но существует ли какой-либо .NET API для проверки сердцебиения и выполнения внутрисвязи между узлами внутри кластерного сервера? Или, если вы могли бы предложить мне лучший способ реализовать это, было бы очень полезно. Спасибо.

1 Ответ

1 голос
/ 20 июня 2011

Вероятно, для этого есть гораздо лучшие платформы, чем Windows Clustering, но поскольку вы спросили о Windows Clustering, вот мое мнение:

API-интерфейс кластера MSCS / WSFC на самом деле не предоставляет механизма для внутрипроцессного взаимодействияза пределами довольно ограниченной кластерной базы данных (на самом деле это просто реплицированный раздел реестра).Но вы можете использовать API / инструменты кластера для размещения процесса координатора и обеспечения высокой доступности.

Самый простой способ сделать это - просто создать нормальную службу Windows для вашего координатора, а затем использовать встроенную функцию "Generic Service "кластерный ресурс / тип приложения для его мониторинга.Это позволит вам назначить IP-адрес координатору, который будет следовать за ним по всему кластеру.Обратите внимание, что перемещение службы координатора может привести к сбоям в работе, поэтому в случае сбоя узла, на котором размещен координатор, будет время простоя, пока он запускается на выживающем узле.

На самом деле я не вижу причин для этогоинформировать кластер агентов обработки.Просто запустите их как сервисы на каждом узле, и пусть координатор отслеживает, какие из них находятся в сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...