NAT后面的akka​​集群节点(使用docker)

frx*_*frx 6 akka docker akka-cluster

是否有可能在NAT后面运行akka节点(每个节点都在单独的nat后面,公共端口是DNAT到私有)?目前我正在尝试在docker容器中部署akka节点.Docker是natting公共端口到实例私有端口,问题是akka节点的地址是从akka.remote.netty.tcp.hostname创建的,但在natted环境中它与面向公共端口的主机名不同.来自公共接口的消息被拒绝,因为akka绑定到私有ip.是否有可能改变阿卡节点地址不尊重akka.remote.netty.tcp.hostname,可以说,目前的节点地址是akka.tcp://ClusterSystem@172.16.10.5:2551,其中172.16.10.5是akka.remote.netty .tcp.hostname,但我想改变它akka.tcp://ClusterSystem@10.2.0.222:2551,其中10.2.0.222是公共访问的地址,但仍然阿卡应172.16.10.5:2551被监听.

jpe*_*zzo 2

也许您可以指示 Akka 或 Netty 绑定到特定地址和端口,但在不同的地址和端口上声明自己。我不太了解 Akka 或 Netty,不知道这是否可能。

\n\n

否则,您可以尝试以下三件事:

\n\n
    \n
  • 检查他们是否可以宣布给定的IP地址(主机之一),但仍然绑定到0.0.0.0,然后执行“身份端口绑定”,即docker run -p 1234:1234 \xe2\x80\xa6容器外部的端口1234暴露到容器内部的端口1234(从而减轻NAT 一点);
  • \n
  • 在单个 Docker 主机上部署集群,并使用内部 IP 地址 \xe2\x80\x94 您将无法扩展到多台计算机,但在将其部署到更大的系统之间验证分布式代码,这可以帮助已经;
  • \n
  • 使用管道,它允许您向容器添加额外的接口,并在单个网络上将多个容器(位于多个主机上)桥接在一起。Pipework 并未得到 Docker 的官方支持,但很多人发现它对于类似的场景非常有用。
  • \n
\n