标签: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