Как использовать .NET для координации/общения между узлами кластера MSCS

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

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

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


person Ambal    schedule 16.06.2011    source источник


Ответы (1)


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

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

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

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

person Eric Nicholson    schedule 20.06.2011