来自不同网络的Akka远程演员

时间:2015-03-27 13:13:13

标签: java akka remote-actors

我在2个不同的网络上有2个系统。一个系统位于公共云中,另一个系统位于PC上。问题是我无法远程访问PC系统,因为PC系统它具有本地IP作为主机名(例如192.168.1.140),而在云系统上我指定为目标系统ip从我的公共IP ip。在路由器中,我进行了端口转发,将指定端口上的流量重定向到actor系统。 以下是PC actor系统上发生的错误:

[ERROR] [03/27/2015 14:57:54.712] [slave-port-akka.remote.default-remote-dispatcher-6] [akka.tcp://pc-system@192.168.1.140:20007/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fxxx%40192.168.1.183%3A2005-0/endpointWriter] dropping message [class akka.actor.ActorSelectionMessage] for non-local recipient [Actor[akka.tcp://pc-system@my_public_ip:20007/]] arriving at [akka.tcp://pc-system@my_public_ip:20007] inbound addresses are [akka.tcp://pc-system@192.186.1.140:20007] 

谢谢你, 马吕斯!

2 个答案:

答案 0 :(得分:1)

Akka需要能够绑定到其他远程actor系统将用于解决它的相同IP或主机名。如果公共云中的actor系统正在本地框中将系统称为$ MY_PUBLIC_IP,那么这就是你的actor系统需要绑定的内容。

您可以使用DNS通过逻辑名称而不是IP地址绑定到和处理actor系统来解决此问题。在/ etc / hosts中映射主机名也有效,但显然会引起维护问题。

(这将在未来版本中发生变化,但您仍需要确保其他演员系统可以访问您的演员系统。)

答案 1 :(得分:1)

通过创建VPN来解决,现在更加安全,并且工作正常!