erlang在windows下和虚拟机节点通信

在Linux下部署erlang项目,开发过程很多都是在Windows完成的,然后再发布到Linux,所以测试过程要在虚拟机下完成。有一天因为想要在虚拟机中使用到erlang图形化工具,,比如appmon、tv、observer等等,便突发奇想得利用Windows的erlang连接到虚拟机中使用这些工具,来查看虚拟机的运行状态。

需要准备哪些东西?

我是在VmWare10虚拟Centos6.5系统,所以这里以VmWare10和Centos6.5为例,其他Linux系统及工具只做参考。

注意了,Linux的erlang要和Windows的erlang的主版本号要保持一致,比如你在Linux下选用R15B03的erlang,在Windows下就不能用R16、R17的版本了。

这里跳过VmWare装Centos系统及erlang等软件的过程。

首先,确保Windows和虚拟机能通信。

事实上,这一步vm已经帮我们做好了。

简单的测试方法就是ping一下,Windows下获取ip的命令是ipconfig,Linux是ifconfig,获取后双方互ping一下。

如果ping不通可以考虑重装vm,建议使用比较新的版本。

这里我的Windows IP是192.168.1.100,虚拟机的ip是192.168.146.128

启动erlang节点

Windows下启动erlang节点:

erl -name win@192.168.1.100 -setcookie 123456

虚拟机启动erlang节点:

erl -name linux@192.168.146.128 -setcookie 123456

虚拟机更新防火墙:

1、查看epmd端口情况,应该可以看到erlang节点占用的端口,将这些端口加到防火墙的允许端口

netstat -apn |grep epmd

2、修改iptables

vi/etc/sysconfig/iptables

在适当的位置添加2行记录

命令仅参考,不同系统或版本可能有区别

-A INPUT -p tcp -m state –state NEW -m tcp –dport 4369 -j ACCEPT

-A INPUT -p tcp -m state –state NEW -m tcp –dport 30000:65535 -j ACCEPT

3、重启iptables让策略生效

service iptables stop

service iptables start

Windows连接虚拟机节点:

Windows启动erlang节点后,再连接到虚拟机中的远程节点

D:\&; erl –name win@192.168.1.100 –setcookie 123456(win@192.168.1.100)1> net_kernel:connect('linux@192.168.146.128').true(win@192.168.1.100)2> nodes().['linux@192.168.146.128']

说明连接成功了!

下面以appmon演示这个功能

执行appmon:start().后,在界面中选择Nodes菜单就有节点的选项。

参考:

『 不可能 』只存在於蠢人的字典里

erlang在windows下和虚拟机节点通信

相关文章:

你感兴趣的文章:

标签云: