码迷,mamicode.com
首页 > 其他好文 > 详细

Erlang子节点代码加载

时间:2018-04-09 13:11:53      阅读:374      评论:0      收藏:0      [点我收藏+]

标签:app   链接   cti   eps   相同   ssh服务   nes   tar   子节点   

目的

完成基于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 master@10.0.0.1"). 
3、常用参数说明
-setcookie abc 同一个集群cookie必须相同;
-loader inet -hosts ‘10.0.0.1‘ -id master@10.0.0.1指示引导方式以及服务器所在
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 master@10.0.0.1-setcookie 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子节点代码加载

标签:app   链接   cti   eps   相同   ssh服务   nes   tar   子节点   

原文地址:https://www.cnblogs.com/gohuge/p/8758656.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!