2013-06-27 28 views

Trả lời

58

Bạn phải đặt tên cho các nút của mình và sử dụng cùng một cookie trên cả hai nút.

Trong máy 1:

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

Trong máy 2:

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

Bây giờ hai máy có thể giao tiếp. Để kiểm tra, bạn có thể làm điều gì đó như thế này, trên machine1:

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> 

Tên miền machine1.commachine2.com có thể được thay đổi với các địa chỉ IP của các máy là tốt.

+1

mát, công trình này! :) Tôi đã thử phương pháp này nhưng sử dụng tên miền thay vì địa chỉ ip. Cảm ơn rất nhiều – ChaosSteffen

+2

BTW: Tên nút có thể giống nhau trước khi ký hiệu '@' miễn là phần tên miền khác (tên phải là duy nhất trong mạng, vì vậy nếu bạn sử dụng địa chỉ IP cho máy của mình hơn là phần duy nhất). Ví dụ: 'node @ 192.168.0.2' và' node @ 192.168.0.3' cũng đang hoạt động. (Chỉ cần đề cập đến có thể đơn giản hóa mã của bạn liên quan đến tên máy/nút.) – asaaki

1

Nếu bạn đang cố gắng kết nối Nút qua mã: Bạn cần phải bật mã đang chạy của mình thành nút được phân phối. Để làm điều này chạy Node.start(:fullNameOfServer).

Ví dụ: nếu IP của bạn là 192.168.0.1, bạn có thể có một tên Node đầy đủ như :"[email protected]"

Khi bạn bật nút của bạn vào một nút phân tán, bạn thiết lập các cookie: Node.set_cookie :cookie_name

Cuối cùng, bạn cần thiết lập kết nối với Nút từ xa. (Bạn cũng cần phải Node.start và Node.set_cookie trên nút điều khiển từ xa) Để thực hiện việc này, bạn cần tên của nút từ xa. Giả sử tên của nút từ xa là [email protected] (giả sử Node này là một máy tính khác trên cùng một mạng cục bộ). Mã để làm điều này, trông giống như Node.connect :"[email protected]"

Bây giờ bạn có thể chạy Node.list để xem [email protected] có sẵn trên [email protected] và ngược lại.

Khái quát những điểm nêu trên, mã của bạn sẽ giống như

Trên máy 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]" 

Trên máy Bar

Node.start :"[email protected]" 
Node.set_cookie :cookie_name 
Các vấn đề liên quan