Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Tanuki service wrapper_101
1. 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
2
3. Einleitung
... was kann der Java Service Wrapper?
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, ...)
3
4. Einleitung
... die Bestandteile des Java Service Wrapper
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)
4
5. Einleitung
... Base vs. Home?
Unterscheidung zwischen Base und Home
‣ Base Verzeichnis Konfiguration und Daten
‣ Home Verzeichnis Applikation
5
6. Integrationsarten
... wie kann der Java Service Wrapper verwendet werden?
Integration Konfiguration Betrieb Überwachung
http://wrapper.tanukisoftware.com/doc/german/integrate.html 6
7. Integrationsarten
... wie kann der Java Service Wrapper verwendet werden?
Integrationsarten
‣ wrapperJarApp (beispielsweise Winstone)
‣ wrapperSimpleApp (beispielsweise JBoss AS)
‣ wrapperStartStopApp (beispielsweise Apache Tomcat)
‣ WrapperListener (Integration in die Software)
7
8. Integrationsarten
... wrapperJarApp am Beispiel Winstone & Jenkins
Funktionsweise
‣ Start der ausführbaren JAR Applikation
‣ Stop der Applikation über System.exit() in der JVM
Verzeichnisstruktur
8
9. Integrationsarten
... wrapperJarApp am Beispiel Winstone & Jenkins
Konfiguration (wrapper.conf)
‣ wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp
‣ wrapper.java.classpath.1=lib/wrapper/wrapper.jar
‣ wrapper.app.parameter.<n> – Kommandozeilenparameter
Beispiel
9
10. Integrationsarten
... wrapperSimpleApp am Beispiel JBoss AS & Jenkins
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
10
11. Integrationsarten
... wrapperSimpleApp am Beispiel JBoss AS & Jenkins
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
11
12. Integrationsarten
... wrapperStartStopApp am Beispiel Apache Tomcat & Jenkins
Funktionsweise
‣ Start der Applikation über deren Start-Klasse mit dem Wrapper
‣ Stop der Applikation über deren Stop-Klasse mit dem Wrapper
Verzeichnisstruktur
12
13. Integrationsarten
... wrapperStartStopApp am Beispiel Apache Tomcat & Jenkins
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
13
15. Konfiguration
... General Properties
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>
15
17. Konfiguration
... Logging Properties
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
17
18. Konfiguration
... Ping Properties
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.
http://wrapper.tanukisoftware.com/doc/german/properties.html 18
19. Betrieb
... wie der Java Service Wrapper verwendet wird.
Integration Konfiguration Betrieb Überwachung
http://wrapper.tanukisoftware.com/doc/german/launch.html 19
20. Betrieb
... Möglichkeiten des Control Skripts
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
20
21. Betrieb
... Konfigurationen innerhalb des Control-Skripts
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
21
22. Agenda
... JMX und JVM.
Integration Konfiguration Betrieb Überwachung
http://wrapper.tanukisoftware.com/doc/german/jmx.html 22
23. Überwachung
... Möglichkeiten der Community Edition
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
23
24. Überwachung
... am Beispiel jmxquery
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>
24
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
alexander.pacnik@inovex.de
25