是否可以在NAT后面运行akka节点(每个节点位于单独的nat后面,公共端口是DNAT'ed为private)?目前我正试图在Docker容器中部署akka节点。 Docker将公共端口NAT为实例私有端口,问题在于akka节点的地址是从akka.remote.netty.tcp.hostname创建的,但是在natted环境中它不同于面向公众的主机名。来自公共接口的消息被拒绝,导致akka被绑定到私有IP。是否有可能更改akka节点地址不尊重akka.remote.netty.tcp.hostname,可以说当前节点地址是akka.tcp://[email protected]:2551,其中172.16.10.5是akka.remote.netty .tcp.hostname,但我想将其更改为akka.tcp://[email protected]:2551,其中10.2.0.222是公共可访问地址,但akka仍应该在172.16.10.5:2551上进行侦听。NAT后面的akka集群节点(使用docker)
5
A
回答
2
也许你可以指示Akka或Netty绑定在特定的地址和端口上,但在另一个地方宣布自己。我不明白Akka或Netty是否有可能。
否则,有三件事情,你可以尝试:
- 检查,如果他们可以宣布一个给定的IP地址(主机的一个),但仍然结合
0.0.0.0
,然后执行“身份端口绑定“,即docker run -p 1234:1234 …
这将暴露容器外部的端口1234到容器内的端口1234(从而稍微减轻NAT); - 将集群部署在单个Docker主机上,并使用内部IP地址 - 您将无法扩展到多台计算机,但可以在将代理部署到更大的系统之间验证分布式代码,这可以提供帮助;
- 使用Pipework,它允许您将额外接口添加到容器,并将多个容器(在多个主机上)桥接在一个网络上。 Docker没有正式支持管道,但许多人发现它对于类似的场景非常有用。
2
是的,这是可能的 - 你需要配置bind-host
和bind-port
为除远程平时host
和port
。
How to configure Akka behind NAT来自Akka文档。
自Akka 2.4.x以来,本机支持此功能;和2.3.11为Typesafe subscription customers。
相关问题
- 1. 节点群集和/或Docker群集?
- 2. Akka Streams在群集节点上运行
- 3. 节点群集
- 4. Docker群管理器无法识别群集节点
- 5. Akka:如何查找集群中的当前节点?
- 6. Akka集群,节点部署在不同的数据中心
- 7. 带演员的Akka群集节点离开
- 8. Docker群集节点无法检测群集中另一主机的服务
- 9. Akka集群应用程序
- 10. 重新启动所有后端节点后,akka前端节点如何连接到群集?
- 11. Akka集群 - 每节点一个经理角色
- 12. 在Kubernetes集群中添加节点后重新分发集群
- 13. 单节点群集在多节点群集上工作?
- 14. 将2节点cassandra集群转换为1节点集群
- 15. 在节点集群中使用babel
- 16. 使用Cytoscape.js进行节点群集
- 17. 使用websockets进行节点群集
- 18. 在Akka集群中使用Guice
- 19. AWS中的Docker化Elasticsearch集群 - 每个节点选择自己
- 20. 2节点的Cassandra集群
- 21. Hadoop的2节点集群
- 22. akka集群感知路由器和akka集群分片的不同用例?
- 23. Docker服务在`n-1`群集节点中创建`n`副本
- 24. Docker swarm集群和elasticsearch,使用约束将服务绑定到特定节点
- 25. 删除SQL群集节点
- 26. 恢复oracle群集节点
- 27. 4节点集群查询
- 28. Hadoop多节点群集
- 29. Hazelcast群集更新节点
看起来像管道可以做的伎俩,我可以使物理接口和码头集装箱接口之间的桥梁,并连接码头节点到主网络不使用NAT – frx
选项1(绑定到0.0.0.0)是不可能与akka 2.3,但使用https://github.com/akka/akka/issues/15007中介绍的'bind-hostname'参数可以实现akka 2.4 –