ZIDline
Betrieb der TISS-Infrastruktur
Rainer Kamenik, Michael Roth, Johann Divisch, Andreas Ehringfeld
Seit Oktober 2010 steht die TISS-Infrastruktur auf dem Prüfstand des Live-Betriebs. Hohe Last, Datensicherheit, agile Weiterentwicklungsprozesse und Wartbarkeit bei gleichzeitigen Hochverfügbarkeitsanforderungen stellen nur einige der Stresspunkte dar, denen durch Einsatz entsprechender Technologien in einer stimmigen Architektur entgegnet werden muss. Dieser Artikel beschreibt einige der in TISS eingebetteten Lösungsansätze. Zusätzlich werden lessons learned aus den bisherigen Betriebserfahrungen gezogen.

Der Betrieb eines IT-Systems, welches bereits am ersten Tag von 18.000 Besucherinnen und Besuchern genutzt wurde und seitdem allen Angehörigen der TU Wien rund um die Uhr zur Verfügung steht, stellt eine besondere Herausforderung dar.

Betrachtet man die Auslastung von TISS über den Tag verteilt, so sieht man, dass durchschnittlich zwischen 10:00 und 12:00 Uhr die meisten Seitenaufrufe durchgeführt werden, siehe Abbildung 1. Hierbei kommt es im Monatsdurchschnitt zu 125.000 Seitenaufrufen in der Stunde. Es treten aber auch Spitzen von über 12.000 Seitenaufrufen in der Minute auf, die von der TISS-Infrastruktur verarbeitet werden müssen. Die Anzahl der Seitenaufrufe erreicht zu Semesterbeginn Spitzenwerte (Oktober 2010: 157.977) und sinkt während des Semesters (November 2010: 125.369; Dezember 2010: 111.045; Jänner 2011: 137.260). An Wochentagen werden zwischen 30 und 40 GB pro Tag an Daten an die Nutzerinnen und Nutzer von TISS ausgeliefert.

Daraus ergeben sich hohe Anforderungen an Performance und Verfügbarkeit. Gleichzeitig unterliegt TISS einem sehr dynamischen und agilen Weiterentwicklungsprozess, in dem flexibel neue Anforderungen umzusetzen sind. Hierbei darf es selbst bei großen infrastrukturellen Veränderungen keine Beeinträchtigungen des Services geben.

Hochverfügbarkeit durch Redundanz

Die Abbildung 2 stellt das Grundkonzept der fehlertoleranten TISS-Infrastruktur dar.

Ein Apache Webserver Cluster dient als SSL Offloader, womit rechenintensive SSL-Verschlüsselungen im Backend wegfallen. Um Anfragen auf statischen Kontent möglichst schnell beantworten zu können und um das Backend weiter zu entlasten, wird Caching eingesetzt. Anfragen, die der Webserver nicht beantworten kann, wie beispielsweise nach dynamischem Kontent, werden an das Backend System weitergeleitet. Ein Load Balancer Cluster entscheidet, welcher Application Server die Anfrage bedienen kann. Da TISS aus unterschiedlichen Systemen besteht, kann der Load Balancer als fachlicher Dispatcher angesehen werden. Zusätzlich achtet er darauf, dass die Last auf die Infrastruktur gleichmäßig verteilt wird und somit Ressourcen optimal genützt werden. Eine ganz entscheidende Funktionalität des Load Balancers ist allerdings die Berücksichtigung von so genannten Health Checks. Der Load Balancer überprüft zyklisch die Verfügbarkeit und Funktion der einzelnen Application Server. Ist ein Application Server nicht mehr erreichbar oder liefert eine negative Health Statusmeldung, so werden Anfragen auf einen anderen Application Server umgeleitet. Nachdem jeder Application Server auch alle Subsysteme prüft, von denen seine eigene Funktion abhängt, widerspiegelt die Health Statusmeldung die ordnungsgemäße Verarbeitbarkeit von Anfragen. Wenn beispielsweise ein Application Server die Verbindung zum Datenbankserver verliert, so werden alle weiteren Anfragen bis zur Behebung des Fehlzustandes von einem anderen Application Server automatisiert übernommen. Nutzerinnen und Nutzer von TISS bemerken davon in der Regel nichts.

Die dargestellte Architektur zeichnet sich auch durch einen hohen Grad an vertikaler Skalierbarkeit aus. Zusätzliche Application Server können einfach im Betrieb integriert werden, um steigenden Anforderungen bezüglich Performance zu entsprechen.

Der Semesterbeginn ist nicht nur geprägt von gratis Zeitungsabo-Verteilungen und ewig langen Schlangen bei Ticket-Vorverkaufsschaltern sondern auch von der extremen Belastung der TISS-Infrastruktur. In Abbildung 3 werden die Seitenaufrufe im Bereich Lehre zu Semesterbeginn dargestellt. Im Unterschied zu Abbildung 1 sind Seitenaufrufe für andere Funktionalitäten von TISS – wie etwa der Organisationsbereich oder TUphone – nicht berücksichtigt.

Am 1. März kam es zu Überlastungen von TISS in der Zeit von 00:00 bis 01:00 Uhr nachts, zwischen 10:00 und 13:00 Uhr und im Bereich um 19:00 Uhr. TISS konnte Anfragen nicht schnell genug abarbeiten, weshalb es zu Antwortverzögerungen oder sogar Fehlermeldungen durch Timeout kam. Um den produktiven Betrieb aufrechtzuhalten, wurde eine Reihe von Sofortmaßnahmen gesetzt. Entsprechend dem beschriebenen Konzept der Skalierbarkeit wurde ein zusätzlicher Application Server in die Infrastruktur integriert. Des Weiteren wurden die Connection Limits des Load Balancers ins Backend pro Application Server verdoppelt. Der Load Balancer dient zum Schutz vor Überlastung als eine bewusst eingesetzte Drossel. Nachdem die Application Server aber noch genug freie Kapazitäten hatten, konnte dieser Engpass erweitert werden. Zusätzlich mussten weitere Limits bei den Application Servern und bei der Datenbank erhöht werden. Am darauffolgenden Tag kam es trotz einer noch höheren Belastungsspitze zu keinerlei Problemen.

Aktuell wird das Systemverhalten von TISS bei derartigen Extremsituationen analysiert. In einer Teststellung wird das Lastverhalten nachgestellt, Bottlenecks werden identifiziert und ein Maßnahmenkatalog erstellt, um bei der nächsten erwarteten Lastspitze am 1. Oktober noch besser vorbereitet zu sein.

Seit Oktober 2010 kam es effektiv erst zu einer längeren Service-Unterbrechung, am 13. 12. 2010. Grund hierfür war ein defektes RAM-Modul im SUN Datenbankserver. Die Gültigkeit von Murphy´s Law unterstreichend, trat dieser Hardware-Fehler gewissermaßen an der schwächsten Stelle der TISS-Infrastruktur auf. Aus Lizenzgründen wird die Oracle Datenbank als Warm Standby Failover System betrieben, wobei manuell die SAN-Anbindung zwischen dem produktiven und dem Standby Server im Fehlerfall umkonfiguriert werden muss. Hier bleibt abzuwarten, wie sich die Lizenzpolitik und der Support von Oracle weiter entwickeln. Aus betrieblicher Sicht ist jedenfalls eine Datenbank-Migration auf ein Open Source Produkt möglich. Die SUN Hardware wird derzeit durch Systeme eines anderen Herstellers abgelöst.

Service Continuity durch Virtualisierung und SAN

Während der Ausfall einzelner Services oder virtueller Systeme keinen Einfluss auf die Benutzerinnen und Benutzer hat, würde der Ausfall eines kompletten Standortes zum Beispiel aufgrund eines Feuers, Wassereinbruchs oder anderer Umwelt- oder von Menschen provozierten Katastrophen die Service-Erfüllung sehr wohl beeinträchtigen. In solchen Szenarien könnte auch der Verlust von Daten nicht ausgeschlossen werden.

Für einen desaster-toleranten Betrieb von TISS ist es daher notwendig, die IT-Infrastrukturkomponenten auf zwei Standorte zu verteilen. Das primäre Rechenzentrum (Produktionsrechenzentrum, PRZ) befindet sich im Freihaus, das Ausweichrechenzentrum (ARZ) in der Gußhausstraße. Die beiden Standorte werden von unterschiedlichen Umspannwerken mit Strom versorgt und sind 250 m Luftlinie voneinander entfernt. Damit soll sichergestellt werden, dass begrenzte Katastrophenszenarien nicht beide Standorte gleichzeitig beeinträchtigen können.

Nicht nur die technischen Komponenten müssen auf zwei Standorte verteilt werden sondern auch die Daten. Um das sicherzustellen, wird eine zentrale Storage-Lösung betrieben, welche die Daten zwischen beiden Standorten repliziert. Auf dem zentralen Storage liegen nicht nur Nutzdaten, sondern auch – in gewisser Weise – die Systemdaten der virtuellen Systeme. Im Falle eines Desasters im Freihaus, bei dem alle Services abrupt zerstört werden, können somit die virtuellen Systeme am Standort Gußhausstraße gestartet werden. Dieser Vorgang ist automatisiert, sodass die Wiederanlaufzeit im Bereich einer Minute liegt.

Server-Virtualisierung

Ein entscheidendes Merkmal der TISS-Infrastruktur ist der Einsatz von Virtualisierung, wodurch Dienste de facto unabhängig von der darunter liegenden Hardware betrieben werden können.

Derzeit werden auf zwei physischen Servern 29 virtuelle Systeme – in der Mehrzahl Application Server – betrieben. Als Virtualisierungstechnologie wird der Hypervisor Xen eingesetzt. Performance-Tests haben ergeben, dass das Scheduling auf Hypervisor-Ebene effizienter als auf Linux OS Basis ist. Das heißt, zwei virtuelle Maschinen auf der gleichen physischen Hardware mit geteilten Ressourcen können mehr Anfragen behandeln als eine Maschine mit sämtlichen Ressourcen. 

Virtualisierung verringert ganz entscheidend die Komplexität. Hat man nur wenige physische Server zur Verfügung, so entstehen bald so genannte "Multi-Funktionsboxen". Viele Services laufen auf dem gleichen Server, der Absturz eines Dienstes kann leicht andere beeinflussen, geteilte Libraries können bei Updates Seiteneffekte bedingen und vieles mehr. Die System-Administration von derartigen Multi-Funktionsboxen wird schnell komplex, wodurch ein stabiler Betrieb sehr erschwert wird.

Durch den Hypervisor Xen kann für jedes Service leicht eine eigene virtuelle Betriebssysteminstanz aufgebaut werden. Damit schafft man nicht nur eine Komplexitätsreduktion sondern auch eine Isolation jedes Dienstes. An zentraler Stelle kann man den einzelnen virtuellen Instanzen Ressourcen wie etwa RAM oder CPU Cores zuweisen, womit die vorhandenen Ressourcen effizient und fair verteilt werden. Zusätzlich bedeutet dies, dass man auch nur auf zentraler Stelle Ressourcen-Erweiterungen durchführen muss. Wird etwa ein weiteres – entsprechend dem Preis-Leistungs-Verhältnis derzeit optimales – 8 GB RAM-Modul in den physischen Server eingebaut, so kann man im Xen-Management 2 GB dem einen Application Server und die restlichen 6 GB einem anderen Application Server zuweisen. Sollte man die Verteilung wieder ändern wollen, so kann man dies einfach in der Management-Konsole von Xen durchführen. Man muss keine Server aus dem Rack ziehen und Module umstecken. Neben RAM betrifft das aber auch CPU-Ressourcen oder Storage.

Storage-Virtualisierung

Durch ein Storage Area Network (SAN) wird in der TISS-Infrastruktur auch Storage virtualisiert.

Physische Festplatten können in einem zentralen Storage zu einem Raid verbunden und als Logical Disks zusammengefasst werden. Diverse Pools dienen als weitere Abstraktionsschicht zur besseren Verwaltung. Schlussendlich werden Virtual Disk Units über ihre Logical Unit Number (LUN) als Device in den jeweiligen Server eingebunden. Im Beispiel in Abbildung 5 wird LUN 1 als Disk 1 am Server A eingebunden, die beiden anderen LUNs als zwei Disk Devices am Server B eingebunden. Diese Art der Virtualisierung wird Storage based Virtualization genannt. Zum einfachen, zentralisierten und automatisierten Management der kompletten Storage-Infrastruktur wird das Softwareprodukt SANmelody des Herstellers Datacore eingesetzt. Nachdem das Virtual Disk Pooling kleiner als 32 TB ist und nicht mehr als zwei Datacore Server eingesetzt werden, genügt hierbei die SANmelody Produktlinie. Unter www.datacore.com/Software/Products/Product-Archive/Products-at-a-glance.aspx findet man einen Vergleich der Software Produkte von Datacore.

Als Host based Storage Virtualization wird in TISS Logical Volume Manager (LVM) eingesetzt. Hierbei wird das Device nochmal in einzelne Volumes geteilt, welche je nach Bedarf bis zur maximalen Kapazität des Devices vergrößert werden können. Durch dieses Kapazitätsmanagement werden Ressourcen zentral verwaltet und können trotz sich ändernder Anforderungen effizient genutzt werden.

Maintenance ohne Betriebsunterbrechung

TISS verfolgt die Strategie einer sehr agilen Weiterentwicklung. Fast täglich werden neue Funktionen in TISS integriert, werden Systemkomponenten aktualisiert und Sicherheitsupdates zeitnah eingespielt. Selbstverständlich kann dies nicht im Rahmen von Wartungsfenstern durchgeführt werden. Die empfundene Servicequalität würde stark darunter leiden, wenn TISS mehrfach am Tag nicht für die Nutzerinnen und Nutzer zur Verfügung stünde.

Um Wartungen ohne Betriebsunterbrechung durchführen zu können, werden verschiedene Technologien eingesetzt. Durch die in Abbildung 2 dargestellte Systemstruktur können Application Server sanft aus dem Load-Balancing entfernt werden und andere virtuelle Instanzen zwischenzeitlich deren Last übernehmen. Hierbei hat sich im Betrieb bewährt, dass solche Konfigurationsänderungen auch durch den Software Release Manager selbständig durchgeführt werden können. Entsprechend einfach zu benutzende Administrationsskripte ermöglichen es, unabhängig vom Betriebsteam neue Software-Versionen von TISS auszurollen.

Die Vorzüge der Virtualisierung ermöglichen mittels Live Migration – quasi auf Mausklick – eine laufende virtuelle Maschine von einem physischen Host auf einen anderen ohne Betriebsunterbrechung zu verschieben. Es werden auch Snapshots der Systeme erstellt, wodurch vor allem bei Betriebssystem-Updates ein rasches Rückstiegsszenario gegeben ist.

Auf diese Art und Weise wurde schrittweise, ohne Service-Unterbrechung, die Infrastruktur räumlich von einem Standort an einen anderen verlegt.

Ausblick

Derzeit werden die Virtualisierungsserver getauscht und durch zwei zusätzliche Server erweitert. Ohne negative Beeinflussung der Benutzerinnnen und Benutzer von TISS wird die gesamte Storage-Infrastruktur getauscht und ebenfalls erweitert. Selbst die Anbindung der Server an das Storage wird ohne Betriebsunterbrechung adaptiert.

Durch die Anwendung modernster Technologien der Server- und Storagevirtualisierung soll die TISS-Infrastruktur auch in Zukunft allen Nutzerinnen und Nutzern die Services von TISS performant und zuverlässig bereitstellen.

Eckdaten zur TISS Infrastruktur

TISS Datenbankgröße ca. 70 GB
Virtualisierungsserver aktuell zwei, nach Erweiterung vier Server mit: 2 x X5650 Prozessor (2.66GHz, 6C, 12M Cache,) und 96 GB RAM
Anzahl virtuelle Systeme aktuell 29; bis Mai werden weitere ca. 10 virtuelle Systeme hinzukommen
Datenbank Server aktuell ein SUN Server, welcher durch einen Server mit 2 x E5540 Prozessor (2,53GHz, 4 C, 8M Cache) mit 24 GB RAM ersetzt werden soll
Der Standby Server ist bezüglich der Leistungsdaten ident
Genutzer SAN Storage ca. 2 TB
Täglich transferiertes (Internet)Datenvolumen ca. 40 GB