2013-06-27 16 views

Odpowiedz

58

Musisz nazwać swoje węzły i użyć tego samego pliku cookie na obu węzłach.

W maszynie 1:

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

W maszynie 2:

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

Teraz obie maszyny mogą komunikować. By to sprawdzić, można zrobić coś takiego, na komputera Komputer1:

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> 

Domeny machine1.com i machine2.com można zmienić za pomocą adresów IP maszyn, jak również.

+1

cool, to działa! :) Już próbuję tego podejścia, ale użyłem domen zamiast adresów IP. Bardzo dziękuję – ChaosSteffen

+2

BTW: Nazwy węzłów mogą być takie same przed znakiem @, dopóki część nazwy domeny jest inna (nazwy muszą być unikalne w sieci, więc jeśli używasz adresów IP dla swoich maszyn, to jest unikalną częścią). Przykład: działa również 'node @ 192.168.0.2' i' node @ 192.168.0.3'. (Wspomniałem tylko, że może uprościć twój kod związany z nazwami komputerów/węzłów). – asaaki

1

Jeśli próbujesz połączyć węzły za pomocą kodu: Musisz zmienić swój kod operacyjny na węzeł rozproszony. Aby to zrobić, uruchom Node.start(:fullNameOfServer).

Np: jeśli Twój IP to 192.168.0.1, można mieć pełną nazwę węzła jak :"[email protected]"

Po włączeniu węzła do węzła rozproszonego można ustawić ciasteczko: Node.set_cookie :cookie_name

Wreszcie, musisz ustanowić połączenie ze zdalnym węzłem. (Musisz również Node.start i Node.set_cookie na zdalnym węźle) Aby to zrobić, potrzebujesz nazwy zdalnego węzła. Załóżmy, że nazwa zdalnego węzła to [email protected] (zakładając, że węzeł jest innym komputerem w tej samej sieci lokalnej). Kod tego robić, wygląda Node.connect :"[email protected]"

Teraz można uruchomić Node.list aby zobaczyć [email protected] dostępny na [email protected] i vice versa.

Podsumowując powyższe punkty, Twój kod powinien wyglądać mniej więcej tak

Na komputerze Foo

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]" 

Na komputerze Bar

Node.start :"[email protected]" 
Node.set_cookie :cookie_name 
Powiązane problemy