如果仅在本地测试Hadoop RPC进程通信没有出现问题,但部署于云服务器后发现进程之间socket无法连接通信,且在同一安全组(局域网)内的云服务器通过curl查看RPC端口也出现connection refused错误;且由于该RPC进程都是部署于docker容器中,通过云服务器本机curl查看RPC映射端口返回connection reset by peer。
最终发现在RPC创建代理时域名写为localhost才能进行正常连接。
另外需要说明一点:如果是通过tomcat上的war包进行初始化RPC通信,那么在shutdown tomcat后该RPC进程仍然存在,需要手动kill -9关闭该进程,否则重新startup tomcat后会出现端口被占用的情况,导致该web工程无法正常启动。
而且需要注意在更新war包时需要将原war包文件夹删除,否则需要重新更新war包