Как подключить два узла Elixir через локальную сеть? - программирование
Подтвердить что ты не робот

Как подключить два узла Elixir через локальную сеть?

Как я могу подключить два узла Erlang/Elixir двух разных компьютеров через сетевое соединение?

4b9b3361

Ответ 1

Вы должны называть свои узлы и использовать один и тот же файл cookie на обоих узлах.

В машине 1:

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

В машине 2:

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

Теперь обе машины могут общаться. Чтобы проверить это, вы можете сделать что-то вроде этого, на 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> 

Доменные имена machine1.com и machine2.com могут быть изменены с помощью IP-адресов машин.

Ответ 2

Если вы пытаетесь подключить узлы через код: Вам нужно превратить ваш код в распределенный node. Для этого выполните Node.start(:fullNameOfServer).

Например: если ваш IP-адрес 192.168.0.1, вы можете иметь полное имя Node, например :"[email protected]"

Как только вы превратите свой Node в распределенный node, вы установите cookie: Node.set_cookie :cookie_name

Наконец, вам необходимо установить соединение с удаленным node. (Вам также необходимо node.start и node.set_cookie на пульте дистанционного управления node). Для этого вам потребуется удаленное имя Node. Предположим, что удаленное имя Node - [email protected] (предполагается, что этот Node - другой компьютер в той же локальной сети). Код для этого выглядит как Node.connect :"[email protected]"

Теперь вы можете запустить node.list, чтобы увидеть [email protected] на [email protected] и наоборот.

Подводя итог вышеуказанным моментам, ваш код должен выглядеть примерно так:

На машине 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]"

На машине с баром

Node.start :"[email protected]" 
Node.set_cookie :cookie_name