Erlang Distribution Tips

转载请注明,来自:http://blog.csdn.net/skyman_2001

一、连通节点的方式

1..hosts.erlang方式:

(1) 创建.hosts.erlang文件(在$HOME目录、当前工作目录或$OTP_ROOT目录下都可以),在文件里写上集群的所有host名;

(2)启动所有节点;

(3)检查.hosts.erlang文件有无成功加载:net_adm:host_file().

(4)连通所有节点:net_adm:world().

2. ping方式:
net_adm:ping(Node).

参考:http://www.erlang.org/doc/man/net_adm.html

http://www.ejabberd.im/interconnect-erl-nodes

二、如何一个节点host同时对应内网和外网IP

这种需求比较常见:本地有几个节点组成一个集群,某个节点又想和外网的节点连通,希望该节点(假设称为节点A)和本地节点连通用127.0.0.1,和外网节点连通用外网ip,怎么实现呢?
方法是:在该节点机器的hosts文件里加上:
127.0.0.1 localhost skyman.com

erl -name n1@skyman.com,这样本地节点连它就是用的127.0.0.1。

在外网的节点机器的hosts文件里加上:

节点A的公网ip skyman.com

这样外网节点连节点A就用的节点A的公网IP

参考:http://erlang.org/pipermail/erlang-questions/2004-October/013263.html

三、ping方的host名可以是任意的,被ping方的则不行

四、跨机器连通防火墙问题

要想连通某个节点,该节点(即被连接的)要保证:

1. epmd的端口(默认是4369)在防火墙打开;

2. erl要加-kernel inet_dist_listen_min Min inet_dist_listen_max Max 设定使用的端口范围(若只有一个端口,则Min==Max),要保证这些端口在防火墙打开,并且这些端口不能全部被占用

也就是要连接某个节点,是和该节点所在机器的epmd以及该节点通讯。所以发起连接的节点不需要上面的2个要求,即所在机器不需要防火墙打开4369端口,也不需要加-kernel inet_dist_listen_min Min inet_dist_listen_max Max

五、即使节点的host是127.0.0.1,是能连公网host的节点的,只是公网host节点不能连它

若节点:n1@127.0.0.1,连上公网host节点,则在公网host节点里输入nodes(),则输出:['n1@127.0.0.1'],公网host节点用'n1@127.0.0.1'是可以访问到n1节点的。

这时要注意一个问题:如果在另外一台机器上也有n1@127.0.0.1,它也连同一个公网host节点,则会连不上,因为它的名字和前一个一模一样,冲突了,所以不同的机器最好节点名也不同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值