抄袭自
http://www.blogjava.net/killme2008/archive/2007/06/29/127099.html
简单的说,就是
主机上需要同时启用短节点名,或者长节点名
保证集群内部cookie一致
使用cookie文件复制的方式或者命令行-setcookie参数都可以
如果使用短节点名,则需在/etc/hosts内添加所有主机的ip-主机名映射
调用方式,有两种
通过Pid调用
-module(test). -compile(export_all). start(Node) -> spawn(Node,test, loop, [0]). debugger(Pid) -> Pid ! start_debugger. db(Pid) -> Pid ! start_mnesia. loop(Val) -> receive start_debugger -> debugger:start(), loop(Val); start_mnesia -> application:start(mnesia), loop(Val) end.
注意:
如果Pid没有注册为global的name,则只能通过spawn或者spawn_link创建跨node进程
gen_server之类,可以通过start_link,在创建的时候,直接创建global的name,以后调用直接通过gen_server:call调用
另外,这个代码需要在远程节点上也编译,否则远程pid调用的时候,会崩溃
rpc:call
参数为远程node名,不需要pid
监控:net_kernel:monitor_nodes(true)
在集中中任何节点down和up的时候,会收到nodedown和up的消息,处理即可
什么时候使用什么方式,看场景了
注:
关于自动连接监控网络节点的功能,可以关注这个模块
net_kernel