2009-01-16 9 views
11

Der Versuch, zwei erlang Knoten miteinander zu sprechen: eine auf einem Ubuntu-Rechner und eine auf Windows XP.Erlang: Disallowed Nodes/Vielleicht Cookie-Frage

Wir bekommen eine "Verbindungsversuch von unzulässigen Knoten" Nachricht, die verhindert, dass ein Knoten Nachrichten von der anderen empfängt.

Sie verwenden beide 5.XXX-Versionen von Erlang OTP.

Beide Knoten haben die gleiche Cookie (.erlang.cookie)

Wir beginnen den Empfängerknoten mit:

erl -name [email protected] 

und Aufruf der Funktion auf es mit 'fred @ ipaddress' (in Einzel Zitate)

Wir haben Firewalls ausgeschaltet.

Was könnte die Verbindung sonst verhindern?

Update: Wir verwenden erlang: get_cookie(), um das Cookie auf beiden Knoten zu überprüfen, und die Werte sind unterschiedlich. So ist das das Problem. Wir denken, dass wir den Cookie setzen, indem wir dieselbe .erlang.cookie-Datei in das Verzeichnis schreiben, in dem wir erlang auf beiden Maschinen ausführen. Aber vielleicht ist das der falsche Ort?

Update 2: danke für die Antworten jeder. Wir haben Ranok's als unsere Antwort gewählt, weil es für uns gut funktioniert hat. Ich bin sicher, einige der alternativen Möglichkeiten, den Cookie zu setzen, wären auch in Ordnung.

Antwort

11

Wenn Sie das Erlang-System starten, gibt es außerdem ein Befehlszeilenflag -setcookie, mit dem Sie das Cookie zum Startzeitpunkt angeben können.

erl -name [email protected] -setcookie FOOBAR 

Hoffnung, die hilft, Jacob

+0

yep, danke, gearbeitet, die ein Genuss – interstar

1

Ein paar Dinge in den Sinn kommen:

  1. Haben Sie versucht, das Cookie über erlang Einstellung: set_cookie auf beiden Knoten?
  2. Wenn keine .erlang.cookie-Datei im $ HOME-Verzeichnis gefunden wird, wird eines erstellt. Könnte es sein, dass eine der .erlang.cookie-Dateien nicht auf dem richtigen Rechner liegt? Sie könnten Ihre Festplatten nach der Datei durchsuchen und wenn Sie mehr als die von Ihnen erstellte Datei finden, könnte erlang diese Datei dort abgelegt haben.
5

Beginnen Sie mit der Überprüfung jedes Knotens Cookie. Aus der Schale:

erlang:get_cookie(). 

Wenn sie nicht gleich sind, dann einer der Cookies des Knotens ändern, um die anderen entsprechen:

erlang:set_cookie(node(), "newcookie"). 

Wenn alles funktioniert müssen Sie sehen, warum die Cookie-Einstellung nicht ist wird aus der Konfigurationsdatei oder Befehlszeile arg ausgewählt.

2

Die Erlang-Cookie in dem Benutzerverzeichnis sein sollte. Nicht das Anwendungsverzeichnis.

So liegt bei Ihnen so etwas wie:

C:\Documents and Settings\InterstarUser\.erlang.cookie 

Sie können die Position von HOME mit dem Befehl env in der Befehlszeile sehen, ob ich richtig von meinem Windows-Tage erinnern.

2
erlang:set_cookie(node(), 'newcookie'). 

nicht

erlang:set_cookie(node(), "newcookie").