具有绑定端口和绑定主机名的 Akka 集群
Akka Cluster with bind-port and bind-hostname
按照 Akka FAQ 的规定在 application.conf 中配置绑定主机名和绑定端口并启动集群后,我收到错误消息:
[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 上试过了,效果都一样。
有没有其他人遇到过这种情况?有什么建议吗?
编辑:
此 actor 系统在 docker 容器中的 ECS 中 运行。 docker 容器配置设置为从临时范围转发到容器私有 IP 上的 2552。 ECS 成功地将 hostname:port 映射到 bind-hosname:bind-port。参与者成功 运行 并绑定到本地绑定主机名和绑定端口,但正在丢弃消息并发出上述错误。
bind-*
配置设置用于 Akka 节点在 NAT 后面启动的情况(或在 docker 容器中)。您是否配置了从 hostname
:port
到 bind-hostname
:bind-port
的地址转换?
在您的特定配置中,当您这样做时
ctx.actorSelection("akka.tcp://default@54.175.105.30:32810/user/actor") ! "Hi"
那么 54.175.105.30
的某个人应该正在侦听 TCP 端口 32810
并将端口转发到 172.17.0.44:2552
。 Actor 系统应该是 运行 您在 172.17.0.44:2552
提供的配置。是这样吗?
您还必须为 NAT 后面的每个节点配置它,因为 Actor Systems 之间的连接是 peer to peer。
这是由于我的配置错误造成的。一些覆盖绑定端口的样板代码仍然存在。
按照 Akka FAQ 的规定在 application.conf 中配置绑定主机名和绑定端口并启动集群后,我收到错误消息:
[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 上试过了,效果都一样。
有没有其他人遇到过这种情况?有什么建议吗?
编辑: 此 actor 系统在 docker 容器中的 ECS 中 运行。 docker 容器配置设置为从临时范围转发到容器私有 IP 上的 2552。 ECS 成功地将 hostname:port 映射到 bind-hosname:bind-port。参与者成功 运行 并绑定到本地绑定主机名和绑定端口,但正在丢弃消息并发出上述错误。
bind-*
配置设置用于 Akka 节点在 NAT 后面启动的情况(或在 docker 容器中)。您是否配置了从 hostname
:port
到 bind-hostname
:bind-port
的地址转换?
在您的特定配置中,当您这样做时
ctx.actorSelection("akka.tcp://default@54.175.105.30:32810/user/actor") ! "Hi"
那么 54.175.105.30
的某个人应该正在侦听 TCP 端口 32810
并将端口转发到 172.17.0.44:2552
。 Actor 系统应该是 运行 您在 172.17.0.44:2552
提供的配置。是这样吗?
您还必须为 NAT 后面的每个节点配置它,因为 Actor Systems 之间的连接是 peer to peer。
这是由于我的配置错误造成的。一些覆盖绑定端口的样板代码仍然存在。