# JBoss Clustering schlägt fehl



## Cyborg (24. Jun 2012)

Hallo zusammen,

ich bastel nun schon einen Tag daran, einen JBoss Cluster zum Laufen zu bekommen.
Der Cluster soll erst einmal "out of the box" erzeugt werden und wenn dies erfolgreich getestet ist, dann möchte ich meine Applikation integrieren.

Allerdings scheiter ich schon beim ersten Versuch :/

Vorgegangen bin ich nach dieser Dokumentation und hänge bereits bei Abschnitt 1 und dem Multicast.

Vorgehensweise in Kurzfassung:
- JBoss 5.1 heruntergeladen und entpackt
- das "all" Verzeichnis zwei mal kopiert (node1, node2)
- zwei Konsolen geöffnet und in das bin Verzeichnis navigiert.
- 1. Instanz gestartet mit: run.bat -c node1 -b 10.71.70.10
- 2. Instanz gestartet mit: run.bat -c node2 -b 10.71.70.11 -Djboss.messaging.ServerPeerID=1

Die 1. Instanz schmeißt mir schon relative früh eine Warnung mit:



> 15:51:42,674 WARN  [UDP] failed to join /224.0.0.75:7500 on eth4: java.net.SocketException: Unrecognized Windows Sockets error: 0: no Inet4Address associated with interface
> 15:51:42,675 WARN  [UDP] failed to join /224.0.0.75:7500 on net4: java.net.SocketException: Unrecognized Windows Sockets error: 0: no Inet4Address associated with interface
> 15:51:42,676 WARN  [UDP] failed to join /224.0.0.75:7500 on net9: java.net.SocketException: Unrecognized Windows Sockets error: 0: no Inet4Address associated with interface
> 15:51:42,676 WARN  [UDP] failed to join /224.0.0.75:7500 on net10: java.net.SocketException: Unrecognized Windows Sockets error: 0: no Inet4Address associated with interface
> ...



Das starten der 2. Instanz bringt dann auch rein gar nichts mehr und beinhaltet ebenfalls diese Warnung.
Ich interpretiere das jetzt so, dass das Multicast bei mir nicht zu funktionieren scheint.
Ich habe mir laut Doku dann auch dieses Diagnosetool "JGroup" runtergeladen und gestet.
Hier gibt es keine Probleme. Ich male ins eine Fenster und das andere Fenster malt es mit.

Also vielleicht doch nicht das Multicast ?
Leider gibt es sonst keine Fehlermeldungen mehr, die auf irgendwas schließen könnten (oder ich habe sie überlesen).

Wenn ihr zur Auswertung die gesamte Log braucht, dann poste ich diese gerne noch hier rein.

Mein System: Windows 7 Pro. 64Bit


----------



## FArt (25. Jun 2012)

Keine Lösung, nur eine Tipp: nimm einen neueren Community-JBoss (also derzeit 7.1.1).
Fixes bekommst du für den 5er in der Regel nicht mehr. Auch viele bekannte Probleme wurden nicht mehr auf dieser Version gelöst.
Eine Migration auf 7 kann aufwendig sein. Wenn du also eh erst anfängst, dann tu dir das nicht an.


----------



## Cyborg (25. Jun 2012)

Vielen Dank noch für die Antwort.

Leider komm ich um die Nutzung der 5er Version nicht drum herum.
Derzeit jedenfalls nicht. (wie du erwähntest, sehr aufwendige Migration einer vorhanden Applikation)

Ich habs auch erst einmal gelöst bekommen.

Erst: 





> -Djava.net.preferIPv4Stack=true


Dann: 





> -Djgroups.bind_addr=192.168.128.5



und jetzt klappt auch der Cluster


----------



## FArt (26. Jun 2012)

Noch ein Tipp:

eine vorhandene Applikation einfach mal in einen Cluster werfen wird in der Regel kein sinnvolles Ergebnis liefern. Wenn du (evtl. außer einfachem Load-Balancing) von einem Cluster profitieren möchtest, muss die Applikation "clusterfähig" designt worden sein.


----------



## Cyborg (26. Jun 2012)

Genau, Load-Balancing und ein damit verbundenes, vorteilhaftes Session-Replikation möchte ich für Testzwecke erreichen. Wird das nicht vom JBoss gehandhabt ?


----------



## FArt (26. Jun 2012)

Cyborg hat gesagt.:


> Genau, Load-Balancing und ein damit verbundenes, vorteilhaftes Session-Replikation möchte ich für Testzwecke erreichen. Wird das nicht vom JBoss gehandhabt ?



Doch, der macht das schon richtig. Aber ob das dann performant genug ist (Replikation) und deine Applikation auch im Cluster konsistent arbeitet (Transaktionen) , das hängt nicht vom JBoss ab, sondern nur von der Applikation und der Konfiguration des Clusters bzw. des Applicationservers.

Wie gesagt: eine sinnvoll geclusterte Applikation ist für Clustering designt bzw. angepasst. Das kann sich bis auf die Arbeitsabläufe durchschlagen bzw. der Sichtbarkeit von Daten (ACID gegenüber BASE) und vieles mehr.


----------



## Cyborg (26. Jun 2012)

Ich werd es einfach testen müssen. Was anderes bleibt mir nicht übrig 

Das Thema ist jetzt nochmal offen, da ich noch über einen anderen Fehler gestolpert bin.

Wenn ich meine zweite JBoss Instanz starte bekomm ich ein



> java.net.BindException: Address already in use: JVM_Bind:8080



und das obwohl ich die 2. Instanz auf eine andere IP binde ?!


----------



## FArt (27. Jun 2012)

Sieh im Logfile nach. Da wird geloggt, welcher Service sich auf welche Adresse und welchen Port bindet.

Es gibt noch die Alternative, den JBoss (auf einer Maschine) nicht auf unterschiedliche IP Adressen zu binden, sondern mit unterschiedlichen Ports zu betreiben. 
https://community.jboss.org/wiki/ConfigurePorts


----------



## Cyborg (27. Jun 2012)

Ja, beide Server starten auf 8080
Aber durch das binden auf unterschiedliche IP Adressen dürfte das doch kein Problem sein ?!

Ich mein auch, dass das mal lief.


----------



## nillehammer (27. Jun 2012)

> Ja, beide Server starten auf 8080
> Aber durch das binden auf unterschiedliche IP Adressen dürfte das doch kein Problem sein ?!


Die Kombination von IP und Port muss eindeutig sein. Dein Ansatz: "Selber Port unterschiedliche Adressen" ist also erstmal richtig.


> Ich mein auch, dass das mal lief.


Hast Du danach was an der Konfiguration geändert? Horcht vielleicht was anderes auf dem Port? Bspw. ein extra Tomcat, ein (Test-)Jetty, ein verbogener Apache-httpd, irgend ein (Test-)Proxydienst. Das Komanndo 
	
	
	
	





```
netstat
```
 leistet wertvolle Dienste. Gibt's sowohl in der Windows- als auch in der Unixwelt.


----------



## Cyborg (28. Jun 2012)

Ich glaube ja so langsam das "bind" schlägt fehl.

obwohl ich den jboss beim start an eine ip binde, habe ich in netstat trotzdem sowas



> TCP    0.0.0.0:8080           0.0.0.0:0              ABHÖREN



Er scheint nur die ganzen Services an die angegebene IP zu binden



> TCP    192.168.0.1:1099       0.0.0.0:0              ABHÖREN
> 
> TCP    192.168.0.1:8009       0.0.0.0:0              ABHÖREN
> TCP    192.168.0.1:8083       0.0.0.0:0              ABHÖREN
> ...



// edit: oh mann bin ich blöd

kommando zurück. ich hatte die ganze zeit meine alte server.xml benutzt.
jetzt passt alles von den Ports


----------

