Installation von Ganglia und MDS4 (monitoring)
[Sie bezieht sich auf Ganglia 3.0.7.]
Inhalt:
- Überblick
- Aufbauen von Ganglia
- Installation von Ganglia
- Ganglia Testen
- Installation von Ganglia als Systemservice
- Konfiguration von Globus für Ganglia
- Konfiguration von Globus MDS
- Probleme
- Globus neustarten und testen
1. Überblick
Einen umfassenden Überblick über Ganglia im Zusammenspiel mit Globus findet sich bei IBM:
Maximize your grid potential, Part 1: Ganglia. Der Abruf des Dokuments erfordert eine kurze Registrierung,
(Die anderen zwei Bände aus dieser Reihe sind sicherlich auch sehr interessant:
Maximize your grid potential, Part 2: GridWay behandelt den Ressourcen-Broker, der MDS und GRAM benutzt, und
Maximize your grid potential, Part 3: Security and authentication beschäftigt sich mit gsi-ssh und myproxy.
Hier wird erst einmal nur der Monitoring daemon gmond benutzt. Der Ganglia Meta Daemon gmetad soll hier erst einmal ausgeklammert sein, dieser ist mehr für die "Überwachung" ganzer Clusterkomplexe gedacht. MDS4 benutzt gmond.
Zuerst benötigen wir die aktuellen Ganglia-Quellen. Im oben genannten Tutorial wird noch die Version 3.0.1 verwendet, seit November 2005 steht die 3.0.2 zur Verfügung. Und den entsprechenden tarball gib es von SourceForge unter:http://ganglia.info/ (ganglia-3.0.7.tar.gz)
und er wird unter /tmp/ganglia-3.0.x.tar.gz abgespeichert.
2. Aufbauen von Ganglia
Zum Übersetzen wird das globus-Verzeichnis als Startpunkt gewählt. Man arbeitet als user globus:
- cd /work1/globus/
- tar xvfz /tmp/ganglia-3.0.x.tar.gz
Das Archiv wird in das Verzeichnis ganglia-3.0.x/ entpackt.
- cd ganglia-3.0.x/
Alle weiteren Kommandos werden in diesem Verzeichnis ausgeführt.
Das Globus-Helper-Paket enthät eine Skripte zur Konfiguration von Ganglia , die ausgeführt werden:
- cp ~/globus-helper/globus-install/ganglia.cfg .
- sh -x ganglia.cfg
Weiterhin soll die Standard-Installation im Globus-sbin-Verzeichnis erfolgen. Dazu wird die
gmond/gmond.init
editiert und die Zeile
GMOND=/usr/sbin/gmond
ersetzt durch
GMOND=/usr/local/globus/ganglia/sbin/gmond |
bevor die Datei nach /etc/init.d/ kopiert wird.
Jezt kann man das Ganglia daemon bauen:
- make
3. Installation von Ganglia
Das Installieren von Ganglia übernimmt der user root:
- make install
Die Dateien sollten nun unter /usr/local/globus/ganglia/ installieren sein:
Bibliotheken unter
lib/libganglia* installiert sein, und
include/ganglia.h
bin/ganglia-config
bin/gmetric
bin/gstat
sbin/gmond
sollten vorhanden sein.
Erzeugen wir uns aber erst einmal die Konfigurationsdatei:
- /usr/local/globus/ganglia/sbin/gmond -t > /etc/gmond.conf
Die Datei /etc/gmond.conf muss jetzt editiert werden. Die Felde "name", "owner", und "latlong" sollen ausgefüllt werden.
4. Ganglia Testen
Wir jetzt können gmond ausführen:
- /usr/local/globus/ganglia/sbin/gmond
Trotzdem läuft gmond schon, auf port 8649:
- telnet localhost 8649
Eine XML-Ausgabe mag etwas unübersichtlich sein, aber für Maschinen ist sie recht gut lesbar. Wer im lokalen Netzsegment gmond noch auf anderen Rechnern laufen lässt, der muss hier darauf gefasst sein, dass die Ausgabe auch Informationen zu einigen dieser anderen und nicht nur zum lokalen Rechner enthält. Das kann später zu Problemen bei der Auswertung durch MDS4 führen und eine Anpassung der gmond-Konfiguration notwendig machen. (Siehe unten).
|
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> |
5. Installation von Ganglia als Systemservice
Es empfiehlt sich nun, den laufenden gmond zu beenden
- gmond /gmond.init stop
und gmond
dauerhaft als Service zu installieren (MDS4 arbeitet bevorzugt
dann mit gmond zusammen, wenn er als Service installiert ist). Also,
erst den gegebenenfalls noch laufenden gmond beenden und dann ausführen:
- cp gmond/gmond.init /etc/rc.d/init.d/gmond
- /sbin/chkconfig --add gmond
- /sbin/chkconfig --list gmond
- /etc/rc.d/init.d/gmond start
6. Konfiguration von Globus für Ganglia
Die Konfiguration von Globus für Ganglia hängt von der Version von Globus ab:
Globus v. < 4.0.5
-
Um Ganglia zu konfigurieren, muß in der Datei
$GLOBUS_LOCATION/etc/globus_wsrf_mds_usefulrp/gluerp.xml
der bisherige "defaultProvider" auskommentiert und ersetzt werden durch<defaultProvider>java.org.globus.mds.usefulrp.glue.GangliaElementProducer</defaultProvider>
Globus v. ≥ 4.0.5
-
Globus 4.0.5 jetzt nutzt "Resource Property Provider component" von "UsefulRP subsystem", um die Informationen von Ressource-Services über MDS zu übertragen. Es hat ein Tool zum konfigurieren, mds-gluerp-configure; für die grundlegende Services, Ganglia und "fork" Job-Submission, man nutzt zwei Kommandos:
-
mds-gluerp-configure none ganglia $GLOBUS_LOCATION/etc/globus_wsrf_mds_index/ganglia-config.xml
Successfuly wrote configuration output file to: /usr/local/globus/gtk/etc/globus_wsrf_mds_index/ganglia-config.xml
-
mds-gluerp-configure fork ganglia $GLOBUS_LOCATION/etc/gram-service-Fork/gluerp-config.xml
Successfuly wrote configuration output file to: /usr/local/globus/gtk/etc/gram-service-Fork/gluerp-config.xml
-
7. Konfiguration von Globus MDS
Für MDS wird die
$GLOBUS_LOCATION/etc/globus_wsrf_core/server-config.wsdd
editiert.
Folgende Zeilen werden
im Abschnitt "<globalConfiguration>" eingefügt:
<parameter name="logicalHost" value="Nonexistent.aip.de"/> |
Nonexistent.aip.de
der korrekte Internet-Name von das Computer das gmond lauft eingetragen.
Für den MDS-Upload wird in
$GLOBUS_LOCATION/etc/globus_wsrf_mds_index/hierarchy.xml
der vorhandene Bereich
"<upstream>" auskommentiert und ersetzt durch
https://astrogrid-mds.aip.de:8443/wsrf/services/DefaultIndexService
https://astrogrid-mds.aip.de:8443/wsrf/services/DefaultIndexService
|
Nachdem nun der Service läuft, können wir MDS4 konfigurieren, die gmond-Ausgaben
auszuwerten. Dazu müssen wir die folgende Datei anpassen:
$GLOBUS_LOCATION/etc/globus_wsrf_mds_usefulrp/gluerp.xml
Die benötigte Passage ist als Kommentar enthalten.
<defaultProvider>none</defaultProvider>
muss dazu auskommentiert und
<defaultProvider>java.org.globus.mds.usefulrp.glue.GangliaElementProducer</defaultProvider>
im Gegenzug aktiviert werden.
8. Probleme
Wenn also mehr als ein HOST-Eintrag vorhanden ist, könnte das Probleme bereiten:
- telnet localhost 8649 | grep "HOST NAME=" | wc -l
sollte also am besten identisch 1 sein. Das automatische Austauschen der Informationen mit den anderen Rechnern über den UDP channel ist zwar für die einfache Ganglia-Benutzung ausreichend, aber für MDS4 nicht. Und natürlich sollen die einzelnen Maschinen nachher mit MDS4 gruppiert werden.
Will man ein paar Anpassungen vornehmen, dann kann man /etc/gmond.conf editieren. Zum Beispiel bietet es sich an, die Kommunikation mit anderen gmond zu unterbinden, sofern Probleme bei der Auswertung durch MDS4 auftreten. Es bietet sich hier an, die Abschnitte udp_send_channel und udp_recv_channel abzuändern, indem einfach die mcast_join Adressen und die bind Adresse auf einen von den anderen gmond-Konfigurationen abweichenden Wert gesetzt werden.
In Zukunft werden für das Monitoring echter Cluster weitergehende Vefahren entwickelt, um komplexe gmond-Ausgaben und MDS4 fehlerfrei zu gestalten.
9. Globus neustarten und testen
Nach dem Neustart des Globus-Containers,
- /etc/init.d/globus restart
sollte die Zusammenarbeit von MDS4 und Ganglia möglich sein.
Hier ist ein Beispiel des Log Datei $GLOBUS_LOCATION/var/container.log nach einem korrekten Setup von Globus für Ganglia.
Überprüfen können wir das mit der folgenden Abfrage:
- wsrf-query -a -z none -s https://127.0.0.1:8443/wsrf/services/DefaultIndexService
Die Antwort wird ein paar Sekunden auf sich warten lassen, aber wenn MDS4 mit Ganglia klarkommt, dann sollten wir nun auch Informationen über den Namen des Rechners und viele Details über Prozessor, Hauptspeicher, Plattenplatz, Betriebssystem, Auslastung etc. erhalten.
Fehlen diese Angaben in der Ausgabe, dann funktioniert die Zusammenarbeit mit Ganglia noch nicht.
Evtl. liegt dann das oben beschriebene Problem vor. Hier ein Fragment der Ausgabe als Beispiel:
<ns11:AggregatorData> |



