2016-06-30 18 views
0

ich eine jgroup-basierte Anwendung und Nutzung netcat müssen überprüfen, ob die App und läuft (Health in Marathon, starten Verwaltung von Anwendungen Reihenfolge):Wie man richtig ping JGroups

nc -z -w 1 app 7801 

Alles ist auseinander fein die JGroup-Protokolle mit folgenden Ausnahmen:

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) 

Gibt es eine Möglichkeit, eine Jgroup-Anwendung auf eine geeignetere Weise zu "pingen"?

Antwort

1

Ja. Wenn Diagnosen aktiviert sind (enable_diagnostics im Transport, z. B. oder TCP), können Sie mithilfe von Probe.sh oder Netcat Informationen aus allen oder einzelnen Clustermembern extrahieren.

Standardmäßig wird Port 7500 auf 224.0.75.75 verwendet, aber diese Attribute können ebenfalls festgelegt werden.

Sie könnten auch ein einfaches Protokoll HEALTH schreiben, das einen Socket (TCP oder Datagramm) öffnet und auf einfache Are-You-Alive-Anforderungen reagiert, z. durch Zurücksenden eines einzelnen Bytes.