试了下programming erlang distributed 那章的例子,记录一下
一. erl -name
实验一:
我把kvs那个程序放在了A,B两台服务器上,这两台服务器的hostname()都没设置
在B服务器上执行了 erl -name
[email protected] -setcookie abc
然后 kvs:start().
在A服务器上 首先配置etc/hosts B服务器地址 erlang.xxxx.com
然后启动shell erl -name me -setcookie abc
执行:rpc:call(
[email protected],kvs,lookup,[k1]).
执行成功
实验二:
在A服务器/etc/hosts上添加了 -> B服务器地址 erlang
在B服务器上执行 erl -name bachmozart@erlang -setcookie abc
kvs:start().
在A服务器上执行 erl -name mi -setcookie abc
执行:rpc:call(bachmozart@erlang,kvs,store,[k1,v1]).
执行失败:错误信息
=ERROR REPORT==== 25-Mar-2009::13:31:29 ===
** System running to use fully qualified hostnames **
** Hostname erlang is illegal **
二. erl -sname
实验一:
在B服务器上
erl -sname bachmozart@erlang -setcookie abc
kvs:start().
A服务器上
erl -sname mii -setcookie abc
rpc:call(bachmozart@erlang,kvs,store,[k1,k2]).
执行成功
实验二:
在B服务器上
erl -sname
[email protected] -setcookie abc
启动失败
在概念上有了些认识,不过现在还不敢妄下结论
应该试下直接通过DNS的方式,公司的DNS是负载均衡到N多台机器的,没法实验了