LuckyFrame环境部署的一次掉坑记
2018-05-09 07:45:00
Seagull

最近因为项目移动端自动化的需要,找了一台机器部署一个新的LuckyFrame客户端,把JDK,客户端安装好以后, 再安装了 安卓SDK自带的模拟器 ,再启动客户端的监听,一切正常,客户端程序正常启动6633端口监听,本来以为一切都如想像那般容易。


然而问题来了.......


启动完监听后,服务端死活检测不到客户端的存在,第一反应程序肯定不会有问题,因为同样的程序已经部署N套,那肯定就是网络问题了,接下来排查问题...


1: 从服务端Ping客户端的IP,正常。

2:从服务端telnet客户端的IP 端口,正常。


脑袋冒汗,隐隐的感觉我要在这个问题上耗上一段时间了......


切换到自己电脑本地开发工具上调试代码,查看服务端尝试链接客户端抛出的异常信息

 java.rmi.ConnectIOException: Exception creating connection to: 129.214.62.141; nested exception is: 
java.net.SocketException: Network is unreachable: connect


这就奇怪了, 129.214.62.141这个IP根本不是我客户端的访问IP,这个IP是哪里来的呢?


打开客户端的命令行窗口,ipconfig再次确认查一下客户端的IP信息,瞬间明白了,这个IP是安装好安卓模拟器后,VirtualBox产生的一个IP。


虽然我在服务端配置客户端IP的时候,配置的IP是客户端本地链接的IP,但是服务端通过RMI接口检测客户端心跳的时候,仍然访问到了VirtualBox的虚拟IP上去了,所以导致检测失败。

原因:

RMI接口对于多网卡的服务注册,必须要指定一个IP, 此问题在V2.6版本会进行优化。如果有多网口的情况,去客户端的配置文件sys_config.properties中找到client.localhost.ip配置项,指定一个客户端的实际IP即可。


临时解决办法:

1:打开网络配置里面的网络适配器,可以看到有两个网络链接。

2:禁用VirtualBox的链接

3:重启下客户端机器,重启完成后,打开客户端6633端口监听程序

4:再次开启VirtualBox网络链接

5:再次尝试服务器检测客户端心跳,是不是已经正常可以访问了呢