Automatisierung von Rechenzentrumsaufgaben

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

Leave a Reply