Automatisierung im TraSo Rechenzentrum

Die Installation und der Betrieb unserer Server werden zu einem großen Teil durch das „Ansible“ Automatisierungssystem gesteuert. Dieser Blog Beitrag soll einen kurzen Überblick geben, wie wir mit diesem Werkzeug unsere IT-Systeme standardisiert einrichten, anpassen und erweitern. Damit soll eine verständliche Einführung gegeben werden und  kein technischer Höhenflug.

Worum geht es hier?

Wir verwalten im Rechenzentrum eine nicht riesige, aber auch nicht ganz kleine Anzahl von Servern und Geräten. Hier ein Versuch, in zwei kleinen Gedankenspielen die Größenordnung zu verdeutlichen:Rechenzentrum

Nehmen wir 500 ganz einfache PCs: 5 Minuten Wartung pro PC entsprechen keinem großen Aufwand. In Summe wären das jedoch eine komplette Woche Arbeit.

Oder – wie lange kann man mit einem frisch installierten PC arbeiten? Ohne Updates und regelmäßiger Installation neuer Software und Treibern sind das eventuell 5-10 Jahre. Benutzer, die Ihre Rechner auf aktuellem Stand halten und wechselnd nutzen, haben aber oft bereits nach 1-5 Jahren das Vergnügen, ihren PC komplett neu installieren zu müssen.

Wenn wir also von 5 Jahren ausgehen, die ein PC nutzbar ist kämen wir bei 500 PCs auf einen Komplettausfall alle 4 Tage, 1-2 pro Woche. Damit ließe sich kein Rechenzentrum gewinnbringend betreiben. Es muss also Einiges anders laufen. Wie kann das aussehen?

Das Problem

Bei TraSo werden viele Dienste bereitgestellt, zum Beispiel das xRes Interface „xAdmin“.

Beispiel xAdmin im xRes
Beispiel des xAdmin in unserem System xRes

Wenn von außerhalb unserer Netzwerke auf die xAdmin Webseite zugegriffen wird, wird dieser Zugriff durch Firewalls, Switche und unsere Proxies weitergeleitet und kontrolliert. Mehrere xAdmin – Webserver stehen bereit, um Anfragen entgegen zu nehmen und mehrere Datenbanken liefern Daten an den xAdmin Webserver aus.

Das sind mehr als 30 Systeme, welche diesen Zugriff ermöglichen. Des Weiteren berechnen wir aus Importen, welche über weitere 30 Server abgewickelt werden, im Voraus Reiseangebote. Diese werden wiederum auf über 60 Cache Systemen zwischengespeichert.

Das ließe sich noch ein ganzes Stück fortführen und auf unsere anderen TraSo Produkte und die grundlegenden Infrastruktur erweitern.

xAdmin
was hinter unseren leistungsstarken Sytemen steckt

Der direkte Vergleich mit dem Betrieb von 500 PCs hinkt etwas – im direkten Vergleich mit PCs ist der Betrieb von 500 Servern doch um Einiges einfacher. Wir verwenden schlanke, abgespeckte Serversoftware ohne unnötige Anhängigkeiten, aber auch ohne den Komfort von Desktop-Umgebungen. In unserem Team kommen viele Jahre an Erfahrung im Betrieb eines Rechenzentrums zusammen. Letztendlich trägt auch die hohe Qualität unserer Hardware (ausgelegt für den Dauerbetrieb) und die doppelte Auslegung kritischer Komponenten und Systeme zu einem unterbrechungsfreien Betrieb bei.

Andererseits haben wir mit dem Betrieb großer Systeme auch eine Menge Arbeitsthemen – das ist die Verwaltung der Anwendungen und Dienste selber sowie des ganzen Drumherum wie Datensicherungen, Monitoring, Ressourcenverwaltung, Updates, Dokumentation und so weiter.

Wir können davon ausgehen, dass solche großen Systeme mit allgemein vorstellbarer Technik nur unter größten Aufwänden zu pflegen sind. Um zu erfahren wie wir dieses Thema lösen, folgt mir bitte ein Stück weiter hinunter in den Kaninchenbau:

Möglichkeiten zur Verbesserung

In erster Linie haben wir das Problem vereinfacht, in dem wir ähnliche Systeme zu Gruppen zusammengefasst haben. Das sind Gruppen, deren Mitglieder zum Beispiel in einem gemeinsamen Netzwerk sind, die gleiche Datenbank-Software verwenden oder zum selben Produkt gehören. Die Systeme in einer Gruppe können zu einem gewissen Teil gleich behandelt werden.

Für diese Gruppen könnte man also erst einmal Checklisten für Aufgabenpakete schreiben, die dann manuell abgearbeitet werden. Für oft zu wiederholende Aufgaben kann man auch kleine Programme oder Skripte auf Servern ausführen. Das geht zum Einen schneller und zum Anderen können menschliche Fehler durch Festlegung von Prozessen und Programmierung verringert werden, womit eine Qualitätssteigerung einher geht. Richtig Fahrt nimmt das Ganze allerdings auf, wenn ein richtiges Automatisierungssystem verwendet wird:

Dies beinhaltet in der Regel eine Datenbank, in welcher alle Systeme (Server, Arbeitsplatz-Rechner oder Geräte) mit einigen Daten und Verknüpfungen registriert sind. Des Weiteren besteht ein Teil der Automatisierung im Fernzugriff auf die Systeme des Rechenzentrums, was uns die Ausführung von einzelnen programmierten Aktionen erlaubt. Letztendlich brauchen wir auch eine Steuerung, die Aktionen anhand der Inventardaten kontrolliert. Etwas detaillierter sieht unsere Umsetzung folgendermaßen aus:

Automatisierung bei der TraSo 

Wir verwenden Ansible. Das ist ein Software Umgebung für Automatisierungsaufgaben.

Wir haben dafür ein Inventar aufgebaut, in welchem alle Systeme zu verschiedenen Gruppen von zum Beispiel Netzwerken, Standorten, Servertypen oder Produkten zugeordnet sind.

Auf der anderen Seite haben wir diesen Gruppen Parameter (Variablen, Daten) für die Verwaltung und Aktionen zugeordnet. Ist ein Parameter in mehreren Gruppen gesetzt, werden diese einer festen Hierarchie folgend überschrieben. Ein Beispiel für weniger bedeutende Gruppen sind zum Beispiel verschiedene Betriebssysteme. Parameter, die hier gesetzt sind werden oft von gleichnamigen Parametern aus Produktgruppen oder Standortgruppen überschrieben, welche wichtiger sind.

Ansible im Rechenzentrum
Ansible im Rechenzentrum

In Rollen haben wir einfache oder auch etwas komplexere Aktionen definiert, welche auf unseren Systemen ausgeführt werden sollen. Diese programmierten Aktionen können über viele Parameter gesteuert werden, die erst einmal mit Standardwerten angelegt sind.

Ansible Playbooks rufen Daten (Gruppen sowie enthaltene Systeme und Parameter) aus dem Inventar ab und starten mit diesen Parametern die Ausführung von Rollen-Aktionen.

Unser Ansible stellt ein sehr flexibles System dar, mit dem wir automatisch und parallelisiert Aktionen wie Installationen, Updates oder Konfigurationen von Anwendungen durchführen können. Wir können damit einzelne Systeme, Gruppen von Systemen oder komplexe Zusammenstellungen bearbeiten.

Darüberhinaus besteht die ganze Konfiguration und Programmierung aus Textdateien. Diese organisieren wir in der GIT Versionsverwaltung. Das ermöglicht uns zum Beispiel das Zurückrollen von Änderungen und verbessert die Entwicklung im Team. Des Weiteren haben wir damit eine genaue Dokumentation, was zu welchem Zeitpunkt installiert oder angepasst wurde.

Vor- und Nachteile, Fazit

Man kann mit der Automatisierung mit Ansible klein anfangen, für die Entwicklung und Erweiterung eines größeren Systems fallen aber erhebliche Aufwände an. Daher automatisieren wir nur Aktionen, welche entweder sehr oft durchgeführt werden müssen oder so komplex und aufwändig sind, dass für jede Ausführung sehr viel Einarbeitung erforderlich sein würde.

Des Weiteren besteht die Gefahr, dass Fehler in der Programmierung von Ansible zu massiven Störungen führen können. Um das zu verhindern, führen wir sehr ausführliche Tests durch und führen größere Aktionen staffelweise aus, beginnend mit geschäftlich unkritischen Systemen.

Wir automatisieren nur solche Aktionen, welche mit vertretbarem Risiko und erheblichen Gewinnen in der Effizienz unserer Systemverwaltung durchzuführen sind. Diese Aktionen werden dann aber auch sehr schnell und genau durchgeführt, was uns Routineaufgaben erheblich erleichtert. Da die Systeme gruppenweise identisch aufgebaut sind, können wir unsere Dienste und Systeme in sehr ordentlicher Qualität bereitstellen.

Mit diesem System zu arbeiten ist anspruchsvoll, macht aber wirklich jede Menge Spaß.

Schreibe einen Kommentar