精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-02-02
最后修改:2009-02-09
erl node启动方法short name:
longname:
说明: Name :: atom() || string() ShortHost :: atom() || string(), 不可含有"."。比如"myhost" FullHost :: [ShortHost()] || Ip, 比如"test.mydomain.com"和"8.34.135.3" short name 和 long name主要为格式上的区别,long name中Host如果为域名,需要进行DNS解析。 我们也可以在hosts中添加类似: ip ShotHost 的Entry使shortname name节点支持其他主机(请参考后面介绍)
Note 注意,shot name的节点和long name的节点不能互相通信。 示例short name: 假设本机/etc/hosts配置为:8.27.86.135 da6600.fb.joyent.us erl -sname cheng % 启动了一个名叫:cheng@da6600 的Node erl -name cheng % 启动了一个名叫:cheng@da6600.fb.joyent.us 的Node 如果我们的本机hosts配置中,没有指定域名,那么需要我们指定Host: erl -sname cheng@da6600 % 启动了一个名叫:cheng@da6600的Node
long name: erl -name cheng@da6600 erl -name cheng@da6600.fb.joyent.us erl -name cheng@8.27.86.135 请注意,此3个longname Node是同一个Node 应用很多资料中,当进行分布式程序开发时,需要经历下面的步骤
其中第2步,常常是使用 erl -sname Name 类似的方法,产生Node, 因此我们印象中,好像sname只能是在本机的情况下使用? 通常情况下,shortname是限于本机的多个节点,longname可以跨越多台主机(通过IP,DNS解析)。 当然我们也可以像使用long name Node一样,使用short name Node。不同的是long name可以通过DNS进行解析, 而short name必须手动的在hosts中添加对应的映射。这样做的目的就是将本地的请求转发到目标的主机。 好了让我们使用short name来试验一下 server1(ip:8.27.86.135) 启动node: erl -sname foo@server1 server2(server2也可以在内网当中,此时链接只能由server2发起) /etc/hosts中添加: 8.27.86.135 server1 随后启动node: erl -sname bar > net_kernel:connect_node('foo@server1'). true > nodes(). > [foo@server1] 这样,两个节点就已经链接了。 同理,我们也可以在server1中添加一个条目,为server2其一个ShortName,随后连接它。 到此,对于short name, long name的使用应该比较清晰了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-02-06
看了此文章,终于明白shoertname和longname的区别了,十分感谢!
|
|
返回顶楼 | |
发表时间:2009-02-11
-sname Name
Makes the Erlang runtime system into a distributed node, similar to -name, but the host name portion of the node name Name@Host will be the short name, not fully qualified. This is sometimes the only way to run distributed Erlang if the DNS (Domain Name System) is not running. There can be no communication between nodes running with the -sname flag and those running with the -name flag, as node names must be unique in distributed Erlang systems. -name Name Makes the Erlang runtime system into a distributed node. This flag invokes all network servers necessary for a node to become distributed. See net_kernel(3). It is also ensured that epmd runs on the current host before Erlang is started. See epmd(1). The name of the node will be Name@Host, where Host is the fully qualified host name of the current host. For short names, use the -sname flag instead. 用途和差别这里说的很明白! http://blog.yufeng.info |
|
返回顶楼 | |
浏览 2565 次