Question

Je suis en train d'écrire une petite application proxy qui devrait être redondante, par exemple proxy primaire sera en cours d'exécution sur un serveur et une redondance fonctionne sur un serveur distinct. Yat-il un cadre simple de haute disponibilité que je peux utiliser pour mettre en œuvre cette redondance? Par exemple, ce cadre HA enverrait pings entre les instances et lever une sorte d'exception ou de la notification de l'autre instance lorsque le premier descend.

Était-ce utile?

La solution

Construire un tel système a été mon travail de routine au cours des dernières années. J'ai trouvé JGroups un outil très utilisable pour recevoir et traiter ce genre d'événements de regroupement. Tel est le cas si vous voulez construire votre propre infrastructure HA. Je ne sais pas, mais peut-être dans votre cas juste un proxy simple, inverse, comme HAProxy peut être suffisant.

Autres conseils

Si vous voulez HA sans problème, il suffit d'utiliser une équilibreur de charge avec une capacité HA par exemple UltraMonkey , keepalived etc.

Dans une configuration HA, on indiquera à utiliser IP virtuelle, même si vous auriez ce ping / notify fonctionnalité en tant que cadre, vous aurez encore des choses à faire (commencer à répondre aux demandes au virtuel IP une fois l'autre instance a échoué). Donc, à moins que vous cherchez une occasion d'apprentissage, je conseille l'aide d'un middleware au lieu de coder vous-même à l'aide de cadres.

Il y a nombre de contrôles sanitaires que vous pouvez configurer pour ces intergiciels. Un simple pourrait healthcheck par exemple, le feu d'une requête GET à votre application. périodiquement et l'apparence d'une chaîne spécifique (par exemple « XXX en cours d'exécution. ») dans la réponse pour vous assurer que votre application. fonctionne très bien.

Vous ne fournissez pas beaucoup de détails sur le travail de votre application ne, donc en fonction de la façon dont stateful il est, si elle peut tolérer dataloss mineur, il est temps critique, faire le temps de développement de valeur que vous au fil du temps de la machine, vous pouvez une variation de spectre de solutions.

Il y a quelques bonnes suggestions ci-dessus, je rajouterais: jeter un oeil à JMS et la messagerie persistante. Habituellement, ces récupération de faire tout à fait banal, mais au prix de succès de latence (à moins que vous BYU un produit commercial et d'apprendre bien ou de payer le fournisseur pour régler votre application). Avec files d'attente JMS, vous pouvez mettre en œuvre un traitement actif-actif et Epargnez-vous les maux de tête de détection de panne.

Une autre direction à regarder est distribuée la gestion de l'État / cadre regroupement comme GigaSpaces, cohérence, pierres précieuses, Infinispan, GridGain et Teracotta. Ceux-ci peuvent reproduire votre qualité des données et de variant garantie de niveaux de services. La plupart d'entre eux viennent avec un certain type de détection de défaillance et d'un mécanisme de gestion distribué.

Hadoop est un bon endroit pour commencer

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top