2016-12-09 198 views
2

有人可以给我更多的一种可能性,如何连接两个Erlang节点。 我知道使用erlang:set_cookie/2的一种方法,并且好奇是否有其他方法。如何连接两个erlang节点?

+0

设置cookie不会连接节点。这只是用于安全性的共享密钥。你是否要求设置cookie的不同方式,使节点连接到另一个节点的不同方法,通过哪些erlang节点可以相互连接的不同机制或其他方法? –

+0

是连接两个erlang节点的不同方法 – erlang

回答

3

1.使用-setcookie

您也可以使用-setcookie时二郎执行,

在我的本地机器的第一终端,

[email protected]:~$ erl -sname a -setcookie guitar 
Erlang/OTP 18 [erts-7.0] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] 

而且我的本地机器的第二终端,

[email protected]:~$ erl -sname b -setcookie guitar 
Erlang/OTP 18 [erts-7.0] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] 

最后,在第一个终端,

Eshell V7.0 (abort with ^G) 
([email protected])1> net_adm:ping('[email protected]'). 
pong 

2.复制$HOME/.erlang.cookie

你可以复制$HOME/.erlang.cookie到其他远程计算机共享相同的cookie的值。


此外,你必须考虑安全性。

getting_started

一个Erlang节点运行的erlang时是完全没有保护:set_cookie(节点(),nocookie)。这有时适用于通常不联网的系统或仅用于维护目的的系统。有关安全系统的详细信息,请参阅auth(3)。

1

(如你写在控制台上或ERL执行)你应该设置cookies 此外,如果您设置短名称(SNAME)第二个节点应该短名 如果设置节点名运行,第二个节点还可以与运行-name

作品:

erl -name [email protected] -setcookie democookie 
erl -name [email protected] -setcookie democookie 

不起作用:

erl -name [email protected] -setcookie democookie 
erl -name n2 -setcookie democookie 

如果节点在不同的机器上运行,检查端口打开它40293 或一组端口(并设置最小,最大)时ERL执行

erl \ 
-kernel inet_dist_listen_min 40293\ 
-setcookie democookie\ 
-name erl_node_1 
2

据“二郎安全101” NCC集团(https://www.nccgroup.trust/globalassets/our-research/uk/whitepapers/2014/erlang_security_101_v1-0.pdf),你不应使用-setcookie,因为服务器的其他用户将能够使用ps ax | grep erl查看cookie。例如,从我的本地计算机上的终端:

[email protected]:~$ erl -setcookie abc -sname e1 
Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] 

Eshell V5.10.4 (abort with ^G) 
([email protected])1> 

然后从第二终端,为不同的用户:

[email protected]:~$ ps ax | grep erl 
2035 pts/7 Sl+ 0:00 /usr/lib/erlang/erts-5.10.4/bin/beam.smp -- -root /usr/lib/erlang -progname erl -- -home /home/zed -- -setcookie abc -sname e1 
2065 pts/8 S+  0:00 grep --color=auto erl 
9841 ?  S  0:00 /usr/lib/erlang/erts-5.10.4/bin/epmd -daemon 

而且你可以清楚地看到在ps输出的饼干。拥有cookie允许第三方加入erlang集群。您应该改用cookie文件方法,对文件具有限制性的权限。