Jak mogę połączyć dwa węzły Erlang/Elixir dwóch różnych maszyn przez połączenie sieciowe?Jak połączyć dwa węzły Elixir za pośrednictwem sieci lokalnej?
Odpowiedz
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ż.
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
- 1. JavaFX: Jak połączyć dwa węzły za pomocą linii?
- 2. asymetryczne tworzenie klucza za pośrednictwem sieci
- 3. Jak mogę dodać węzły podsieci Jenkins za pośrednictwem interfejsu CLI?
- 4. Jak połączyć dwa ArrayLists?
- 5. jak połączyć dwa LPCWSTRy?
- 6. Wykrywanie urządzeń w sieci lokalnej
- 7. Jak ustalić, czy dwa węzły są połączone?
- 8. połączyć dwa pliki za pomocą awk
- 9. Jak skonfigurować Git w sieci lokalnej?
- 10. Jak połączyć dwa atomy/łańcuchy?
- 11. Jak połączyć dwa wyniki jQuery
- 12. Jak połączyć dwa SwiftyJSON obiektów
- 13. Jak połączyć dwa wchar_t * razem?
- 14. Jak połączyć dwa strumienie pamięci?
- 15. C++ i JMS - jak połączyć te dwa?
- 16. Jak przenieść plik java.util.Map za pośrednictwem usługi sieci Web?
- 17. jak wywołać api sieci web za pośrednictwem domeny ajax?
- 18. Jak przekazywać instancje klasy niestandardowej za pośrednictwem pracowników sieci Web?
- 19. Jak połączyć się z Postgresem za pośrednictwem Node.js
- 20. Jak połączyć się z serwerem SQL za pośrednictwem serwera proxy
- 21. Jak połączyć się z lokalnym serwerem MySQL za pośrednictwem Docker?
- 22. Pingowanie w sieci lokalnej w pythonie
- 23. Wybieranie komputera w sieci lokalnej jako serwera
- 24. Lista urządzeń w sieci lokalnej za pomocą polecenia ping
- 25. Jak połączyć dwa pliki avi za pomocą ffmpeg?
- 26. Jak połączyć dwa zapytania Lucene za pomocą OR?
- 27. Jak połączyć dwa transformatory Boost Geometry?
- 28. Python - Połączyć dwa słowniki, połączyć wartości ciągów?
- 29. Wiadomości w sieci lokalnej z .NET
- 30. Uruchamianie aplikacji na Genymotion w sieci lokalnej
cool, to działa! :) Już próbuję tego podejścia, ale użyłem domen zamiast adresów IP. Bardzo dziękuję – ChaosSteffen
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