一、启动四个cmd
-erl -sname a -setCOOKIE abc
-erl -sname b -setCOOKIE abc
-erl -sname c -setCOOKIE abc
-erl -sname d -setCOOKIE efg
二、节点互联
1 nodes/0 %获得和当前node连接的所有node
2 net_adm:ping(Node) %ping一个node 成功后就返回pong,表示当前节点连接上了Node节点,加入了Node所在的集群,失败返回pang(也许还有出错信息)
测试可以按照下图红色数字的顺序输入
1.在a下输入net_adm:ping(b),当a连接上b的时候返回了pong表示成功,
可以在a输入nodes(),可以看见当前节点已经连接的节点集群[b@GFRGXC9STGLOIAA],
可以在b输入nodes(),可以看见当前节点已经连接的节点集群[a@GFRGXC9STGLOIAA],
2.在a下输入net_adm:ping(c),当a连接上c的时候返回了pong表示成功,
此时:
在a输入nodes(),可以看见当前节点已经连接的节点集群[b@GFRGXC9STGLOIAA,c@GFRGXC9STGLOIAA],
在b输入nodes(),可以看见当前节点已经连接的节点集群[a@GFRGXC9STGLOIAA,c@GFRGXC9STGLOIAA],
在c输入nodes(),可以看见当前节点已经连接的节点集群[a@GFRGXC9STGLOIAA,b@GFRGXC9STGLOIAA],
说明:erlang默认情况下使用的是全连接的方式,当任意节点加入集群的时候,该集群内的所有节点相互之间都已经建立了连接
3.当在a连接d节点的时候返回pang表示失败,因为a节点和b节点所使用的COOKIE不同,要想建立连接,必需使用相同的COOKIE
ps:如果想让d节点加入到集群,就需要修改d节点的COOKIE值,可以使用auth:set_COOKIE/1来修改当前node的COOKIE,使用auth:get_COOKIE/1获取当前node的COOKIE
当d修改COOKIE之后,则可以成功加入到集群
总结命令:
erl -sname 名字 %建立一个node
erl -sname 名字 -setCOOKIE Value %建立一个COOKIE值为Value的node
net_adm:ping/1 %ping一个node pong就连接 pang表失败
auth:get_COOKIE/1 %获得当前node的COOKIE值
auth:set_COOKIE/1 %修改当前的node的COOKIE值(已连接下不会断开和其他node的连接)
auth:set_COOKIE/2 %第一个参数是另外一个node(node和COOKIE都是原子 用‘ ‘)第二个参数是那个node的COOKIE 用来让不同COOKIE的两个node连接
erlang集群测试