2

我有一个 akka-cluster 项目:

https://github.com/roclas/akka-distributed-hash

这基本上是一个跨集群节点的分布式 HashMap。

我希望能够读取(使用 tcpdump 或 wireshark 或类似的东西)不同虚拟机中参与者之间交换的消息。

我怎么能做到?

进行 TCP 转储时,我只看到“集群消息”,但看不到不同虚拟机中不同参与者交换的消息。

如果我在端口 2551 上启动一个节点:sbt "run 2551" (将是主节点)

和端口 2552 上的另一个节点: sbt "run 2552"

当我这样做时实际发生了什么?:

curl -X PUT http://localhost:8551 --data "hello=333&world=456"

我明白那个:

  1. 主节点的 web 服务接收到 http put 请求

  2. 主节点更改其 HashMap 并向第二个节点的参与者发送一条消息,以便它更新其哈希(<-这是我要跟踪的部分)

  3. 第二个节点更新它的哈希(所以这意味着消息已被成功接收)。我怎么无法使用 TCP 转储看到该消息?(我看到端口 2552 上没有收到任何内容,并且我还做了一个 tcpdump 监听所有网络接口和所有端口,从我发送 http put 消息的那一刻到第二个节点中更新哈希的那一刻,没有tcp消息似乎包含主节点中的actor发送给第二个节点上的actor的akka​​消息)

谢谢

4

1 回答 1

0

我在这里找到了答案:

https://groups.google.com/forum/#!searchin/akka-user/tcpdump/akka-user/pipFVxI6XsU/XlLh0e_8v_0J

我正在寻找的消息是通过端口 2552 和 2551 发送的,只是没有在集群节点相互发送的所有消息中找到它们,但是按段大小过滤我能够隔离我想要的消息并查看它们在内部的样子。

于 2015-02-14T13:57:31.600 回答