2014-07-23 119 views
0

我有兩個節點的風暴拓撲。一個是靈氣,另一個是主管。風暴集羣不能在生產模式下工作

不屬於風暴的代理接受來自客戶端的HTTP請求並將其傳遞給風暴拓撲。

拓撲結構如下: 1.代理將數據傳遞給風暴噴口。 2.噴口將數據傳遞給多個螺栓。 3.結果通過最後一個螺栓傳回給代理。

我正在運行代理並將數據傳遞給風暴。我可以將套接字連接到拓撲端的監聽器。 UI中顯示的噴口數據爲0。相同的拓撲在本地模式下工作正常。

認爲這是一個主管的問題,但主管似乎運行良好,因爲我能夠看到主管說明和個人噴口和螺栓。但他們都沒有發射任何東西。

現在,我很困惑,如果問題是數據被傳遞到錯誤的機器或其他東西。爲了與噴口溝通,我從代理創建套接字如下:

  InetAddress stormInetAddr=InetAddress.getByName("198.18.17.16"); 
      int stormPort=4321;     
      Socket stormSocket=new Socket(stormInetAddr,stormPort); 

這裏198.18.17.16是nimbus IP。而4321是數據預期的端口。

我試着在這裏給管理員IP,它沒有連接。但是,這的確如此。 現在代理等待特定端口上的輸出。

另一方面,處理後,數據從螺栓讀取。集羣似乎沒有任何活動。但是,我收到的迴應基本上與我發送的一些混亂數據一樣。這個迴應應該是由最後一個螺栓發送到我定義的特定端口。我將數據返回,但羣集顯示「無活動」。我知道這非常含糊,但是,有沒有人對發生了什麼有所瞭解?

回答

1

這聽起來像風暴工作正常,但您的代理/網絡設置不是。如果這是一場風暴錯誤,您應該在Nimbus用戶界面和/或風暴管理員日誌中看到例外情況。

考慮暫時關閉風暴,並在監控機器上使用nc -l 4321來聲明您的代理正在按預期工作。

但是...

你可能在你的模式的根本缺陷。 Storm的噴嘴是基於拉的,所以傳入的請求推送給他們似乎很奇怪。當然,如果您的噴嘴在旋轉起來並簡單排隊請求時開始收聽,這當然是可能的。但是,這對您的模型提出了另一個挑戰:您可能會在單臺計算機上運行多個噴嘴,並且它們不能共享相同的端口(4321)。

如果你想融合這兩個世界的推&拉;然後考慮使用Kafka Spout。

相關問題