Wie kann ich zwei Erlang/Elixir-Knoten von zwei verschiedenen Maschinen über eine Netzwerkverbindung verbinden?Wie verbinde ich zwei Elixir-Knoten über ein lokales Netzwerk?
Antwort
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.
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
- 1. Python Service Discovery: Werbung einen Dienst über ein lokales Netzwerk
- 2. SQL Express-Verbindung über lokales Netzwerk
- 3. Client & Server Keine Verbindung über lokales Netzwerk
- 4. Wie begehe ich ein Verzeichnis über ein lokales Netzwerk mit PHP?
- 5. API Projekt lokales Netzwerk
- 6. Wie Mutex über ein Netzwerk?
- 7. Ausführen von Apps auf Genymotion über lokales Netzwerk
- 8. Wie verbinde ich mich mit versteckten Wifi-Netzwerk mit nmcli
- 9. xampp und acces lokales Netzwerk
- 10. UWP Lokales Netzwerk Loopback aktivieren
- 11. Wie verbinde ich zwei Layout-Java-Android?
- 12. Wie verbinde ich dynamisch zwischen zwei Tabellen
- 13. Beobachter über ein Netzwerk
- 14. Wie verbinde ich ein Video?
- 15. Wie verbinde ich zwei Pfade in C#?
- 16. Wie verbinde ich zwei Linien in vi?
- 17. Wie verbinde ich zwei Elemente eines Vektors?
- 18. Rails-Anwendung für lokales Netzwerk nicht sichtbar
- 19. Wie verbinde ich meinen Laptop über das Internet mit meinem Campus-Netzwerk?
- 20. Wie verbinde ich verdrahtetes Netzwerk in Fedora/Ubuntu über ISP (Benutzername und Passwort)?
- 21. Gemeinsame Nutzung von Adobe Flash Projector (.EXE) über ein lokales Netzwerk
- 22. Verbinde zwei UIScrollViews miteinander
- 23. Wie kann ich ein lokales Juwel installieren?
- 24. Wie verbinde ich ein Paket mit Nk.bin?
- 25. Wie verbinde ich zwei Raspberry Pi mit OPC UA?
- 26. KonvaJS: Wie verbinde ich zwei Formen mit einem Pfeil?
- 27. IIS Self Signed Certificate Funktioniert lokales Netzwerk, aber nicht Internet
- 28. Wie verbinde ich meine asp.net
- 29. Wie richte ich ein lokales Python-Bibliotheksverzeichnis/PYTHONPATH ein?
- 30. Abfrage eines Windows-Dienstes über ein Netzwerk
Cool, arbeitet aussehen soll dies! :) Ich probiere diesen Ansatz bereits, benutze aber Domains anstelle von IP-Adressen. Vielen Dank – ChaosSteffen
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