您的位置:首页 > 其它

远程调用-rmi远程连接被拒绝

2017-08-21 23:28 513 查看
【问题背景】

本项目的导入导出功能是异步实现的,即:

第一步:前台页面先点击“导入”、“导出”按钮,后台给任务表Task插入一条队列任务;

第二步:Linux主机上的定时程序扫描Task表,然后远程调用Windows主机上部署的“导入导出应用”(ps:中间还有好几个应用之间的调用,此处省略)

第三步:前台页面“下载报告”中查看任务执行情况,并提供“下载”按钮去下载导出的excel文件。

【问题描述】

导出功能在最终上线的时候,发现任务不执行(ps:开发环境、测试环境、准生产环境都验证没有问题)。

【报错信息】

连接被拒绝 Connection refused [IP地址2]

【问题分析】

第一步:找到哪个节点除了问题?(ps:由于是异步,且整个架构涉及好几个节点,不清楚是哪个节点除了问题,只能一步一步跟踪)。
通过跟踪日志,发现Linux上的定时程序没有调用到Windows主机上(ps:window主机上的应用日志没有变化)

第二步:查看定时程序的日志,发现连接被拒绝,但是打印的“IP地址2”不是系统中配置的目标地址。
检查配置文件,发现地址没有配错,确实是“IP地址1”,但是rmi一调用打印出的出错日志中显示的总是“IP地址2”
分别使用ping命令和telnet命令检查网络是否联通,发现“IP地址1”是通的,“IP地址2”是不通的。
下一个问题:为什么会IP地址会发生变化呢?

第三步:怀疑是网络问题,检查Window主机的IP地址情况,使用ipconfig命令发现了三个IP地址。
继续查看网络连接,发现有三个网卡(ps:windows主机是安装在虚拟机上的,这三个网卡也都是虚拟网卡),其中一个是我们配置的地址“IP地址1”,
也有一个是报错信息里面的IP地址“IP地址2”,“IP地址1”和“IP地址2”是同一台主机上的多个虚拟网卡。
下一个问题:怎么只让客户端rmi程序连接“IP地址1”呢?

【解决方案】

禁用多余的虚拟网卡,只留下目标地址“IP地址1”,然后重启Windows主机(PS:重启才会生效,切记),再次调用,问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息