Erlang 集群互连测试

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个集群可以有交集。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值