Upload
inovex-gmbh
View
830
Download
3
Embed Size (px)
Citation preview
Tanuki Service Wrapper 101
JVM Verwaltung mit der Community Edition
Alexander Pacnik Karlsruhe, 05.04.2013
2
Agenda ... worum es in diesem Vortrag geht.
Integration Konfiguration Betrieb Überwachung
3
Funktionen der Community Edition
‣ Verwaltung als Dienst
‣ Verwaltung der JVM (Start, Stop, Thread Dump)
‣ Überwachung der JVM (Logging, JVM freeze / crash Detection)
‣ Zentrale Konfiguration der JVM, Container und Applikationen
‣ Plattformunabhänige Verwaltung (Linux, Windows, OSX, ...)
Einleitung ... was kann der Java Service Wrapper?
4
Wesentliche Bestandteile
‣ bin/wrapper (System Applikation)
‣ lib/libwrapper.so (Library)
‣ lib/wrapper.jar (Java Applikation)
‣ src/bin/sh.script.in (Vorlage für control)
‣ src/conf/wrapper.conf.in
(Vorlage für wrapper.conf)
Einleitung ... die Bestandteile des Java Service Wrapper
5
Unterscheidung zwischen Base und Home
‣ Base Verzeichnis Konfiguration und Daten
‣ Home Verzeichnis Applikation
Einleitung ... Base vs. Home?
http://wrapper.tanukisoftware.com/doc/german/integrate.html 6
Integrationsarten ... wie kann der Java Service Wrapper verwendet werden?
Integration Konfiguration Betrieb Überwachung
7
Integrationsarten
‣ wrapperJarApp (beispielsweise Winstone)
‣ wrapperSimpleApp (beispielsweise JBoss AS)
‣ wrapperStartStopApp (beispielsweise Apache Tomcat)
‣ WrapperListener (Integration in die Software)
Integrationsarten ... wie kann der Java Service Wrapper verwendet werden?
8
Funktionsweise ‣ Start der ausführbaren JAR Applikation
‣ Stop der Applikation über System.exit() in der JVM
Verzeichnisstruktur
Integrationsarten ... wrapperJarApp am Beispiel Winstone & Jenkins
9
Konfiguration (wrapper.conf) ‣ wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp
‣ wrapper.java.classpath.1=lib/wrapper/wrapper.jar
‣ wrapper.app.parameter.<n> – Kommandozeilenparameter
Beispiel
Integrationsarten ... wrapperJarApp am Beispiel Winstone & Jenkins
10
Funktionsweise (empfohlen wenn möglich) ‣ Start der Applikation über deren Start-Klasse mit dem Wrapper
‣ Stop der Applikation über System.exit() in der JVM
Verzeichnisstruktur
Integrationsarten ... wrapperSimpleApp am Beispiel JBoss AS & Jenkins
11
Konfiguration (wrapper.conf) ‣ wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
‣ wrapper.java.classpath.1=lib/wrapper/wrapper.jar
‣ wrapper.java.classpath.2=/usr/local/jboss-server/5.1.0/bin/run.jar
‣ wraper.app.parameter.1=<Main Class>
Beispiel
Integrationsarten ... wrapperSimpleApp am Beispiel JBoss AS & Jenkins
12
Funktionsweise ‣ Start der Applikation über deren Start-Klasse mit dem Wrapper
‣ Stop der Applikation über deren Stop-Klasse mit dem Wrapper
Verzeichnisstruktur
Integrationsarten ... wrapperStartStopApp am Beispiel Apache Tomcat & Jenkins
13
Konfiguration (wrapper.conf) wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperStartStopApp
wrapper.java.classpath.1=lib/wrapper/wrapper.jar
wrapper.java.classpath.2=/usr/local/apache-tomcat/6.0.35/bin/bootstrap.jar
Beispiel
Integrationsarten ... wrapperStartStopApp am Beispiel Apache Tomcat & Jenkins
http://wrapper.tanukisoftware.com/doc/german/properties.html 14
Konfiguration ... wichtige Konfigurationsmöglichkeiten.
Integration Konfiguration Betrieb Überwachung
15
Properties
‣ # Lücken in der Nummerierung der Properties zulassen
‣ wrapper.ignore_sequence_gaps=TRUE
‣ # Nicht starten wenn die PID bereits vorhanden ist
‣ wrapper.pidfile.strict=TRUE
‣ # das Basisverzeichnis welches für relative Pfade verwendet wird
‣ wrapper.working.dir=<path>
Konfiguration ... General Properties
16
Properties
‣ wrapper.java.command Pfad zum Java Binary
‣ wrapper.java.mainclass Wrapper Startklasse z.B. WrapperJarApp
‣ wrapper.java.classpath Java Class-Pfad (z.B. wrapper.jar)
‣ wrapper.java.library.path Java Library-Pfad (z.B. libwrapper.so)
‣ wrapper.java.additional.<n> Zusätzliche JVM Parameter
‣ wrapper.java.initmemory Initiale Java Heap Größe(in MB)
‣ wrapper.java.maxmemory Maximale Java Heap Größe(in MB)
Konfiguration ... JAVA Properties
17
Properties
‣ wrapper.debug=FALSE Debugging aus
‣ wrapper.logfile=logs/wrapper.log Pfad zum Logfile
‣ wrapper.logfile.loglevel=INFO Loglevel
‣ wrapper.logfile.rollmode=SIZE Rotationskriterium
‣ wrapper.logfile.maxsize=10M Größe bei der rotiert wird
‣ wrapper.logfile.maxfiles=5 Anzahl der Logfiles
‣ wrapper.syslog.loglevel=NONE Nach Syslog schreiben
Konfiguration ... Logging Properties
http://wrapper.tanukisoftware.com/doc/german/properties.html 18
Ping
‣ wrapper.ping.interval=5 alle 5s wird die JVM auf Reaktion prüfen
‣ wrapper.ping.timeout=30 nach 30s ohne Reaktion Restart auslösen
Bemerkung ‣ Unter hoher Last kann es u. Umständen sinnvoll sein diese Zeiten anzupassen,
da der Wrapper ggf. fälschlicherweise ein „JVM Hung“ erkennt und einen Restart der JVM auslöst. Timeout=0 deaktiviert die Detection vollständig. Dies sollte nur in Ausnahmefällen notwendig sein.
Konfiguration ... Ping Properties
http://wrapper.tanukisoftware.com/doc/german/launch.html 19
Betrieb ... wie der Java Service Wrapper verwendet wird.
Integration Konfiguration Betrieb Überwachung
20
Optionen ‣ console In der aktuellen Shell starten
‣ start Als Daemon starten
‣ stop Daemon oder Shell Ausführung beenden
‣ restart Falls der Prozess läuft stoppen und dann starten
‣ condrestart Nur durchstarten wenn er schon läuft
‣ status Prozess Status abfragen
‣ install Als Dienst einrichten, der beim Systemstart gestartet wird
‣ remove Dienst wieder deinstallieren
‣ dump Java Thread Dump anlegen, falls der Dienst läuft
Betrieb ... Möglichkeiten des Control Skripts
21
Konfiguration ‣ INSTANCE_PATH= Pfad zur Instanz
‣ APP_NAME= Name für das Init Skript
‣ APP_LONG_NAME= Beschreibung
‣ WRAPPER_CMD=wrapper Pfad zum Wrapper Binary
‣ WRAPPER_LIB=lib/wrapper Pfad zu Wrapper Library
‣ WRAPPER_CONF=wrapper.conf Pfad zur Wrapper Konfiguration
‣ PRIORITY= Nice-Level des Prozesses
‣ PIDDDIR= Pfad zurm PID-File
‣ RUN_AS_USER= Benutzer des Prozesses
Betrieb ... Konfigurationen innerhalb des Control-Skripts
http://wrapper.tanukisoftware.com/doc/german/jmx.html 22
Agenda ... JMX und JVM.
Integration Konfiguration Betrieb Überwachung
23
JMX ‣ stop, restart und thread dump können über JMX angesteuert werden Sinnvolle JVM Optionen ‣ -showversion Schreibt die JVM Version in das wrapper.log
‣ -XX:+PrintCommandLineFlags Schreibt die JVM Parameter in das wrapper.log
‣ -XX:+PrintGCDetails GC Logging aktivieren
‣ -XX:+PrintGCTimeStamps Log-Einträge um Zeitstempel ergänzen
‣ -XX:+PrintGCDateStamps Log-Einträge um Datumsstempel ergänzen
‣ -Xloggc:/path/to/jvm-gc.log Pfad zum GC Log
Überwachung ... Möglichkeiten der Community Edition
24
jmxquery ‣ java -cp jmxquery.jar jmxquery.JMXQuery \
-U service:jmx:rmi:///jndi/rmi://localhost:50000/jmxrmi \
-O "java.lang:type=MemoryPool,name=PS Perm Gen" \
-A Usage -K used -I Usage \
-username <user> -password <password>
Überwachung ... am Beispiel jmxquery
25
Vielen Dank für Ihre Aufmerksamkeit
Kontakt Alexander Pacnik Systems Engineering inovex GmbH Office Karlsruhe Zur Gießerei 16 76227 Karlsruhe +49 (0)173 3181 040 [email protected]
Anhang
27
Lizenz des Vortrags ‣ Creative Commons (by-nc-nd)
Software ‣ http://wrapper.tanukisoftware.com/download/3.5.17/wrapper-delta-pack-3.5.17.zip
‣ http://mirrors.jenkins-ci.org/war/1.508/jenkins.war
‣ http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.zip
‣ http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA.zip/download
‣ http://jmxquery.googlecode.com/files/jmxquery-1.3-bin.zip
Quellen ‣ http://wrapper.tanukisoftware.com
Anhang