Проблемы с именами узлов - PullRequest
2 голосов
/ 30 января 2020

Есть две машины: M1 с двумя IP-адресами 192.168.5.47, 192.168.1.250. И M2 с ip 192.168.5.250.

Я запускаю узел erlang на M1:

nik@nik-PC:~/erlsrc/test_mk$ erl -name 'test@127.0.0.1' -setcookie cook
Erlang/OTP 22 [erts-10.6.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1]

Eshell V10.6.2  (abort with ^G)
(test@127.0.0.1)1> 

Затем я создаю другой узел на M2 и пытаюсь пропинговать M1:

nik2@nik2-PC:~$ erl -name 'test2@127.0.0.1' -setcookie cook
Erlang/OTP 22 [erts-10.6.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1]

Eshell V10.6.2  (abort with ^G)
(test2@127.0.0.1)1> 
(test2@127.0.0.1)1> net_adm:ping('test@192.168.5.47').
pang
(test2@127.0.0.1)2> 

Как установить связь между узлами на удаленных машинах, если один из них имеет несколько IP-адресов и запущен как 'name@localhost' или 'name@127.0.0.1'? Или лучше использовать доменные имена?

1 Ответ

1 голос
/ 30 января 2020

Если узлы работают в одной локальной сети, но на разных компьютерах, вы можете попытаться определить ваш IP на каждом из компьютеров, например, запустите:

$ hostname -I

Давайте представим, что машина 1 имеет IP 192.168.5.47 и машина 2 имеет IP 192.168.5.250. Теперь вам нужно запустить узел на машине 1 с флагом name, что включает в себя IP - машина # 1 :

$ erl -name 'test@192.168.5.47' -setcookie cook

Теперь сделайте то же самое в машина 2 , но использовать IP машина 2 - машина # 2 :

$ erl -name 'test@192.168.5.250' -setcookie cook

Теперь вы можете попробовать отправить ping из test@192.168.5.47 до test@192.168.5.250 - машина # 1 :

(test@192.168.5.47)1> net_adm:ping('test@192.168.5.250').
pong
...