Bachelor-Arbeit von: Andreas Schaeffer Referent: Prof. Dr. Johannes Reichardt Koreferent: Prof. Dr. Woldemar Fuhrmann Titel:
Planung und Implementierung eines skalierbaren, verteilten Server-Dienstes zur Verwaltung von Aufgaben in einem Rechenzentrum
German Abstract
Diese Arbeit (die Bachelorarbeit) beschreibt die Planung und Implementierung eines skalierbaren, verteilten Serverdienstes zur Verwaltung von Aufgaben in einem Rechenzentrum. Die unter der Apache License stehende Software umfasst ein Konfigurationsmanagement zur zentralisierten Verwaltung von Konfigurationen. Das verteile System realisiert ein Business Process Management, das die Ausführung von Aufträgen auf den Zielsystemen erlaubt. Zur Verwaltung von Konfigurationen steht eine webbasierte Benutzeroberfläche zur Verfügung. Besonderes Augenmerk wurde auf die Skalierbarkeit und Erweiterbarkeit, u.a. durch REST Schnittstellen, gelegt.
English Abstract
This thesis describes the design and implementation of a scalable, distributed software for managing tasks in a it data center. The software includes a centralized configuration management. It also realizes a business process management system, which allows the execution of tasks on a large number of target systems. To manage configurations there is a web-based user interface available. Particular emphasis was on scalability and extensibility, e.g. by providing REST interfaces. The software is licensed under the Apache License.
Aufgaben in einem Rechenzentrum
- Allgemein:
- Verwaltung der Hardware-Systeme
- Verwaltung und Durchführung von Software-Installationen und -Upgrades
- Verwaltung von Software-Konfigurationen
- Konkret:
- Installation der Serversoftware: z.B.: HTTP-Server, FTP-Server, E-Mail-Server
- Einrichten von virtuellen Servern
- Einrichten von Webpaketen
- Einrichten von E-Mail-Adressen
- Immer bedenken:
- Es handelt sich oft um hunderte oder tausende Systeme, die es zu verwalten und betreiben gilt
- Viele Aufgaben sind gleich oder ähnlich
- Einige der Aufgaben sind zeitkritisch
Ziele
- Zentrale Erfassung und Verwaltung aller Hard- und Software
- Konfigurationsmanagement
- Gleichartige, wiederkehrende Aufgaben automatisieren
- Administratoren können sich auf die wesentlichen Aufgaben konzentrieren
- Reduzierung von menschlichen Fehlern
- Einführung von Business-Prozessen
- Zerteilung von umfangreichen Automatismen in möglichst atomare Aufgaben
- Abhängigkeiten von Aufgaben zu anderen Aufgaben
- Systemübergreifende Konfigurationen (z.B. sollen sich Webserver und Datenbank auf verschiedenen Servern befinden können
- Systeme sollen ineinander greifen
Probleme
- Konfigurationsmanagement in Rechenzentren ist schwierig:
- Unterschiedlichste Konfigurationsformate
- Konfigurationen liegen über viele Systeme verteilt vor Konfigurationsformate haben oftmals keine Spezifikation (Ausnahmen: XML-Schema, DTD) Konfigurationsformate ändern sich mit neueren Softwareversionen
- Ebenfalls nicht trivial: Durchführung von Installationen und Upgrades
- Software hängt von anderer Software ab
- Softwareversionen nicht immer kompatibel
- Unterschiedliche Hardwareplattformen
- Unterschiedliche Betriebssysteme und Distributionen
Funktionale Anforderungen
- Zentralisiertes Konfigurationsmanagement
- Speicherung der Daten in einem einheitlichen und von Menschen und Maschinen lesbarem Format
- Versionierung der Konfigurationen
- Hohe Verarbeitungsgeschwindigkeit
- Business Process Management
- Hohe Flexibilität statt starrer Automatisierungslogik.
- Definieren eines Business Process per Konfiguration statt Programmierung
- Abhängigkeitsverwaltung von Prozessen: Auslösen eines Prozesses beim Erstellen oder einer Änderung einer Konfiguration im Konfigurationsmanagment
- Verwaltung einer hohen Anzahl von Prozessen
- Skalierbarkeit und Erweiterbarkeit:
- Plattformunabhängigkeit
- Verwaltung möglichst vieler Zielsysteme
- Zusammenarbeit mit externer Software durch standardisierte REST-Schnittstellen
- Webbasierte Benutzeroberfläche:
- Erstellen, Bearbeiten und Löschen von Konfigurationen
- Nutzung der standardisierten REST-Schnittstellen
- Einfache Bedienung
Nichtfunktionale Anforderungen
- Wiederverwendbarkeit von Code
- Lizenz: Freie Software (Apache License)
Keine Anforderungen sind:
- Automatisierungsskripte selbst schreiben
- Entwurf eines Models für das Konfigurationsmanagement (Es geht um die Entwicklung eines Frameworks)
Zusammenfassung
Neu sind im Gegensatz zu anderen Lösungen:
- Vereinigung von:
- Konfigurationsmanagement
- Business Process Management
- Nicht-interaktive Durchführung von Aufgaben
- Standardisierte Schnittstellen
- Webbasierte Benutzeroberfläche
- Mehrere Zielsysteme
Architektur
REST Schnittstellen
- Management Node
- Worker Nodes
- Weboberfläche und Worker Nodes bedienen die REST-Schnittstelle des Management Nodes
- Management Node bedient die REST-Schnittstelle der Worker Nodes
Präsentationsschicht
- REST Schnittstelle
Geschäftslogikschicht
- Konfigurationsmanagement
- Business Process Management
- Daten sind Objekte
Persistenzschicht
- Mini Content Repository
Konfigurationsmanagement
- Konfigurationsklassen: Modelle für die Konfigurationen
- Hierarchischer Aufbau
- Konfigurationen können:
- mehrere Kinder haben
- mehrere Eltern haben
Business Process Management
- Bei einer Änderung einer Konfiguration wird ein Auftrag eines Auftragstyps instantiiert
- Auftragstypen
- Abhängigkeiten zu Aufträgen (Aufträge hängen von anderen Aufträgen ab)
- Enthält auf dem Zielsystem auszuführende Klasse (Ausführungseinheit)
- Auftrag
- ”Erbt” von seinem Auftragstyp
- Enthält die neue / geänderte Konfiguration
- Warteschlangen (Neu, In Bearbeitung, Erfolgreich abgeschlossen, Erfolglos abgeschlossen)
Implementierung
- Nutzung von Open Source Technologien:
- Python
- Spring Framework für Python
- Twisted (Netzwerk-Framework)
- Seminode (Web-Framework)
- Template Toolkit (Templating Engine)
- Dojo Toolkit (JavaScript Framework)
- Persistenz Konfigurationsmanagement
- Als Data Access Object realisiert
- Übernimmt Ansätze von Java Content Repositories
- Jede Konfiguration erhält eine UUID
- Versionierte Speicherung von Konfigurationen
- Ausschließlich dateisystem-basiert implementiert
- Trotzdem schnelle Suche von Konfigurationen möglich:
- Per UUID
- Per Konfigurationsklasse
- Per Eltern- oder Kindknoten
- Business Process Management
- Aufträge sind in Warteschlangen eingeordnet
- Ein Scheduler stößt mache Events an
- Prüfung der Abhängigkeiten von Aufträgen: Bevor ein Auftrag bearbeitet werden kann muss zunächst ein oder mehrere andere Aufträge abgeschlossen worden sein!
- Jeder Event wird in einem eigenen Thread gestartet.
- Webbasierte Benutzeroberfläche
- Nutzt Widgets (Dojo Toolkit)
- Look & Feel von Desktop-Applikationen
- Modular aufgebaut
- Leicht erweiterbar
- Oberflächen können konfiguriert werden
Fazit
- Weitere Entwicklungsarbeit ist nötig, um die Software produktiv einsetzen zu können:
- Mandantenfähigkeit
- Vollständige Implementierung der Java Content Repository API
- Sicherheitsaspekte
- Loadbalancing
- Das bisher Erreichte lässt sich jedoch durchaus sehen:
- Schlank
- Performant
- Skalierbar
- Erweiterbar