Erlang子节点代码加载

Posted gohuge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Erlang子节点代码加载相关的知识,希望对你有一定的参考价值。

目的

完成基于Erlang-slave节点启动后代码从master节点获取实践。
 

官方引导资料 

1、引导服务器 erl_boot_server 
http://erlang.org/doc/man/erl_boot_server.html 
2、start_boot_server和 boot_server_slaves: 
http://erlang.org/doc/man/kernel_app.html 
3、从节点相关 
http://erlang.org/doc/man/slave.html 
 

实践步骤 

1、采用ct_slave模块,模块封装了通过ssh启动远端子节点的相关业务
ct_slave:start(‘127.0.0.1‘, slave,[{username, "username"},{password, "password"}]).
但该函数有bug,在ssh链接时传入的nodename没有包含host需要修改下面代码才能正常运行
ssh_connection:exec(SSHConnRef, SSHChannelId, get_cmd(enodename(Host, Node), ErlFlags), infinity).
2、通过salve模块,模块运行需要启动ssh服务 -rsh ssh 以及erl_boot_server的相关服务
slave:start(‘127.0.0.1‘, slave1, "-setcookie abc -loader inet -hosts ‘10.0.0.1‘ -id [email protected]"). 
3、常用参数说明
-setcookie abc 同一个集群cookie必须相同;
-loader inet -hosts ‘10.0.0.1‘ -id [email protected]指示引导方式以及服务器所在
net_adm ping_list 建立和master的链接:(通过slave启动不需要填写,通过zm_slave启动则需要)
-mnesia_dir mnesia地址
4、Master启动
erl -kernel start_boot_server true boot_server_slaves ‘[{10,0,0,1},{10,0,0,2}]‘ -name [email protected] abc -rsh ssh  
 

其他情况

1、{erl_prim_loader,"no server found"} 表示boot_server 启动了,但是未添加子节点
2、{error,timeout},表示boot_server没有启动。
3、编译了新的代码需要广播 c:nl(hello)。
4、slave节点启动会执行master的.erlang脚本,需要做好验证;
5、增加代码路径 -env ERL_LIBS ../deps,否则需要nl广播至其他节点。
 

以上是关于Erlang子节点代码加载的主要内容,如果未能解决你的问题,请参考以下文章

级联选择器点击父节点懒加载闪一下没选中

JSTREE动态加载子节点

spacetree组织架构图 实现异步加载子节点,和定制化内容展示

spacetree组织架构图 实现异步加载子节点,和定制化内容展示

大姐问下那个treegrid 逐级加载数据的问题 ,不是一下全部加载,点击父节点才加载子节点,逐级加载,求助

Erlang子节点代码加载