Come posso collegare due nodi Erlang/Elixir di due macchine diverse tramite la connessione di rete?Come connettere due nodi Elixir tramite la rete locale?
risposta
È necessario assegnare un nome ai nodi e utilizzare lo stesso cookie su entrambi i nodi.
In macchina 1:
iex --name [email protected] --cookie a_cookie_string
In macchina 2:
iex --name [email protected] --cookie a_cookie_string
Ora le due macchine possono comunicare. Per provarlo, si può fare qualcosa di simile, il 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>
nomi di dominio machine1.com
e machine2.com
può essere modificato con gli indirizzi IP delle macchine pure.
Se si sta tentando di connettere i nodi tramite codice: È necessario trasformare il codice in esecuzione in un nodo distribuito. Per eseguire questa operazione, eseguire Node.start(:fullNameOfServer)
.
Ad esempio: se il vostro IP è 192.168.0.1, si può avere un nome nodo completo come :"[email protected]"
Una volta che si accende il nodo in un nodo di distribuzione, è possibile impostare il cookie: Node.set_cookie :cookie_name
Infine, è necessario stabilire una connessione con il nodo remoto. (È necessario anche Node.start e Node.set_cookie sul nodo remoto) Per fare ciò, è necessario il nome del nodo remoto. Supponiamo che il nome del nodo remoto sia [email protected] (supponendo che questo Nodo sia un altro computer sulla stessa rete locale). Il codice per eseguire questa operazione è Node.connect :"[email protected]"
È ora possibile eseguire Node.list per vedere lo [email protected]
disponibile su [email protected]
e viceversa.
Riassumendo i punti di cui sopra, il codice dovrebbe essere simile a
Sulla macchina 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]"
Sulla macchina Bar
Node.start :"[email protected]"
Node.set_cookie :cookie_name
- 1. Come connettere il database sulla rete locale SQL Server 2008
- 2. Impossibile accedere all'app sinatra tramite la rete locale
- 3. Impossibile collegare i nodi Elixir su MacBook Pro
- 4. WebRTC sulla rete locale?
- 5. Come connettere due server node.js con websocket?
- 6. Come connettere due SKSpriteNode usando SKPhysicsJointPin - swift
- 7. Come posso connettere/disconnettere/configurare una rete wireless in python?
- 8. Socket.io/node.js sulla rete locale?
- 9. Come connettere l'emulatore di Visual Studio 2015 Android alla rete?
- 10. Cassandra due nodi con ridondanza
- 11. Come connettere Grails 3.0 al mio database Mysql locale
- 12. Come connettere il DB locale MySQL di XAMPP usando JDBC?
- 13. Come avviare una connessione di rete locale programmaticamente tramite hotspot Wi-Fi su Android?
- 14. Applicazione Rails non visibile alla rete locale
- 15. Elixir: scrittura della funzione parametrizzata tramite & Notazione
- 16. Wildfly standalone nella rete locale
- 17. Come determinare se due nodi sono connessi?
- 18. Come proteggere una connessione MySQL tramite rete?
- 19. Come connettere un server socket tramite proxy HTTP
- 20. KonvaJS: come connettere due forme con una freccia?
- 21. come connettere due persone nel tuo sito web
- 22. Come selezionare i dati tramite ODBC da Elixir?
- 23. Come utilizzare il bluetooth per connettere due iPhone?
- 24. Come posso connettere due dispositivi Android via socket senza server
- 25. Determina la distanza tra due nodi casuali in un albero
- 26. Connessione rete WiFi tramite app
- 27. Messaggistica nella rete locale con .NET
- 28. Rilevamento di dispositivi nella rete locale
- 29. Come consentire arricciatura tramite un proxy locale?
- 30. Autenticazione Nginx eccetto quelli su rete locale
fredda, questo funziona! :) Ho già provato questo approccio ma ho usato i domini invece degli indirizzi IP. Grazie mille – ChaosSteffen
BTW: i nomi dei nodi possono essere gli stessi prima del simbolo '@ 'finché la parte del nome del dominio è diversa (i nomi devono essere univoci nella rete, quindi se si usano gli indirizzi IP per le macchine di questo è la parte unica). Esempio: 'node @ 192.168.0.2' e' node @ 192.168.0.3' sta funzionando. (Appena citato per forse semplificare il tuo codice relativo ai nomi di macchine/nodi.) – asaaki