Erlang分布式在linux和windows系统间应该注意的问题

没事做,就在两台机器间测试下Erlang分布式的例子,一个台是windowsXP,一台装的redHat9,没有详细的文档,自己摸索着搞成功了,记录下。

1. 首先,分布式Erlang的实现提供了自有的安全机制来预防未经授权的Erlang系统访问。Erlang系统与别的机器进行交互时必须有同样的 magic cookie,保存在一个称为.erlang.cookie的文件中,为了在两台不同机器间测试,需要编辑一份.erlang.cookie,内容随便, 比如:

just_test

然后将这份文件拷贝到windows环境变量HOMEPATH所在的目录 ,比如我的是C:\Documents and Settings\Admin,而linux拷贝到环境变量$HOME指向的目录,比如我这里是/root。特别注意一点,linux的. erlang.cookie文件需要设置权限为-r--------,也就是400,仅拥有者可读:

chmod 400 .erlang.cookie

2.因为Erlang中的node名称是name@host,host是计算机名,因此在两台机器上都需要将计算机名和ip加进hosts文件,这个文件在linux下是在/etc/hosts,你可以用vi编辑如下:

127.0.0.1  localhost localhost   
x.x.x.x    zane      zane   #windows机器的ip和计算机名   

hosts在windows系统的C:\WINDOWS\system32\drivers\etc目录下,编辑:

127.0.0.1       localhost   
x.x.x.x   dennis #linux机器的名称和ip   

3.第三步,要启动节点,通过命令erl -sname 或者erl -name,在此之前需要启动epmd进程,它负责映射符号名到机器地址

在两个机器都执行:
epmd -daemon

4.至此配置完成。