首页 > 技术文章 > erlang集群测试

huangxiaoyi 2016-08-10 01:27 原文

一、启动四个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连接

推荐阅读