Platform as a Service für die eigene Cloud

Eclipse Gyrex

Gunnar Wagenknecht

Pünktlich zur EclipseCon Europe hat das Eclipse-Projekt Gyrex sein zweites Release veröffentlicht. Versprochen wird eine gute Integration der Eclipse-Runtime-(RT-)Projekte Equinox, p2, Jetty und RAP, um mithilfe etablierter Technologien wie Apache ZooKeeper eine Plattform für die eigene Cloud auf die Beine zu stellen.

Seit fast drei Jahren wird fleißig am Eclipse-Gyrex-Projekt entwickelt. Haupt-Contributor ist die Firma AGETO Service GmbH [1], die das Projekt intensiv als Grundlage für eigene OSGi-basierte Serveranwendungen einsetzt. So ist denn auch in der Projektbeschreibung zu lesen, dass es sich bei Gyrex (eine Ableitung vom englischen Wort Gyre [dʒaɪə] [2]) um ein Projekt handelt, das das Erstellen von dynamischen und erweiterbaren Equinox-basierten Serverlösungen ermöglicht. Mittlerweile ist das zweite Release des Projekts verfügbar, das wir in diesem Artikel genau unter die Lupe nehmen wollen.

Die Architektur von Gyrex

Das Eclipse-Gyrex-Projekt besteht aus einer Reihe von OSGi Bundles, die sowohl als fertiges Serverprodukt als auch als Target Components für die direkte Einbindung in die Target Platform des Workspace angeboten werden [3]. Die verschiedenen Aufgaben sind in einzelne Komponenten aufgeteilt (Abb. 1). Allen gemeinsam und Grundlage von Gyrex ist das Equinox OSGi Framework. Darauf aufbauend lassen sich die Komponenten vier Themenbereichen zuordnen:

Abb. 1: Die Komponenten von Gyrex im Überblick
  • Cloud-Dienste
  • Unterstützung für Monitoring und Debugging
  • Mandantenfähigkeit
  • Serveradministration
Cloud-Dienste

Die Cloud-Dienste erleichtern den Aufbau und Betrieb von vernetzten Serveranwendungen. Neben kleineren API-Schmankerln (z. B. APIs für einen Queue-Service und verteilte Locks) findet man dort vor allem Komponenten zum Aufbau des Serverclusters und zur Koordinierung der Zuständigkeiten auf Basis von Apache ZooKeeper [4]. Außerdem gibt es dort eine Implementierung des Eclipse Preferences API [5] mit Apache ZooKeeper als Ablageort, eine verteilte Steuerung und Abarbeitung von Hintergrundprozessen auf Basis von Quartz [6] und des Eclipse Jobs API [7] sowie eine Lösung zur Softwareverteilung im Cluster auf Basis von p2 [8].

Unterstützung für Monitoring und Debugging

Neben einer Anbindung der verschiedenen Logging APIs (inklusive des OSGi Log Service) basierend auf SLF4J bietet Gyrex auch ein Framework für das Sammeln von Metriken und Diagnoseinformationen zur Laufzeit, die dann zum Beispiel über JMX ausgelesen werden können. Dabei liefert Gyrex schon eigene Metriken mit. Der Anwendungsentwickler kann das Framework aber auch für eigene Metriken und Überwachungsagenten nutzen. Dazu gibt es auch noch Kommandos für die Equinox-OSGi-Konsole, um Debug- und Trace-Informationen bequem zur Laufzeit konfigurieren zu können.

Mandantenfähigkeit

Vielleicht nicht für jeden im Fokus, aber eine oft gewünschte Funktion für Software-as-a-Service-Anwendungen ist die Mandantenfähigkeit. Servlets, Businessobjekte und -logiken sollen nach Möglichkeit nur einmal entwickelt werden und dann in verschiedenen Konfigurationen, Kombinationen oder gar Versionen (OSGi sei Dank) den einzelnen Mandanten zugänglich gemacht werden. Gyrex bietet dafür eine kontextbezogene Runtime. Dabei werden beispielsweise Webanwendungen per URL einem Kontext (dem Mandanten) zugeordnet. Der Kontext kann dann benutzt werden, um mandantenindividuelle Sets an Datenbanken, OSGi Services und Eclipse Extensions zu bedienen.

Serveradministration

Ein wichtiger Aspekt in Gyrex ist der Serverbetrieb. Damit dieser keine Kopfschmerzen bereitet, bietet Gyrex verschiedene Möglichkeiten, die Serverfarm zu administrieren. Sehr bequem geht das über eine auf RAP [9] basierende Oberfläche (Abb. 2). Diese Oberfläche ist über einen separaten Port erreichbar, sodass keine Vermischung mit den produktiven Anwendungen vorkommen kann. Selbstverständlich kann die Verbindung verschlüsselt und der Zugang geschützt werden. Einen weiteren Weg, Gyrex-basierte Systeme zu administrieren, bietet die Equinox-OSGi-Konsole. Ein handliches Set von Kommandos erlaubt unter anderem das Einrichten und Verwalten des Clusters, die Konfiguration der Webserver und die Planung und Überwachung von Hintergrundprozessen. Wer allerdings jetzt befürchtet, er muss jeden Server einzeln konfigurieren, den kann ich beruhigen. Sämtliche Konfigurationen sind mit den Cloud-Diensten integriert. So können beispielsweise die Jetty-Server im Cluster an zentraler Stelle verwaltet werden. Durch den gezielten Einsatz von Tags lassen sich einzelne Server gruppieren und deren Konfiguration anpassen. Auch SSL-Zertifikate können so einheitlich auf die Server ausgerollt werden, ohne dass man sich mit Key Stores und kryptischen Konfigurationseinstellungen herumärgern muss.

Abb. 2: Administrationsoberfläche basierend auf RAP
Geschrieben von
Gunnar Wagenknecht
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.