2012-05-04 73 views
3

我遇到了一些使用Akka遠程實現小型搜索應用程序的部署問題。使用Akka啓動多個遠程服務器

我想在一組本地集羣計算機上部署我的ActorSystem以將它們用作工作人員,但我對將該事件放入我的application.conf中的內容感到有些困惑。例如,我可以使用:

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

每個工人在啓動時只運行ActorSystem。

這讓我worker機器綁定到他們的地址,當他們開始了,但他們不聽消息:

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

我發現這個文檔到目前爲止只討論部署在我的本地主機上,這不是很有用:)。我希望有一種方法可以在不爲每個主機生成單獨配置的情況下執行此操作。


更新:

使用一個空字符串作爲主機名稱允許通過正常的IP地址的主機聯繫。使用主機名稱尋址本身目前不起作用。

+0

可能是一個錯誤,請打開一張票! –

+0

謝謝,我會嘗試編纂預期的行爲並提交一些內容。在此期間,我發現使用空字符串作爲地址(我應該更仔細地閱讀配置參考!) – rjpower

回答

1

設置「0.0.0.0」作爲主機名目前基本上禁用遠程處理,因爲這不是合法的IP發送。背景:當參考者離開本地系統時,參與者將獲取配置的IP(或主機名)插入到他們的地址部分,而這正是他們的「指針回家」,以供其他系統發回消息。

斯科特已經做了一項努力,使系統能夠接收到對不同地址的回覆here,但這還沒有包括在內 - 我們可能會爲此問題選擇不同的解決方案。

+0

謝謝 - 我最終爲我的情況提供瞭解決方案 - 如果我將主機字段留空,綁定到「任何」地址,但我仍然可以通過IP地址訪問主機(不幸的是,主機無法將其主機名識別爲有效的接收者地址)。 不過,它的工作! – rjpower