Làm cách nào để kết nối hai nút Erlang/Elixir của hai máy khác nhau thông qua kết nối mạng?Làm thế nào để kết nối hai nút Elixir qua mạng cục bộ?
Trả lời
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.com
và machine2.com
có thể được thay đổi với các địa chỉ IP của các máy là tốt.
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
- 1. Làm thế nào để bắt đầu kết nối mạng cục bộ theo chương trình qua điểm phát sóng Wi-Fi trên Android?
- 2. Kết nối mạng WiFi qua ứng dụng
- 3. Truy vấn SQL qua hai kết nối?
- 4. Làm thế nào để xác định xem hai nút được kết nối?
- 5. Làm thế nào để kết nối XAMPP MySQL cục bộ DB bằng cách sử dụng JDBC?
- 6. Làm thế nào để kết nối hai điểm mà không vượt qua một con đường khác?
- 7. Làm cách nào để kiểm tra kết nối mạng?
- 8. Virtualbox guest OS - Kết nối với mạng nội bộ nhưng không kết nối Internet
- 9. Tắt kết nối mạng
- 10. Làm thế nào để buộc Windows để kết nối lại với ổ đĩa mạng
- 11. Kết nối với Máy chủ web cục bộ khi tôi đang ở ngoài mạng LAN
- 12. Làm thế nào để chuyển tệp giữa hai máy tính được kết nối trong python?
- 13. Kết nối với máy chủ cục bộ có đi ra ngoài mạng không?
- 14. Làm thế nào để đồng bộ hóa hai kho Subversion?
- 15. Làm thế nào để kết nối với cơ sở dữ liệu Heroku postgres từ một kết nối cục bộ trong php
- 16. Sao chép tập tin qua kết nối mạng gián đoạn
- 17. Làm cách nào để kết nối với hàng đợi MQseries cục bộ bằng Python?
- 18. Làm thế nào để hai máy tính kết nối với cùng một địa chỉ bên ngoài thông qua NAT?
- 19. Mạng Java "Kết nối bị từ chối: Kết nối"
- 20. Làm cách nào để tìm quy trình Unix sở hữu kết nối Ngủ cục bộ MySQL?
- 21. Làm cách nào để kiểm tra kết nối socket.io cục bộ?
- 22. Làm thế nào để bạn sử dụng cảm ứng để kết nối với cơ sở dữ liệu SQLite cục bộ?
- 23. Những cạm bẫy của kết nối được nhúng vào Derby qua mạng là gì?
- 24. Làm thế nào để chia sẻ jboss qua mạng
- 25. Có thể kết nối hai iPhone qua mạng WAN để có trải nghiệm chơi game thời gian thực không?
- 26. Erlang. Kết nối với nút cục bộ: *** LRI: Quá trình Shell đã chấm dứt
- 27. Làm thế nào để kết nối nội dung nút trong xaml?
- 28. Làm thế nào để vượt qua giới hạn document.domain khi mở tệp cục bộ?
- 29. Kết nối lại ổ đĩa mạng đã ngắt kết nối
- 30. Cách xác định kết nối đến từ máy cục bộ
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
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