2010-06-30 5 views
1

У меня есть несколько серверов Windows. Я хочу запустить на одном из серверов одну копию одной и той же службы Windows (написанную на .NET), так что в любой момент только один из них является «активным», а все остальные являются пассивными. Если активная служба Windows умирает, то очень короткое время спустя один и только один из оставшихся пассивных служб Windows становятся активными..net активный пассивный алгоритм кластера

Любые идеи простых способов достижения этого?

ответ

2

Ну, вам нужно синхронизировать их, самым простым способом было бы иметь запись где-нибудь в базе данных, к которой они могут получить доступ. Имейте активную службу, обновляющую определенную строку и т. Д. Каждый так много минут. Если обновление не найдено за определенный промежуток времени, другие службы могут принять это, поскольку активный отключен. Конечно, ваша проблема заключается в том, что если база данных отключится, то у служб возникнут проблемы, так что это потенциально одна точка отказа. Вы можете облегчить это, также имея кластер db.

Вы можете заставить их всех общаться друг с другом, как одноранговая сеть, но это будет больше работы, по существу, одного и того же результата, хотя этот подход имеет свои преимущества.

+0

метод кластеризации db - это текущее решение, которое у меня есть. Это одноранговое решение, которое я хотел, но не думал о том, как избежать проблем с синхронизацией, которые могут вызвать более одного активного. –

+0

Легкий способ сделать это, чтобы все они проверяли, активна ли услуга с разными интервалами. Как только служба осознает, что нет активной службы, пусть она общается со всеми остальными и говорит им: «Эй, у меня есть это. Не нужно просыпаться». Он становится активным, а остальные спят. – kemiller2002