Akka 远程绑定到主机名而不是绑定主机名

Akka remoting binds to hostname instead of bind-hostname

上下文

我正在尝试 运行 一个节点上的 akka 应用程序,并使用 akka 远程处理功能使其与其他节点一起工作。

我的节点有一个 IP 地址,10.254.55.10,还有一个外部 IP,10.10.10.44,重定向到前者。这个外部 IP 是我希望其他节点与我联系的 IP。

从我的 akka 应用程序配置中提取:

  akka {
            remote {
                    netty.tcp {
                            hostname = "10.10.10.44"
                            port = 2551

                            bind-hostname = "10.254.55.10"
                            bind-port = 2551
                    }
            }
  }

我知道在网络端一切正常,因为当我用 netcat 监听我的 IP 时,我可以使用外部 IP 通过 telnet 向自己发送消息。

换句话说,当运行在不同的 shell 中使用这两个命令时:

$ nc -l 10.254.55.10 2551

$ telnet 10.10.10.44 2551

我能够与自己通信,证明两个 IP 之间的网络重定向工作正常。

问题

启动应用程序时,它因绑定错误而崩溃:

INFO Remoting - Starting remoting
ERROR a.r.t.n.NettyTransport - failed to bind to /10.10.10.44:2551, shutting down Netty transport
Exception in thread "main" java.lang.ExceptionInInitializerError
[...]
Caused by: org.jboss.netty.channel.ChannelException: Failed to bind to: /10.10.10.44:2551
[...]
Caused by: java.net.BindException: Cannot assign requested address
[...]
INFO a.r.RemoteActorRefProvider$RemotingTerminator - Shutting down remote daemon.

我假设它崩溃的原因是它试图绑定到本地不存在的 IP(即 10.10.10.44)。但首先我不明白的是为什么 akka 甚至试图绑定到 10.10.10.44,因为它不是我的绑定主机名(即 10.254.55.10)。 This doc page 对我来说这件事似乎很清楚,但它不起作用...

我正在使用的项目基于akka 2.3.4,其中 bind-hostnamebind-port 配置密钥不存在。我当时升级到最新版本,akka 2.4.1,问题解决了。