2013-06-27 10 views

Antwort

58

Sie müssen Ihre Knoten benennen und den gleichen Cookie auf beiden Knoten verwenden.

In Maschine 1:

iex --name [email protected] --cookie a_cookie_string 

In Maschine 2:

iex --name [email protected] --cookie a_cookie_string 

Nun werden die beiden Maschinen miteinander kommunizieren können. Um es zu testen, können Sie so etwas wie diese, auf machine1 tun:

iex([email protected])1> Node.connect :"[email protected]" 
true 

iex([email protected])2> print_node_name = fn -> IO.puts Node.self end 
#Function<erl_eval.20.80484245> 

iex([email protected])3> Node.spawn(:"[email protected]", print_node_name) 
[email protected] 
#PID<7789.49.0> 

Domain-Name machine1.com und machine2.com können auch mit den IP-Adressen der Maschinen geändert werden.

+1

Cool, arbeitet aussehen soll dies! :) Ich probiere diesen Ansatz bereits, benutze aber Domains anstelle von IP-Adressen. Vielen Dank – ChaosSteffen

+2

BTW: Die Knotennamen können die gleichen vor dem '@' Zeichen sein, solange der Domain-Name Teil ist anders (die Namen müssen im Netzwerk eindeutig sein, also wenn Sie IP-Adressen für Ihre Maschinen als diese verwenden ist der einzigartige Teil). Beispiel: 'node @ 192.168.0.2' und' node @ 192.168.0.3' funktionieren ebenfalls. (Nur erwähnt, um Ihren Code in Bezug auf Maschinen-/Knotennamen zu vereinfachen.) – asaaki

1

Wenn Sie versuchen, Knoten über Code zu verbinden: Sie müssen Ihren laufenden Code in einen verteilten Knoten verwandeln. Führen Sie dazu Node.start(:fullNameOfServer) aus.

Beispiel: Wenn Ihre IP 192.168.0.1 ist, können Sie einen vollständigen Knotennamen wie :"[email protected]"

Sobald Sie Ihren Knoten in einem verteilten Knoten drehen haben, setzen Sie das Cookie: Node.set_cookie :cookie_name

Schließlich Sie müssen eine Verbindung mit dem entfernten Knoten herstellen. (Sie müssen auch Node.start und Node.set_cookie auf dem Remote-Knoten) Um dies zu tun, benötigen Sie den Namen des Remote-Knotens. Nehmen wir an, der Name des entfernten Knotens lautet [email protected] (unter der Annahme, dass dieser Knoten ein anderer Computer im selben lokalen Netzwerk ist). Der entsprechende Code sieht aus wie Node.connect :"[email protected]"

Sie können jetzt Node.list ausführen, um die [email protected] zu sehen, die auf [email protected] verfügbar ist und umgekehrt.

die oben genannten Punkte zusammenfassend, Ihr Code so etwas wie

Auf den Foo Maschine

Node.start :"[email protected]" #this is the IP of the machine on which you run the code 
Node.set_cookie :cookie_name 
Node.connect "[email protected]" 

Auf der Bar Maschine

Node.start :"[email protected]" 
Node.set_cookie :cookie_name 
Verwandte Themen