2010-06-30 20 views
1

J'ai un certain nombre de serveurs Windows. Je veux exécuter une copie du même service Windows (écrit en .NET) sur chacun des serveurs de sorte qu'à un moment donné, un seul d'entre eux soit "actif" et tous les autres soient passifs. Si le service Windows actif meurt alors très peu de temps après, un, et un seul, des services de fenêtres passifs restants deviennent actifs..net algorithme de cluster passif actif

Des idées de moyens simples pour y parvenir?

Répondre

2

Bien que vous deviez les synchroniser, le moyen le plus simple serait d'avoir une entrée quelque part dans une base de données à laquelle ils peuvent tous accéder. Avoir le service actif mettre à jour une ligne particulière, etc tant de minutes. Si une mise à jour n'est pas trouvée dans un laps de temps spécifique, les autres services peuvent prendre cela comme l'actif est déconnecté. Bien sûr, votre problème ici est que si la base de données se déconnecte, les services auront des problèmes, c'est donc potentiellement un point de défaillance unique. Vous pouvez atténuer cela en ayant le db groupé aussi bien. Vous pouvez tous les faire communiquer entre eux comme un réseau pair à pair, mais ce sera plus de travail, pour essentiellement le même résultat, même si cette approche a ses avantages.

+0

la méthode db clustered est la solution actuelle que j'ai. C'est une solution peer-to-peer que je voulais mais je n'ai pas pensé à un moyen d'éviter les problèmes de synchronisation qui pourraient causer plus d'un actif. –

+0

La manière la plus simple de procéder consiste à vérifier que tous les services sont actifs à différents intervalles. Une fois qu'un service se rend compte qu'il n'y a pas de service actif en cours, demandez-lui de communiquer à tous les autres et dites-leur: "Hé, j'ai ça, pas besoin de me réveiller." C'est eux qui deviennent actifs pendant que les autres dorment. – kemiller2002