【问题标题】:Starting multiple remote servers with Akka使用 Akka 启动多个远程服务器
【发布时间】:2012-05-04 17:38:05
【问题描述】:

我在使用 Akka 远程处理来实现一个小型搜索应用程序时遇到了一些部署问题。

我想在一组本地集群机器上部署我的 ActorSystem 以将它们用作工作人员,但我有点困惑在我的 application.conf 中放入什么来实现这一点。例如,我可以使用:

akka.remote {
  transport = "akka.remote.netty.NettyRemoteTransport"
  netty {
    hostname = "0.0.0.0"
    port = 2552
  }
}

每个工作人员只是在启动时运行 ActorSystem。

这允许我的工作机器在启动时绑定到他们的地址,但随后他们拒绝收听消息:

beaker-24: [ERROR] ... dropping message DaemonMsgWatch for non-local recipient akka://SearchService@beaker-24:2552/remote at akka://SearchService@0.0.0.0:2552

到目前为止,我为此找到的文档只讨论了在我的本地主机上的部署,这不是很有用:)。我希望有一种方法可以做到这一点,而无需为每个主机生成单独的配置。


更新:

使用空字符串作为主机名允许通过普通 IP 地址联系主机。目前无法使用主机名本身进行寻址。

【问题讨论】:

  • 可能是bug,请开票!
  • 谢谢,我会尝试整理预期的行为并提交一些东西。我发现同时使用空字符串作为地址是有效的(我应该更彻底地阅读配置参考!)

标签: remoting akka


【解决方案1】:

将“0.0.0.0”设置为主机名目前基本上会禁用远程处理,因为这不是发送到的合法 IP。背景:参与者引用在离开本地系统时将配置的 IP(或主机名)插入其地址部分,这正是其他系统发回消息的“指针家”。

Scott 曾努力让系统能够接收对不同地址 here 的回复,但这还没有包括在内——我们很可能会选择不同的解决方案来解决这个问题。

【讨论】:

  • 谢谢 - 我最终为我的案例找到了一个解决方案 - 如果我将主机字段留空,它会绑定到“任何”地址,但我仍然可以通过它的 IP 地址访问主机(不幸的是,主机不会将其主机名识别为有效的接收方地址)。尽管如此,它仍然有效!
猜你喜欢
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多