IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Erlang 集群互连测试

    金庆发表于 2015-03-17 02:49:00
    love 0
    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个集群可以有交集。



    金庆 2015-03-17 10:49 发表评论


沪ICP备19023445号-2号
友情链接