Tech Updates

Published on Jan 27, 2012

Cloud Computing vs. Datacenter Automation

In diesem Artikel möchte ich analysieren wie Cloud Computing dazu beitragen kann Rechenzentren effizienter zu betreiben. Ich möchte speziell erläutern welche Aspekte der IT-Infrastruktur sich sinnvoll mittels öffentlichem, privatem und Hybrid Cloud Computing automatisieren lassen, gleichzeitig aber auch die Limitationen der „Wolke“ beleuchten.
von Matthias Rechenburg

Bestandsanalyse – was sind Rechenzentren?

Um es kurz zu sagen: „Rechenzentren sind komplexe Monster“.
Um Rechenzentren effizient zu betreiben ist es notwendig genau zu analysieren was ein „Rechenzentrum“ alles beinhaltet. Hierzu einigen einfache Fakten, die wir aus langjähriger Erfahrung im Aufbau, der Administration und Automatisierung von Rechenzentren, „gelernt“ haben.

Rechenzentren sind verschieden!

Jeder Betreiber von Rechenzentren hat verschiedenste Anforderungen, Bedürfnisse und auch (Technologie-) Vorlieben. Ein jedes Rechenzentrum wird dementsprechend geplant, aufgebaut und betrieben. Die Schlussfolgerung die sich daraus ergibt ist das alle Rechenzentren unterschiedlich sind und das es keine zwei genau gleichen Rechenzentren auf dieser Welt gibt.

Alle Rechenzentren implementieren dieselben Subsysteme

Trotz der unterschiedlichen Anforderungen der Rechenzentrumsbetreiber findet man in jedem Rechenzentrum dieselben „Subsystem“ wie z.B. Server-Deployment, Netzwerk-Management, IP-Adressen DNS Verwaltung, System- und Service-Überwachung, Backup/Restore, Virtual Machine- und Storage-Management usw.
Nahezu jedes Rechenzentrum auf dieser Welt verfügt über diese Subsysteme.

Die Technologien, die in den Subsysteme eingesetzt werden, sind verschieden!

Alle Rechenzentren benutzen dieselben Subsystem, jedoch implementieren sie diese Subsysteme mit einer Vielzahl an unterschiedlichen Technologien.
Hier ein Beispiel für das „Virtualization“ Subsystem:

  • der eine schwört auf Xen
  • der nächste bevorzugt KVM
  • wieder ein anderer setzt nur VMware ein
  • für den nächsten gibt es nur OpenVZ

Dasselbe Beispiel für das „System- und Service Überwachung“ Subsystem:

  • der erste mag Nagios
  • der zweite bevorzugt Icinga
  • der dritte möchte lieber Zabbix
  • und der vierte setzt Collectd ein

Die Auswahl der Technologien für ein jedes Subsystem in einem Rechenzentrum ist wiederum abhängig von den Anforderungen, Bedürfnissen und Vorlieben des Systemadministrators, der IT Infrastruktur-Designer und dem Firmen Grundsatz.

Erhöhung der Komplexität ist umgekehrt proportional zu Hochverfügbarkeit

Ein recht einfaches Prinzip. Je komplexer ein System ist, je schwieriger ist es, es hochverfügbar zu betreiben. „KIS“ (Keep It Simple) hilft oftmals den Grad der Robustheit drastisch zu erhöhen.

Erhöhung der Komplexität ist umgekehrt proportional zu Möglichkeit der Automatisierung

Angelehnt an die vorherige Erkenntnis hier auch wieder eine simple, umgekehrt proportionale Abhängigkeit bezüglich dem Grad der Möglichen Automatisierung und der Komplexität eines Systems. Ist jeder Server in einem Rechenzentrum eine „einzigartige Spezialkonstruktion“ ist es schwierig dieses System in die gesamt Automatisierungs- Strategie der IT Infrastruktur einzupassen.

Virtuelle Maschinen laufen auf physikalischen Server Systemen

Virtuelle Maschinen erlauben Services „Hardware unabhängig“ zu betreiben. Die Abstraktion des eigentlichen Services in einer Virtuellen Maschine bringt den gewaltigen Vorteil mit sich, das der eigentliche Dienst nun eine (virtuelle Maschine) „Datei“ ist und das man diese „Datei“ dann recht einfach von einer Hardware auf die andere migrieren kann.
Die „Hardware-Unabhängigkeit“ ist aber auch nur zum Teil richtig da einen Virtuelle Maschine immer ein physikalisches Host System benötigt auf dem sie betrieben wird.
Die einfache Schlussfolgerung daraus ist das Virtuelle Maschinen physikalische Systeme benötigen, auf denen sie laufen.

Physikalische System gehen „kaputt“

Ähnlich wie bei „Murphy’s Law“, wo wenn es schon schlimm ist noch schlimmer kommt, ist die Hauptabhängigkeit der Services die in einem Rechenzentrum betrieben werden leider nicht wirklich robust. Physikalische System gehen, ohne Ausnahme, irgendwann kaputt. Kaputt heißt z.B. Festplatten oder Lüfter fallen aus, Speicher korrumpiert, Netzwerkkarten fallen aus usw. Dies beeinträchtigt natürlich ungewollt den Betrieb der Dienste.
Gerade der Aspekt das physikalische System tendieren kaputt zu gehen ist sehr wichtig!
Eine große Bestrebung für Betreiber von Rechenzentren sollte also sein zu versuchen den „schwachen“ Teil der betriebenen Dienste, nämlich die physikalische Hardware, unabhängig zu machen von dem eigentlichen Dienst, der nur aus „Software“ besteht.
Die Software selber, die den Dienst ausmacht, kann eigentlich nicht wirklich kaputt gehen, denn die Bits und Bytes der Software verändern sich normalerweise nicht eigenständig (unter der Voraussetzung das sie auf einem sicheren, hochverfügbaren Storage-System gespeichert wird).
Was ist wichtig für den End-Benutzer?
Aus der Sicht eines End-Benutzers von Services eines Rechenzentrums sieht das ganze viel einfacher aus. Für den Benutzer ist es nur wichtig das der gewünschte Service „verfügbar“ ist. Das heißt im Detail das der Hostname (oder die IP-Adresse) des Serversystems, das den Service auf einem der IP-Ports anbietet, läuft und die Server-Applikation selber auch läuft und erreichbar ist. Einfachstes Beispiel dafür ist eine simple Webseite die auf einem Server mit einem speziellen Hostnamen unter TCP/IP Port 80 zu Verfügung steht.

Wie kann uns nun unter den oben angesprochenen Aspekten und Fakten Cloud Computing helfen unsere Rechenzentren effizienter zu betreiben?

Alles in die Cloud migrieren – das wird schon helfen …

Manch ein Cloud Anbieter verspricht Kunden gern:
“Einfach alles in die Cloud migrieren, das löst all Ihre Probleme.“
Dies ist auch zum Teil richtig da die vereinfachte und voll automatisierte Bereitstellung von vorkonfigurierten virtuellen Maschinen in bestimmten Bereichen wie z.B. in der Entwicklungs- und Qualtitätsicherungs-Abteilung, ohne großen Aufwand eingeführt werden können und dann zur Steigerung der Effizienz beitragen. Ein weiteres Beispiel sind Firmen deren Produktions-Systeme extrem schwankenden „Workload-Peaks“ ausgesetzt sind wie z.B. E-Commerce- und Shop-Systeme im Internet zur Weihnachtszeit.
Gerade die Möglichkeit des Ausbalancieren solcher Services mittels zusätzlicher Server-Ressourcen von öffentliche Cloud Providern während „Workload-Peaks“ bietet hohe Flexibilität und erlaubt es auch einen „Massenansturm“ von Kunden gut zu überstehen.
Je nach Geschäftsmodell und Fokus einer Firma kann Cloud Computing so in 50 – 60% der Abteilungen sinnvoll betrieben werden.
Nicht desto trotz gibt es immer ein Teil von Systemen die man, aus verschiedensten Gründen (z.B. rechtliche), nicht unbedingt in der Cloud (öffentlich oder auch private) betreiben möchte.

Und wer verwaltet und administriert die Cloud?

Ein weiterer wichtiger Aspekt ist das die „Wolke“ ein meist relativ abgeschlossener Teil der gesamten IT-Infrastruktur ist. Cloud Computing kann also nur zu einem begrenzten Teil dazu beitragen die komplette Verwaltung des Rechenzentrums zu automatisieren.
Des weiteren bedarf die Cloud, als ein Teil des Rechenzentrums, natürlich auch Verwaltungs- und Administration-Aufwand d.h. faktisch befinden uns immer noch in genau demselben Bereich wie am Anfang, nämlich die Bereitstellung und der Administration von physikalischen Server Systemen, … die irgendwann kaputt gehen.
Fazit: Cloud Computing vs. Datacenter Automation
Eine Cloud, die in einem Rechenzentrum betrieben wird, ist wiederum nur ein weiterer Dienst der unter denselben Aspekten der jeweiligen Subsystem behandelt und betrieben wird z.B. Die Cloud Dienste müssen überwacht werden, Virtuelle Maschinen und speziell deren physikalische Hosts System müssen bereitgestellt und administriert werden, die Cloud Systeme müssen ins Backup/Restore Subsystem eingebracht werden, IP-Adressen sowie DNS Hostnamen müssen konfiguriert werden usw.
Um genau jenen Bereich in einem Rechenzentrum zu automatisieren benötigt man eine
„Middleware“ zur kompletten Automatisierung von Rechenzentren
Für die Automatisierung von kompletten Rechenzentren ist eine übergreifende Abstraktionsschicht notwendig, die die automatisch Verwaltung aller beteiligten Subsystem eines Rechenzentrums erlaubt und deren Technologie-Schicht (unterhalb der Subsysteme) extrem modular gestaltet ist um jeglichen Technologie- Anforderungen und Bedürfnissen gerecht zu werden.
Des weiteren muss diese Abstraktionsschicht („Middleware“) die Rechenzentrums-Logik implementieren, die z.B. dafür notwendig ist um einen neuen Dienst bereitzustellen.
Diese Logik beschreibt den Lebens-Zyklus eines Dienstes in einem Rechenzentrum von der Initialen Konfiguration und Bereitstellung bis zur De-provisionierung. Der abgebildete Lebens-Zyklus hat zudem die Aufgabe den einzelnen Subsystem Informationen über den Dienst und dessen Status mitzuteilen, damit diese automatisiert ihre Arbeit verrichten können.
Es ist dann weiterhin erforderlich, das die eigentliche Aufgabe, z.B. das starten einer Virtuellen Maschine, wiederum in den verschiedenen möglichen Technologien, mittels unterschiedlicher Module für jede Technology (Plugins), abstrahiert wird.
Um den größtmöglichen Grad der Automatisierung von Rechenzentren zu erreichen ist also ein Modell nötig, das möglichst viele Informationen über einen zu betreibenden Dienst in einem „Master Objekt“ konzentriert um so möglichst viele der verschieden Aufgaben und Aktionen selbständig zu übernehmen.

Ein gutes Beispiel für ein solches, sehr erfolgreiches Modell ist der Fernseher.

Ein Fernseher ist ein hoch komplexes technisches System das dem End-Benutzer einen Dienst zu Verfügung stellt und „fernseh- gucken“ ermöglicht. Diese komplexe System wird für den Benutzer mittels einer einfachen Steuerung abstrahiert, der Fernbedienung.
Das Fernsehgerät selbst enthält alle Informationen wie die einzelnen Subsysteme anzusprechen sind z.B. was zu tun ist wenn der Benutzer den Kanal wechseln möchte.

Vielmehr als nur Cloud Computing …

Eine, wie hier beschriebene „Middleware“, die den oben angesprochenen Fakten und deren Schlussfolgerungen gerecht wird, ist die Open-Source Datacenter Management und Cloud Computing Plattform openQRM. openQRM wird zur übergreifenden Automatisierung von IT-Infrastrukturen eingesetzt und bietet zusätzlich auch Funktionalitäten zum Öffentlichem, Privatem,- und auch dem Hybrid Cloud Computing.
openQRM abstrahiert Dienste in einem „Appliance“ Master-Objekt das alle Informationen beinhaltet, wie ein Service zu verwalten ist z.B. Typ der Virtuellen Maschine oder welches Physikalische System, Hardware-Anforderungen, Typ und Version des Betriebssystems, Details über zu startenden Applikationen und auch Service-Level-Agreements (SLA) wie z.B. der Dienst benötigt mindestens 2 CPUs, 4GB Speicher und muss Hochverfügbar sein.
Unterhalb der Komponenten des „Appliance“ Master-Objekts sind die verschiedenen Subsystem angesiedelt, die die eigentlichen Aktionen dann mittels unterschiedlicher Plugins in den verschiedenen Technologien umsetzen und ausführen.
Als eines der wenigen Lösungen, die auf der Idee von Cloud Computing basieren, bietet openQRM die Möglichkeit die komplette IT-Infrastruktur zu automatisieren und nicht nur einen Teil davon, der mit der automatisierten Bereitstellung von Virtuellen Maschinen (Cloud Computing) abgedeckt werden kann. Mit openQRM lässt sich die gesamten Aufgaben in Rechenzentren effizient automatisieren ohne sich auf bestimmte Technologien festlegen zu müssen. Da openQRM auch die automatisierte Bereitstellung von physikalische Systemen voll unterstützt kann man es sogar benutzen um, innerhalb der openQRM Cloud, „Wolken“ andere Cloud Anbieter voll automatisch seinen Benutzern zur Verfügung zu stellen. Um den „Cloud Vendor Locking“ auszuschließen stellt openQRM zudem Schnittstellen zu den bekannten Öffentlichen Cloud Anbietern wie z.B. Amazon EC2, Eucalyptus und der Ubuntu Enterprise Cloud zur Verfügung.


Über Matthias Rechenburg

Matthias Rechenburg ist Projektmanager des openQRM Projekts und Geschäftsführer der openQRM Enterprise GmbH. Stellen Sie ihm eine beliebige Frage zu den tiefsten openQRM-Interna – Matthias wird sich freuen Ihnen die technisch fundierteste Antwort geben zu können. Seit vielen Jahren ist er in eine Vielzahl Open-Source-Projekte involviert, die sich mit hochverfügbaren Cluster-Lösungen, Serverkonsolidierung, Netzwerk- und Storage-Management beschäftigen. Sein Hauptinteresse liegt in den verschiedenen Virtualisierungs-Technologien, deren Funktionalität und deren Integration in eine generische Virtualisationsschicht für moderne Datacenter. Matthias lebt mit seiner Frau in Bonn, liebt es selbst zu entwickeln, reist gern und genießt es sich an Open-Source-Veranstaltungen und Kongressen zu beteiligen.


Bildquelle: http://www.hcrealty.com