节点命名问题

Node naming problems

有两台机器: M1 有两个 ip 地址 192.168.5.47、192.168.1.250。 M2 的 IP 为 192.168.5.250.

我在 M1 上启动了一个 erlang 节点:

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 上创建另一个节点并尝试 ping 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' 启动,如何在远程机器上的节点之间进行通信? 还是用域名比较好?

如果节点 运行 在一个 LAN 网络中但在一台不同的计算机上,您可以尝试在每台计算机上检测您的 IP,例如 运行:

$ hostname -I

我们假设 机器 1 有 IP 192.168.5.47机器 2 有 IP 192.168.5.250。 现在你需要 machine 1 上的 运行 节点,标志 name 包括 IP - machine #1:

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

现在在 machine 2 中做同样的事情,但是使用 machine 2 的 IP - machine #2:

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

现在您可以尝试将 pingtest@192.168.5.47 发送到 test@192.168.5.250 - machine #1:

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