通常在本地节点和远程节点可以使用net_adm:ping(‘xxx’)可以通的话就可用通过本地observer查看远程节点信息,那么要能ping通,首先需要ip能通,端口能通,但是在实际使用中,调试节点可能在远程服务器上,远程服务器开放的端口又有限,这时候可以通过一些曲折的办法实现。
实现原理:
- 将本地epmd服务关了,并把本地4369端口设置正向代理到远程服务器,相当于把本低节点注册到了远程机器
- 找到远程节点的本地端口,并把本地端口正向代理到远程服务器
- 通过ssh tunnel方式将远程机器的端口暴露到本地
环境要求:
- 安装本地端口代理工具,本例用MabaXterm中的MobaSSHTurnnel实现。
- 能从本地正常通过ssh登录目标节点机器
- 本地安装了与服务器相同版本的erlang
步骤
1. 在远程服务器查看远程节点的端口,通过epmd -name 命令查看
epmd -names
epmd: up and running on port 4369 with data:
name some_node at port 6000
2. 在本地建立4369和节点对应的端口代理
图形化配置非常简单,remote_server的ip是相对于ssh server的ip
填好两个端口转发规则后先清理本地占用的端口点击start即可.
如果远程端口刚好和我一样是6000,先关闭mabaxterm的X11服务,否则无法start。
4369端口转发无法启动,先关闭本地epmd服务,
查看4369端口是否被占用: netstat -aon|findstr 4369
查看某pid是否epmd进程:wmic process get name,executablepath,processid|findstr “pid”
终止进程: taskkill /f /pid 4369
3. 本地建立启动observer的快捷方式
本地启动节点,远程节点也需要是xxx@127.0.0.1的形式,且需要相同的cookie
“D:\Program Files\erl10.7\bin\werl.exe” -name win_debug@127.0.0.1 -setcookie test_cookie -run observer start
在快捷图片属性[目标]处填入上面命令(具体安装路径根据实际情况更改),双击启动即可使用
参考:
https://gist.github.com/pnc/9e957e17d4f9c6c81294