### 流程:
1. 确保所有的服务器开通ssh服务。
2. 确保主节点服务器可以不使用密码直接链接到从节点
3. 确保主节点服务器使用xw.config配置启动Erl节点,确保xw.config中配置了所有节点的Ip,以及使用erl_boot_server启动节点
4. 注意事项:
保证启动Erlang的linux的用户名所有服务器都一样
保证Erlang安装路径所有服务器都一样
### 技术文档:
1. Server:
引导服务器 erl_boot_server
%server操作模块,配置加入到主节点的从节点,只有定义该节点后,才能被调用 http://erlang.org/doc/man/erl_boot_server.html
start_boot_server, boot_server_slaves
%erlang start启动时的options http://erlang.org/doc/man/kernel_app.htm
2. Client:
从节点:http://erlang.org/doc/man/slave.html
%启动从节点的模块。
参考资料
http://cryolite.iteye.com/blog/381758
http://avindev.iteye.com/blog/100113
http://cryolite.iteye.com/blog/376893
详细流程,以ubuntu12.04-client为例:
1.确保server服务器开通ssh服务。
~$ps -e |grep ssh

说明只有ssh客户端,能够登陆其他带有ssh服务端的服务器.
安装ssh-server
~$sudo apt-get install openssh-server
~$ps -e |grep ssh

安装成功
2.确保所有服务器之间可以不使用密码直接互联ssh。ubuntu下安装ssh后会提示输入用户密码
1.生成密匙对。
密匙 从A -> 拷贝到B,A可以不用密码链接到B
#ssh-keygen -t rsa //一路回车在当前用户的根目录下的.ssh目录生成id_rsa.pub公钥

2.将公钥放到服务器上(注意存放目录位置)
#scp ~/.ssh/id_rsa.pub 用户名@你的服务器的ip:~/.ssh/authorized_keys
//将本地生成的公钥拷贝到远程服务器的下并改名为authorized_keys,authorized_keys的权限设置为600,目前的权限是416没有影响

3.ssh Ip -l user
使用user用户登录到ip主机上
4.exit.退出ssh
如果无法直接输入密码登录到ssh
复制密钥
主机生成密钥
复制到从机上。具体待验证,重点:known_hosts文件
3.测试
Serve:
```shell
vim xw.config
[
{kernel, [{start_boot_server, true}, %设置为true,开启该功能
{boot_server_slaves, ['192.168.0.234', '192.168.0.219']}]} %配置从节点,只有配置后才可能链接
].
%参数 -kernel start_boot_server true boot_server_slaves '[{10,0,0,253},{10,0,0,252}]' 是让主节点成为引导服务器,从节点的beam程序都将从主节点传送。
erl -name server@192.168.0.219 %设置节点名称
-setcookie 'xw' %设置cookie
-config "D:/xw.config" %使用该配置文档打开
-rsh ssh %参数-rsh ssh是为了让主节点远程启动从节点(slave)必须的
slave:start_link( Host, Name, Args ).
slave:start('10.0.0.252', slave1, "-setcookie abc -loader inet -hosts '10.0.0.253' -id master@10.0.0.253"). 开启从节点10.0.0.252
```
出现错误
a.
这个一般就是指系统中找不到erl命令,也就是在/usr/bin/或/usr/sbin/或/bin/等path下找不到erl命令
将/usr/local/erlang/lib/erlang/bin/erl 链接到/usr/sbin/erl
ln /usr/local/erlang/lib/erlang/bin/erl /usr/sbin/erl
删除链接 rm -r /usr/sbin/erl
Client保证可以启动Erlang
ln /usr/local/erlang/lib/erlang/bin/erl /usr/bin/erl
函数:
1.c:nl(hello). 第一次调用hello模块被自动发送到从节点,不过在hello模块修改重新编译后,从节点上还是旧的模块,可以调用该命令广播新模块。
目前ubuntu测试机中:
a.在主节点启动从节点成功
b.在主节点使用code:add_pathz( "/home/yujian-slave/zt_server/ebin" )添加模块,此时可以在主节点上运行加载的模块,从节点上不能运行.
c.如果需要在从节点上运行,需要使用c:nl( module ),进行广播。
2.rpc:call( Node, M, F, Args ).
- 1.学习
- 1.1安装与运行环境
- 1.2编辑器、集成开发环境与其它工具
- 1.3代码编译运行
- 2.基础
- 2.1 Erlang终端
- 2.2 基础语法
- 2.2.1 异常处理
- 2.3 数据类型
- 2.4 操作符
- 2.5 模块属性
- 3.库函数
- 3.1 常用模块
- 3.2 OTP模块
- 3.2.1 函数
- 3.2.2 receive
- 3.2.3 .app.src文件
- 3.2.4 _app.erl
- 3.2.5 _sup.erl
- 3.2.6 gen_server
- 3.2.7 gen_fsm
- 3.3 erts
- 3.3.1 init
- 3.3.2 BIF
- 3.3.3 NIF
- 3.4 kernel
- 3.4.1 code_server
- 3.4.2 inet
- 3.4.3 net_kernel
- 3.4.4 net_adm
- 3.4.5 error_logger
- 3.4.6 global
- 3.4.7 application
- 3.5 stdlib
- 3.5.2 array
- 3.5.4 base64
- 3.5.5 binary
- 3.5.6 c
- 3.5.8 calendar
- 3.5.9 code
- 3.5.11 dict
- 3.5.12 erl_
- 3.5.13 file
- 3.5.14 filelib
- 3.5.15 gb_trees
- 3.5.16 gb_sets
- 3.5.17 gen_tcp
- 3.5.18 gen_server
- 3.5.19 httpc
- 3.5.20 init_parse
- 3.5.21 init
- 3.5.22 inet
- 3.5.23 io
- 3.5.24 lists
- 3.5.25 maps
- 3.5.26 os
- 3.5.27 ordsets
- 3.5.28 proplists
- 3.5.29 queue
- 3.5.30 qlc
- 3.5.31 re
- 3.5.32 random
- 3.5.33 rfc4627-json
- 3.5.34 string
- 3.5.35 ssh
- 3.5.36 soft
- 3.5.37 sets
- 3.5.38 supervisor
- 3.5.39 tuple
- 3.5.40 timer
- 3.5.41 unicode
- 3.5.42 cpu
- 3.5.43 math
- 3.5.44 zip
- 3.5.45 shell
- 3.6 SASL
- 3.7 asn1
- 3.8 compiler
- 3.9 tools
- 3.10 OS_Mon
- 3.11 crypto
- 3.12 Port
- 4.工具
- 4.1 Erlang预处理器
- 4.2 Erlang节点
- 4.3 Erlang多节点
- 4.3.1主从节点
- 4.4 Epmd
- 4.5 断点工具
- 4.6 dialyzer
- 4.7 dbg-debug 模块
- 4.7.1 dbg
- 4.8 Erlang跟踪工具
- 4.9 etop
- 4.10 profiling
- 4.10.1 fprof
- 4.10.2 eprof
- 4.10.3 cprof
- 5.进阶
- 5.1 TCP粘包、大小端
- 5.2 rebar发布系统
- 5.3 ErlangVM 心跳
- 5.4 Erlang GC
- 5.5 Erlang Time
- 5.6 Erlang 启动
- 5.6.1 SASL配置
- 5.7 Erlang系统限制
- 6.项目
- 6.1 the_seed
- 6.2 network
- 6.3 parse_tool
- 6.4 cache
- 7.项目研究
- 7.1 Mnesia
- 7.1.1 Mnesia模式
- 7.1.2 Mnesia操作
- 7.1.3 Mnesia增删改查
- 7.1.4 Mnesia过载分析
- 7.1.5 Mnesia高级特性
- 7.1.6 分布式
- 7.1.7 Mnesia表分片
- 7.1.8 Mnesia锁
- 7.1.9 dets
- 7.1.10 ets
- 7.2 Ejabberd
- 7.2.1 mod_echo.erl
- 7.2.2 hooks for module developers
- 7.2.3 Events list
- 7.3 cowboy
- 7.4 rebar
- 7.4.1 rebar Wiki
- 7.4.2 rebar.config.script
- 7.5 RIAK CS
- 7.6 Leofs
- 7.6.1 简介
- 8.资料整理
- 8.1 资料
- 8.1.1 Erlang的调度原理
- 8.1.2 虚拟机代码执行原理
- 8.1.3 SMP
- 8.2 杂记
- 8.2.1 设计