金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  423 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
Erlang 集群互连测试

Erlang节点相同cookie全互联成为一个集群(cluster).
如果2个集群不同cookie, 然后其中有节点连接到对方集群的节点,
这2个集群会合并成一个集群吗?

连接到另一个集群时,需要先设置cookie,不然会被拒绝。
erlang:set_cookie(Node2, DiffCookie)

集群aaaa有节点a1, a2, cookie为 cookie_aaaa.
集群bbbb有节点b1, b2, cookie为 cookie_bbbb.

>erl -sname a1 -setcookie cookie_aaaa
...
>erl -sname a2 -setcookie cookie_aaaa
Eshell V6.3  (abort with ^G)
(a2@jinqing)3> net_adm:ping(a1@jinqing).
pong
(a2@jinqing)4> nodes().
[a1@jinqing]


>erl -sname b1 -setcookie cookie_bbbb
...
>erl -sname b2 -setcookie cookie_bbbb
(b2@jinqing)2> net_adm:ping(b1@jinqing).
pong
(b2@jinqing)3> nodes().
[b1@jinqing]


bbbb节点无法直接连aaaa节点
(b2@jinqing)4> net_adm:ping(a1@jinqing).
pang


b2节点更改cookie后,仍保持与b1的连接。
(b2@jinqing)6> erlang:get_cookie().
cookie_bbbb
(b2@jinqing)7> erlang:set_cookie(node(), abcd).
true
(b2@jinqing)8> erlang:get_cookie().
abcd
(b2@jinqing)9> nodes().
[b1@jinqing]
(b2@jinqing)10>


b2设置cookie并连接a2后,b2进入了aaaa集群, 同时又在bbbb集群。
(b2@jinqing)10> erlang:set_cookie(node(), cookie_aaaa).
true
(b2@jinqing)11> erlang:get_cookie().
cookie_aaaa
(b2@jinqing)12> nodes().
[b1@jinqing]
(b2@jinqing)13> net_adm:ping(a2@jinqing).
pong
(b2@jinqing)14> nodes().
[b1@jinqing,a2@jinqing,a1@jinqing]
(b2@jinqing)15>


实际上是aaaa集群现有3个节点:a1, a2, b2.
bbbb集群仍然是2个节点:b1, b2.

(a1@jinqing)2> nodes().
[a2@jinqing,b2@jinqing]


(a2@jinqing)5> nodes().
[a1@jinqing,b2@jinqing]


(b1@jinqing)3> nodes().
[b2@jinqing]

此时 a2 ping b2 是通的,但是不会加入 bbbb 集群。
(a2@jinqing)6> net_adm:ping(b2@jinqing).
pong
(a2@jinqing)7> nodes().
[a1@jinqing,b2@jinqing]
(a2@jinqing)8>


结果是2个集群可以有交集。

posted on 2015-03-17 10:49 金庆 阅读(588) 评论(0)  编辑 收藏 引用 所属分类: 7. Erlang

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理