5

按照Akka FAQ的规定,在 application.conf 中配置 bind-hostname 和 bind-port并启动集群后,我收到一个错误:

[ERROR] [07/09/2015 19:54:24.132] [default-akka.remote.default-remote-dispatcher-20] 
[akka.tcp://default@54.175.105.30:2552/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fdefault%4054.175.105.30%3A2552-757/endpointWriter]
dropping message [class akka.actor.ActorSelectionMessage] 
for non-local recipient[Actor[akka.tcp://default@54.175.105.30:32810/]] 
arriving at [akka.tcp://default@54.175.105.30:32810] 
inbound addresses are [akka.tcp://default@54.175.105.30:2552]

这似乎是说,参与者收到了一条发往端口 32810(外部端口)的消息,但由于内部端口(2552)不匹配而将其丢弃。

该文件的相关部分是:

  hostname = 54.175.105.30
  port = 32810

  bind-hostname = 172.17.0.44
  bind-port = 2552

我在 2.4-M1、2.4-M2 和 2.4-SNAPSHOT 上试过这个,效果都一样。

有没有其他人遇到过这个?有什么建议么?

编辑:这个演员系统在 Docker 容器的 ECS 中运行。docker 容器配置设置为在容器的私有 IP 上从临时范围转发到 2552。ECS 已成功将 hostname:port 映射到 bind-hosname:bind-port。Actor 成功运行并绑定到本地绑定主机名和绑定端口,但正在丢弃消息并发出上述错误。

4

2 回答 2

6

bind-*配置设置旨在用于 Akka 节点在 NAT 之后(或在 docker 容器中)启动的情况。您是否配置了从hostname:portbind-hostname:的地址转换bind-port

在您的特定配置中,当您这样做时

ctx.actorSelection("akka.tcp://default@54.175.105.30:32810/user/actor") !“你好”

那么54.175.105.30应该有人在监听 TCP 端口32810和端口转发到172.17.0.44:2552. 演员系统应该使用您提供的配置运行在172.17.0.44:2552. 是这样吗?

此外,您必须为 NAT 后面的每个节点配置此项,因为 Actor 系统之间的连接是对等的

于 2015-07-14T06:49:02.220 回答
1

这是由于我的配置错误。剩余的一些样板代码覆盖了绑定端口。

于 2015-07-15T22:40:50.043 回答