So verteilen Sie Anwendungen über Knoten hinweg, ohne dass Sie alle Anwendungen als Teil des Distributed Hand-Shake starten müssen

9

Hintergrund

  • Ich habe eine Anwendung, die automatisch gestartet wird, wenn ein Knoten gestartet wird (mit .rel, .boot, etc.)
  • Ich möchte, dass die Anwendung auf alternative Knoten fail-over wird, wenn ein erster Knoten ausfällt.
  • Ich benutze Erlangs Distributed Application-Fähigkeit, um Fail-Over und Übernahme zu handhaben.

Problem

Das Problem besteht darin, dass ein Teil der verteilten Anwendungsverhandlungen darin besteht, dass die Anwendung bei allen Knoten gestartet wird, wenn der Nodes-Handshake bestimmt, welcher Knoten bleiben und welcher stillgelegt wird. Ich brauche die Anwendung, um nicht auf mehreren Knoten zu sein, wenn möglich.

Frage

  • Gibt es eine Möglichkeit, dass Knoten automatisch meine Anwendung starten außer , wenn sie an der Start-up-Verhandlung verteilter Anwendungen beteiligt sind? Alternativ
  • Wie erreiche ich, dass meine Anwendung unbeaufsichtigt und ohne Failover gestartet wird, ohne dass meine Anwendung (auch nur kurz) an mehreren Knoten gestartet werden muss?
Jr0 14.09.2012, 01:28
quelle

1 Antwort

4

Leider sind die Erlang-Übernahmekapazitäten und die Failover-Funktionen heutzutage ziemlich begrenzt, daher muss Ihre Anwendung auf allen Knoten laufen, damit diese Funktionen funktionieren.

Die einzige Idee, die mir in den Sinn kommt, ist ein bisschen verrückt und beinhaltet eine weitere Stufe der Indirektion, aber es könnte tatsächlich funktionieren.

Sie könnten eine gefälschte, einfache -Wrapper -Anwendung schreiben, die Sie dann auf allen Knoten starten. Diese Anwendung verwendet die standardmäßigen Erlang-Verteilungsfunktionen. Anschließend implementieren Sie Ihre Übernahme- / Failover-Strategien, indem Sie einfach Ihre ursprüngliche Anwendung starten:

%Vor%

Beachten Sie auch, dass wenn Sie application:start(my_app) für eine verteilte Anwendung in all Ihren Knoten eingeben, die Anwendung nicht auf allen Knoten gestartet wird. Sie können dies überprüfen, indem Sie application:which_applications() auf jedem der Knoten eingeben. Sie werden feststellen, wie die Anwendung läuft auf einem einzelnen Knoten.

Zum Schluss, darf ich fragen, warum Sie die Anwendung nicht auf mehr als einem Knoten starten können?

    
Roberto Aloi 18.09.2012 10:02
quelle

Tags und Links