2014-07-23 78 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。

相关问题