如何正确地 ping JGroups

How to properly ping JGroups

我有一个基于 jgroup 的应用程序并使用 netcat 检查该应用程序是否已启动并且运行(Marathon 中的健康检查,管理应用程序启动顺序):

nc -z -w 1 app 7801

除了有以下异常的 jgroup 日志外,一切都很好:

WARN  org.jgroups.protocols.TCP - JGRP000006: failed accepting connection from peer
app        | java.io.EOFException: null
app        |        at java.io.DataInputStream.readFully(DataInputStream.java:197)
app        |        at org.jgroups.blocks.TCPConnectionMap$TCPConnection.readPeerAddress(TCPConnectionMap.java:511)
app        |        at org.jgroups.blocks.TCPConnectionMap$TCPConnection.<init>(TCPConnectionMap.java:381)
app        |        at org.jgroups.blocks.TCPConnectionMap$Acceptor.handleAccept(TCPConnectionMap.java:303)
app        |        at org.jgroups.blocks.TCPConnectionMap$Acceptor.run(TCPConnectionMap.java:287)
app        |        at java.lang.Thread.run(Thread.java:745)

有没有办法以更合适的方式 "ping" jgroup 应用程序?

是的。如果启用了诊断(传输中的 enable_diagnostics,例如 UDPTCP),您可以使用 probe.sh 或 netcat 从所有或单个集群成员中提取信息。

默认情况下,使用 224.0.75.75 上的端口 7500,但也可以设置这些属性。

您还可以编写一个简单的 HEALTH 协议来打开套接字(TCP 或数据报)并响应简单的“你还活着”请求,例如通过发回一个字节。