Solaris 10 Container Leitfaden - Funktionalitätsstand bis Solaris 10 10/09 und OpenSolaris 2009.06 -

Detlef Drewanz, Ulrich Gräf, u.v.a.

Sun Microsystems GmbH Stand 30.11.2009

Funktionsweisen

Anwendungsfälle

Best Practices

Kochbücher Version 3.1-de Solaris 10 Container Leitfaden - 3.1 Stand: 30.11.2009

Inhaltsverzeichnis Disclaimer...... VII Versionierung...... VII 1. Einführung...... 1 2. Allgemein...... 2 2.1. Solaris Container und Solaris Zonen...... 2 2.1.1. Überblick...... 2 2.1.2. Zonen und die Installation von Software...... 4 2.1.3. Zonen und Sicherheit...... 4 2.1.4. Zonen und Privilegien...... 4 2.1.5. Zonen und Ressource Management...... 5 2.1.5.1. CPU Ressourcen...... 5 2.1.5.2. Kontrolle von Memory Ressourcen...... 6 2.1.5.3. Kontrolle von Netzwerk Ressourcen (IPQoS = IP Quality of Services)...... 6 2.1.6. User Interfaces für Zonen...... 7 2.1.7. Zonen und Hochverfügbarkeit...... 7 2.1.8. Branded Zones ( und Solaris 8/Solaris 9 Kompatibilität)...... 7 2.1.9. Solaris Container Cluster (aka „zone cluster“)...... 8 2.2. Virtualisierungstechnologien im Vergleich...... 9 2.2.1. Domains/physikalische Partitionen...... 10 2.2.2. Logische Partitionen...... 11 2.2.3. Container (Solaris Zonen) in einem OS...... 12 2.2.4. Konsolidierung in einem Rechner...... 13 2.2.5. Zusammenfassung zu den Virtualisierungstechnologien...... 14 3. Anwendungsfälle...... 16 3.1. Grid Computing mit Isolation...... 16 3.2. Kleine Webserver...... 17 3.3. Multi-Netzwerk Konsolidierung...... 18 3.4. Multi-Netzwerk Monitoring...... 19 3.5. Multi-Netzwerk Backup...... 20 3.6. Konsolidierung Entwicklung/Test/Integration/Produktion...... 21 3.7. Konsolidierung von Testsystemen...... 22 3.8. Schulungssysteme...... 23 3.9. Server Konsolidierung...... 24 3.10. Vertraulichkeit von Daten und Prozessen...... 25 3.11. Testsysteme für Entwickler...... 26 3.12. Solaris 8 und Solaris 9 Container für die Entwicklung...... 27 3.13. Solaris 8 und Solaris 9 Container als Revisionssysteme...... 28 3.14. Hosting für verschiedene Firmen auf einem Rechner...... 29 3.15. SAP Portale in Solaris Containern...... 30 3.16. Upgrade- und Patchmanagement in einer virtuellen Betriebsumgebung...... 31 3.17. „Flying Zones“ - Service-orientierte Solaris Server Infrastruktur...... 32 3.18. Solaris Container Cluster (aka „zone cluster“)...... 33 4. Best Practices...... 34 4.1. Konzepte...... 34 4.1.1. Sparse-root Zonen...... 34 4.1.2. Whole-root Zonen...... 34 4.1.3. Vergleich Sparse-root Zone und Whole-root Zone...... 35 4.1.4. Software in Zonen...... 35

II Version 3.1-de Solaris 10 Container Leitfaden - 3.1 Stand: 30.11.2009

4.1.5. Softwareinstallationen in Solaris und Zonen...... 36 4.1.5.1. Softwareinstallation durch die globale Zone - Nutzung in allen Zonen...... 36 4.1.5.2. Softwareinstallation durch die globale Zone - Nutzung in einer lokalen Zone...... 36 4.1.5.3. Softwareinstallation durch die globale Zone - Nutzung in der globalen Zone...... 37 4.1.5.4. Installation durch die lokale Zone - Nutzung in der lokalen Zone...... 37 4.1.6. Storage-Konzepte...... 38 4.1.6.1. Storage für das root-Filesystem der lokalen Zonen...... 38 4.1.6.2. Storage für Daten...... 38 4.1.6.3. Storage für Programme/Applikationen...... 38 4.1.6.4. Rootplatten Layout...... 39 4.1.6.5. ZFS in einer Zone...... 39 4.1.6.6. Möglichkeiten zur Benutzung von ZFS in lokalen Zonen...... 40 4.1.6.7. NFS und lokale Zonen...... 40 4.1.6.8. Volume-Manager in lokalen Zonen...... 40 4.1.7. Netzwerk-Konzepte...... 41 4.1.7.1. Einführung Netzwerke und Zonen...... 41 4.1.7.2. Verwaltung der Netzwerk-Adressen für Zonen...... 41 4.1.7.3. Shared IP-Instanz und das Routing zwischen Zonen...... 41 4.1.7.4. Exclusive IP-Instanz...... 42 4.1.7.5. Firewalls zwischen Zonen (IP Filter)...... 42 4.1.7.6. Zonen und Limitierungen im Netzwerk...... 43 4.1.8. Zusätzliche Geräte (devices) in Zonen...... 44 4.1.8.1. Konfiguration von Geräten (Devices)...... 44 4.1.8.2. Statische Konfiguration von Geräten...... 44 4.1.8.3. Dynamische Konfiguration von Geräten...... 44 4.1.9. Separate Namensdienste in Zonen...... 45 4.1.9.1. hosts-Datenbank...... 45 4.1.9.2. User-Datenbank (passwd, shadow, user_attr)...... 45 4.1.9.3. Services...... 45 4.1.9.4. Projekte...... 45 4.2. Paradigmen...... 46 4.2.1. Delegation von Admin Rechten an die Applikations-Abteilung...... 46 4.2.2. Applikationen nur in lokalen Zonen...... 46 4.2.3. Eine Applikation pro Zone...... 47 4.2.4. Container im Cluster...... 47 4.2.5. Solaris Container Cluster...... 49 4.3. Konfiguration und Administration...... 50 4.3.1. Manuelle Konfiguration von Zonen mit zonecfg...... 50 4.3.2. Manuelle Installation von Zonen mit zoneadm...... 50 4.3.3. Manuelle De-Installation von Zonen mit zoneadm...... 50 4.3.4. Manuelles Entfernen einer konfigurierten Zone mit zonecfg...... 50 4.3.5. Duplizieren einer installierten Zone...... 50 4.3.6. Standardisiertes Erzeugen von Zonen...... 50 4.3.7. Automatische Konfiguration von Zonen per Script...... 51 4.3.8. Automatisiertes Provisionieren der Services...... 51 4.3.9. Installation und Administration einer Branded Zone...... 51 4.4. Lifecycle Management...... 52 4.4.1. Patchen eines Systems mit lokalen Zonen...... 52 4.4.2. Patchen mit Live Upgrade...... 53 4.4.3. Patchen mit Upgrade Server...... 53 4.4.4. Patchen mit zoneadm attach -u...... 53 4.4.5. Bewegen von Zonen zwischen Architekturen (sun4u / sun4v)...... 53

III Version 3.1-de Solaris 10 Container Leitfaden - 3.1 Stand: 30.11.2009

4.4.6. Neuinstallation und Service Provisionieren statt Patchen...... 54 4.4.7. Backup und Recovery von Zonen...... 54 4.4.8. Backup von Zonen mit ZFS...... 55 4.4.9. Migration (Umzug) einer Zone zu einem anderen System...... 55 4.4.10. Bewegen einer Zone innerhalb eines Systems...... 55 4.5. Management und Monitoring...... 55 4.5.1. Verwendung von Bootargumenten in Zonen...... 55 4.5.2. Konsolidierung von Log-Informationen von Zonen...... 56 4.5.3. Überwachung der Zonen-Auslastung...... 56 4.5.4. Extended Accounting mit Zonen...... 56 4.5.5. Auditing der Operationen in der Zone...... 56 4.5.6. DTrace von Prozessen in einer Zone...... 57 4.6. Ressource Management...... 58 4.6.1. Arten von Ressource Management...... 58 4.6.2. CPU Ressourcen...... 58 4.6.2.1. Kappung von CPU-Zeit für eine Zone...... 58 4.6.2.2. Allgemeine Ressource Pools...... 58 4.6.2.3. Fair Share Scheduler (FSS)...... 59 4.6.2.4. Fair Share Scheduler in einer Zone...... 59 4.6.2.5. Dynamische Ressource Pools...... 59 4.6.2.6. Light-Weight Processes (LWP)...... 59 4.6.3. Limitierung der Memory Ressourcen...... 60 4.6.3.1. Abschätzung des Speicherbedarfs für globale und lokale Zonen...... 60 4.6.3.2. Limitierung des Virtuellen Speicher...... 60 4.6.3.3. Limitieren des physikalischen Speicherbedarfs einer Zone...... 60 4.6.3.4. Limitieren von Locked Memory...... 61 4.6.4. Netzwerk Limitierung (IPQoS)...... 61 4.6.5. IPC Limits (Semaphore, Shared Memory, Message Queues)...... 61 4.6.6. Privilegien und Ressource Management...... 61 4.7. Solaris Container Navigator...... 62 5. Kochbücher...... 65 5.1. Installation und Konfiguration...... 65 5.1.1. Konfigurationsdateien...... 65 5.1.2. Besondere Kommandos für Zonen...... 66 5.1.3. Rootplattenlayout...... 68 5.1.4. Konfiguration einer Sparse-root Zone: Erforderliche Aktionen...... 69 5.1.5. Konfiguration einer Whole-root Zone: Erforderliche Aktionen...... 70 5.1.6. Installation einer Zone...... 71 5.1.7. Initialisierung von Zonen mit sysidcfg...... 71 5.1.8. Deinstallation einer Zone...... 72 5.1.9. Konfiguration und Installation einer Linux branded Zone mit CentOS...... 72 5.1.10. Konfiguration und Installation eines Solaris 8/Solaris9 Containers...... 73 5.1.11. Optionale Einstellungen...... 73 5.1.11.1. Automatisches Starten von Zonen...... 73 5.1.11.2. Privilegien-Set einer Zone verändern...... 73 5.1.12. Storage in einer Zone...... 74 5.1.12.1. Benutzung eines Raw-Device in einer lokalen Zone...... 74 5.1.12.2. Die globale Zone stellt der lokalen Zone ein Filesystem per lofs bereit...... 74 5.1.12.3. Die globale Zone mountet ein Filesystem beim Booten der lokalen Zone...... 75 5.1.12.4. Die lokale Zone mountet ein UFS-Filesystem von einem Device...... 75 5.1.12.5. User Level NFS-Server in einer lokalen Zone...... 76

IV Version 3.1-de Solaris 10 Container Leitfaden - 3.1 Stand: 30.11.2009

5.1.12.6. Ein DVD Laufwerk in der lokalen Zone benutzen...... 76 5.1.12.7. Dynamisches Konfigurieren von Geräten (Devices)...... 76 5.1.12.8. Mehrere Zonen teilen sich ein Filesystem...... 78 5.1.12.9. ZFS in einer Zone...... 78 5.1.12.10. User-Attribute für ZFS in einer Zone...... 78 5.1.13. Konfiguration einer Zone durch Kommando-Datei oder Template...... 79 5.1.14. Automatische Schnell-Installation von Zonen...... 79 5.1.15. Beschleunigtes automatisches Erstellen von Zonen auf einem ZFS-Dateisystem...... 80 5.1.16. Härten von Zonen...... 80 5.2. Netzwerk...... 81 5.2.1. Netzwerkkonfiguration für Shared IP-Instanzen ändern...... 81 5.2.2. Default Router für Shared-IP Instanz setzen...... 81 5.2.3. Netzwerkinterfaces für Exklusive-IP Instanzen...... 81 5.2.4. Netzwerkkonfiguration von Shared-IP Instanz auf Exklusive-IP Instanz ändern...... 82 5.2.5. IP Filter zwischen Shared-IP Zonen auf einem System...... 82 5.2.6. IP Filter zwischen Exclusive-IP Zonen auf einem System...... 83 5.2.7. Zonen, Netzwerke und Routing...... 83 5.2.7.1. Globale und lokale Zone mit gemeinsamem Netzwerk...... 83 5.2.7.2. Zonen in getrennten Netzwerksegmenten unter Nutzung der Shared-IP Instanz...... 84 5.2.7.3. Zonen in getrennten Netzwerksegmenten unter Nutzung der exklusiven IP-Instanzen...... 85 5.2.7.4. Zonen in getrennten Netzwerken unter Nutzung der Shared IP-Instanz...... 86 5.2.7.5. Zonen in getrennten Netzwerken unter Nutzung von exklusiven IP-Instanzen...... 87 5.2.7.6. Zonen mit Verbindung in unabhängige Kunden-Netzwerke unter Nutzung der shared IP-Instanz...... 88 5.2.7.7. Zonen mit Verbindung in unabhängige Kunden-Netzwerke unter Nutzung von exklusiven IP-Instanzen....90 5.2.7.8. Verbindung von Zonen über externe Router unter Nutzung der shared IP-Instanz...... 91 5.2.7.9. Verbindung von Zonen über einen externen Load-Balancer unter Nutzung von exklusiven IP-Instanzen...93 5.3. Lifecycle Management...... 95 5.3.1. Boot einer Zone...... 95 5.3.2. Bootargumente in Zonen...... 95 5.3.3. Softwareinstallation per mount...... 96 5.3.4. Software Installation mit Provisioning System...... 97 5.3.5. Migration einer Zone zwischen Systemen...... 97 5.3.6. Bewegen einer Zone in einem System...... 98 5.3.7. Duplizieren von Zonen mit zoneadm clone...... 99 5.3.8. Duplizieren von Zonen mit zoneadm detach/attach und clone...... 101 5.3.9. Bewegen einer Zone zwischen einem sun4u und einem sun4v System...... 102 5.3.10. Herunterfahren einer Zone...... 104 5.3.11. Die Benutzung von Live Upgrade zum Patchen eines Systems mit lokalen Zonen...... 104 5.4. Management und Monitoring...... 106 5.4.1. DTrace in einer lokalen Zone...... 106 5.4.2. Accounting über eine Zone...... 106 5.4.3. Audit einer Zone...... 106 5.5. Ressource Management...... 107 5.5.1. Begrenzung von /tmp-Größe in einer Zone...... 107 5.5.2. Limitieren des CPU Verbrauchs einer Zone (CPU-Capping)...... 107 5.5.3. Ressource Pools mit Prozessor Sets...... 107 5.5.4. Fair Share Scheduler...... 108 5.5.5. Statisches CPU Ressource Management zwischen Zonen...... 108 5.5.6. Dynamisches CPU Ressource Management zwischen Zonen...... 108 5.5.7. Statisches CPU Ressource Management in einer Zone...... 108 5.5.8. Dynamisches CPU Ressource Management in einer Zone...... 109

V Version 3.1-de Solaris 10 Container Leitfaden - 3.1 Stand: 30.11.2009

5.5.9. Dynamische Ressource Pools für Zonen...... 109 5.5.10. Physikalischen Hauptspeicherverbrauch eines Projektes begrenzen...... 110 5.5.11. Anwendung von Memory Ressource Management für Zonen...... 110 Anhang...... 112 A. Solaris Container in OpenSolaris...... 112 A.1. OpenSolaris allgemein...... 112 A.2. ipkg-Branded Zones...... 112 A.3. Kochbuch: Konfiguration einer ipkg-Zone...... 113 A.4. Kochbuch: Installation einer ipkg-Zone...... 113 B. Literatur...... 114

VI Version 3.1-de Solaris 10 Container Leitfaden - 3.1 Disclaimer Stand: 30.11.2009

Disclaimer

Die GmbH übernimmt keine Gewähr für die Vollständigkeit und die Fehlerfreiheit der in diesem Dokument enthaltenen Informationen und Beispiele. Versionierung

Version Inhalt Wer 3.1 30.11.2009 Detlef Drewanz Abstimmung mit dem Inhalt des „Solaris Container Guide 3.1“ Ulrich Gräf Inhaltsverzeichnis in HTML für einfacheres Navigieren im Dokument Korrektur „Patchen von Systemen mit lokalen Zone“ Korrektur „Patchen mit zoneadm attach -u“ Korrektur Solaris Container Navigator 3.0 19.06.2009 Detlef Drewanz, Allgemeine Korrekturen Uwe Furchheim, Ergänzungen im Allgemeinen Teil, Ressource Management Ulrich Gräf, Ergänzungen Patch Management von Zonen Franz Haberhauer, Formatierung: URLs und Querverweisen zur besseren Lesbarkeit Joachim Knoke, Formatierung: Nummerierung repariert Hartmut Streppel, Thomas Wagner,

Einfügung: Möglichkeiten zur Benutzung von ZFS in lokalen Zonen Heiko Stein 3.0 Draft 1 10.06.2009 Mehr Querverweise im Dokument Dirk Augustin, Allgemeine Korrekturen Detlef Drewanz, Einfügung: Solaris Container Navigator Ulrich Gräf, Einarbeitung Funktionalitäten Solaris 10 5/08 + 10/08 + 5/09 Hartmut Streppel Einfügung: Firewall zwischen Zonen Überarbeitung: Zonen und ZFS Überarbeitung: Storage Konzepte Überarbeitung: Netzwerk Konzepte Einfügung: Dynamisches Konfigurieren von Geräten in Zonen Überarbeitung: Ressource Management Ergänzung: Patchen von Zonen Überarbeitung: Zonen und Hochverfügbarkeit Einfügung: Solaris Container Cluster Einfügung: Solaris Container in OpenSolaris Einfügung: Upgrade- und Patchmanagement in einer virtuellen Betriebsumgebung 2.1 13.02.2008 Einarbeitung von Korrekturen (tagged vlanID) Detlef Drewanz, Ulrich Gräf 2.0 21.01.2008 Einarbeitung von Kommentaren zu 2.0-Draftv27 Detlef Drewanz, Ulrich Gräf Einfügung: Konsolidierung von Log-Informationen Einfügung: Kochbüchern für Ressource Management 2.0-Draftv27 11.01.2008 Einarbeitung von Kommentaren zu 2.0-Draftv22 Detlef Drewanz, Ulrich Gräf Einarbeitung Live Upgrade und Zonen Einfügung von einigen Querverweisen

Beschleunigtes automatisches Installieren von Zonen auf einem ZFS- Bernd Finger, Ulrich Gräf Dateisystem 2.0-Draftv22 20.12.2007 Einarbeitung Ressource Management Detlef Drewanz, Ulrich Gräf Einarbeitung von Solaris 10 08/07 Einarbeitung von Solaris 10 11/06 Einarbeitung von Kommentaren Gesamte Überarbeitung des Leitfaden

Einarbeitung „SAP Portale in Containern“ Dirk Augustin Einarbeitung „Flying Zones“ Oliver Schlicker Überarbeitung „Zonen und Hochverfügbarkeit“ Detlef Ulherr, Thorsten Früauf 1.3 07.11.2006 Zeichnungen 1 - 6 als Image Detlef Drewanz 1.2 06.11.2006 Verallgemeinerung Virtualisierung Detlef Drewanz, Ulrich Gräf Weitere Netzwerkbeispiele

VII Version 3.1-de Solaris 10 Container Leitfaden - 3.1 Disclaimer Stand: 30.11.2009

Version Inhalt Wer 1.1 27.10.2006 Versionierungstabelle umgestellt Detlef Drewanz (das Neueste nach oben) Literaturangabe ergänzt Hardening von Zonen ergänzt

1.0 24.10.2006 Feedback eingearbeitet, Korrekturen Detlef Drewanz Anwendungsfälle und Netzwerk

Zonen im Cluster hinzugefügt Thorsten Früauf/Detlef Ulherr

Komplette Überarbeitung verschiedener Kapitel Ulrich Gräf Draft 2.2 1. Netzbeispiel, Korrekturen 31. 07. 2006 Ulrich Gräf Draft 2.0 2. Draft veröffentlicht – 28.07.2006 Detlef Drewanz, Ulrich Gräf Draft 1.0 1. Draft (intern) - 28.06.2006 Detlef Drewanz, Ulrich Gräf

VIII Version 3.1-de Solaris 10 Container Leitfaden - 3.1 1. Einführung Stand: 30.11.2009 1. Einführung

[dd/ug] Dieser Leitfaden ist über Solaris Container, wie sie funktionieren und wie man sie benutzt. Obwohl der Leitfaden ursprünglich in deutsch entwickelt wurde, bieten wir ab Version 3.1 erstmals eine englische Version [25] an. Mit der Verfügbarkeit von Solaris 10 am 31. Januar 2005 ist durch Sun Microsystems ein Betriebssystem mit bahnbrechenden Neuerungen bereitgestellt worden. Eine dieser Neuerungen sind die Solaris Container, die unter anderem zur Konsolidierung und Virtualisierung von OS- Umgebungen, für die Isolation von Anwendungen und zum Ressource Management eingesetzt werden können. Solaris Container tragen erheblich zur fortschrittlichen Umgestaltung von IT- Prozessen und -Umgebungen, sowie zu Kosteneinsparungen im IT-Betrieb bei. Die Nutzung dieser neuen Möglichkeiten erfordert Know-How, Entscheidungshilfen und Beispiele, die wir in diesem Leitfaden zusammengefasst haben. Er richtet sich an Entscheidungsträger, RZ-Leiter, IT-Fachgruppen und IT-Administratoren. Das Dokument gliedert sich in die Kapitel Einführung, Allgemeiner Teil, Anwendungsfälle, Best Practices, Kochbücher und eine Literaturauflistung. Der kurzen Einführung folgt ein allgemeiner Teil mit der Darstellung heutiger RZ-typischer Anforderungen in Bezug auf Virtualisierung und Konsolidierung, sowie der Darstellung und dem Vergleich der Solaris Container Technologie. Im Anschluss daran werden in verschiedenen Anwendungsfällen die Einsatzmöglichkeiten für Solaris Container diskutiert. Deren konzeptionelle Umsetzung wird anhand von Best Practices dargestellt. Konkrete Beispiele zeigen im Kapitel Kochbücher die Kommandos zur Realisierung der Best Practices. Alle Kochbücher wurden durch die Autoren selbst erprobt und verifiziert. Der Anhang zeigt die Besonderheiten von Solaris Container mit OpenSolaris. Dieser Leitfaden ist als Referenz-Dokument gedacht. Es ist zwar möglich, aber nicht zwingend notwendig, den Leitfaden von vorne nach hinten zu lesen. Ein RZ-Leiter wird beispielsweise den Überblick über die Solaris Container-Technologie erwerben wollen oder sich die Anwendungsfälle ansehen. Ein IT-Architekt sieht sich die Best Practices an, um Lösungen zu bauen, währenddessen ein System-Administrator die Kommandos in den Kochbüchern ausprobiert, um Praxis zu gewinnen. Daher bietet das Dokument für jeden etwas. Vielen Dank an alle diejenigen, die durch Bemerkungen, Beispiele und Zusätze zu diesem Dokument beigetragen haben. Ein besonderer Dank geht an die Kollegen (alphabetisch): Dirk Augustin[da], Bernd Finger[bf], Constantin Gonzalez, Uwe Furchheim, Thorsten Früauf[tf], Franz Haberhauer, Claudia Hildebrandt, Kristan Klett, Joachim Knoke, Matthias Pfützner, Roland Rambau, Oliver Schlicker[os], Franz Stadler, Heiko Stein[hes], Hartmut Streppel[hs], Detlef Ulherr[du], Thomas Wagner und Holger Weihe.

Für Rückmeldungen und Anregungen stehen die Autoren gerne zur Verfügung.

Berlin und Langen im November 2009 Detlef Drewanz ([email protected]), Ulrich Gräf ([email protected])

1 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009 2. Allgemein

2.1. Solaris Container und Solaris Zonen 2.1.1. Überblick [ug] Solaris Zonen ist die Bezeichnung für eine virtualisierte Ausführungsumgebung - eine Virtualisierung auf Betriebssystem-Ebene (im Gegensatz zur HW-Virtualisierung). Solaris Container sind Solaris Zonen mit Ressource Management. Der Begriff wird häufig (auch in diesem Leitfaden) als Synonym mit Solaris Zonen benutzt. Das Ressource Management wurde bereits mit Solaris 9 eingeführt und erlaubt eine Begrenzung von CPU-, Hauptspeicher- und Netzwerk-Ressourcen. Solaris Zonen sind eine Virtualisierung auf der Schnittstelle zwischen dem Betriebssystem und der Applikation. • Es gibt eine globale Zone, die den Kernel und alle Treiber enthält, sowie alle Geräte, Filesysteme und nicht-globalen Zonen kennt. • Zusätzlich können lokale Zonen (non-global) als virtuelle Ausführungsumgebungen definiert werden. • Alle lokalen Zonen nutzen den Betriebssystemkern der globalen Zone und sind damit Teil einer einzigen Betriebssystem-Installation - im Unterschied zur HW-Virtualisierung, wo mehrere Betriebssysteme auf einer virtualisierten Hardware gestartet werden. • Alle gemeinsam genutzten (shared) Objekte (Programme, Bibliotheken, der Kernel) werden nur einmal geladen; daher ist im Unterschied zur HW-Virtualisierung der Mehrverbrauch bezüglich Hauptspeicher sehr gering. • Bezüglich Filesystem ist eine lokale Zone von der globalen Zone getrennt. D. h. sie benutzt ein Unterverzeichnis der globalen Zone als root-Verzeichnis (wie bei chroot-Umgebungen). • Eine Zone kann eine oder mehrere eigene Netzwerk-Adressen und -Interfaces haben. • Physikalische Geräte sind in den lokalen Zonen nicht sichtbar (Standard), können jedoch optional konfiguriert werden. • Lokale Zonen haben eigene Umgebungs-Einstellungen, z.B. für den Nameservice. • Die lokalen Zonen sind bezüglich Prozessen untereinander und gegen die globale Zone abgetrennt, d.h. eine lokale Zone kann die Prozesse einer anderen Zone nicht sehen. • Die Abtrennung erstreckt sich auch auf den gemeinsam genutzten Hauptspeicher (Shared Memory) und logische oder physikalische Netzwerk-Interfaces. • Der Zugriff auf eine andere lokale Zone auf dem selben Rechner ist daher nur über das Netzwerk möglich. • Die globale Zone kann zur Steuerung und Überwachung (Accounting) alle Prozesse der lokalen Zonen sehen.

App

Lokale Lokale Lokale Zone Zone Zone

Globale Zone OS

Server

Zeichnung 1: [dd] Schematische Darstellung von Zonen

2 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009 Eine lokale Zone ist also eine separiert nutzbare Solaris-Umgebung, welche von den anderen Zonen getrennt ist. Gleichzeitig werden viele Ressourcen der Hardware und des Betriebssystems gemeinsam mit anderen lokalen Zonen genutzt, wodurch der Mehraufwand zur Laufzeit gering ist. Lokale Zonen führen dieselbe Solaris-Version wie die globale Zone aus. Alternativ können in sogenannten Branded Zones auch virtuelle Ausführungsumgebungen für ältere Solaris-Versionen (SPARC: Solaris 8 und 9) oder andere Betriebssysteme (: Linux) installiert werden. Hierbei wird - im Gegensatz zur einer Emulation - die Original-Umgebung auf dem Solaris 10 Kern der globalen Zone ausgeführt. Weitere Details sind in der folgenden Tabelle zusammengefasst: Funktionalität Bemerkung System Die Einstellungen in /etc/system gelten für den Kernel, der von allen Zonen Einstellungen: genutzt wird. Jedoch können die wichtigsten Einstellungen früherer Solaris Versionen (Shared Memory, Semaphoren und Message Queues) seit Solaris 10 durch den Solaris Ressource Manager im laufenden Betrieb verändert werden. Shared Kernel: Der Kernel wird von der globalen Zone und den lokalen Zonen gemeinsam genutzt. Der durch das OS initiierte Mehraufwand fällt nur einmal an. Die Kosten für eine lokale Zone sind daher, gemessen an Hauptspeicher-Bedarf, CPU- Leistung und Plattenplatz gering. Shared In Unix werden alle Objekte wie Programme, Dateien und shared Libraries nur Objekte: einmal als shared Memory Segment geladen, wodurch insgesamt die Performance verbessert wird. Dies erstreckt sich bei Solaris 10 auch über die Zonen; d.h. egal wie häufig z.B. ein Programm oder eine shared Library in Zonen benutzt wird: sie belegt im Hauptspeicher nur einmal Platz. (Dieses Sharing ist bei virtuellen Maschinen nicht möglich.) Shared Weitere Teile des Dateibaumes (Filesysteme oder Verzeichnisse) können von der Plattenplatz: globalen Zone aus einer oder mehreren lokalen Zonen zugeordnet werden. Separation: Der Zugriff auf die Ressourcen der globalen Zone oder anderer lokalen Zonen, soweit nicht explizit so konfiguriert (Geräte, Speicher), wird verhindert. Softwarefehler werden durch Fehlerisolation auf die jeweilige lokale Zone begrenzt. Physikalische Die Administration von physikalischen Geräten erfolgt von der globalen Zone aus. Geräte: Die lokalen Zonen haben auf die Zuteilung dieser Geräte keinen Zugriff. Zugeordnete In der Standardkonfiguration einer lokalen Zone sind keine physikalischen Geräte Geräte: enthalten. Geräte (z.B. Platten, Volumes, DVD-Laufwerke, ...) können durch Konfiguration einer oder mehreren lokalen Zonen zugeordnet werden. So lassen sich auch gesonderte Treiber nutzen. Netzwerk: Zonen haben eigene IP-Adressen auf einem oder mehreren virtuellen oder physikalischen Interfaces. Die Netzwerkkommunikation zwischen Zonen erfolgt nach Möglichkeit über die gemeinsam genutzten Netzwerk-Schichten oder bei der Nutzung von exklusive IP-Instanzen über externe Netzwerkverbindungen. Prozess: Jede lokale Zone sieht nur ihre eigenen Prozesse. Die globale Zone sieht alle Prozesse der lokalen Zonen. Namens- Lokale Zonen verfügen über eine unabhängige Namensumgebung mit Hostnamen, umgebung: Netzwerkdiensten, Nutzern, Rollen und Prozessumgebungen. Eine Zone kann zur Nutzung der Namens-Datenbank aus lokalen Dateien konfiguriert sein, eine andere auf dem gleichen Rechner kann z.B. LDAP oder NIS nutzen. Filesystem: Der sichtbare Teil des Filesystems der lokalen Zone kann auf einen oder mehrere Teilbäume der globalen Zone eingeschränkt werden. Die Dateien in der lokalen Zone können auf Basis von Verzeichnissen shared mit der globalen Zone oder in Kopie konfiguriert werden. Patches: Für Solaris Packages, die in der lokalen Zone als Kopie installiert sind, können auch dort separat Patches installiert werden. Der Patchlevel der Systempatches sollte gleich gehalten werden, da alle Zonen eines Systems den selben Kernel benutzen. Root Eine lokale Zone hat einen individuellen root-Account (Zone-Administrator). Daher Delegation: kann die Administration von Anwendungen und Diensten in einer lokalen Zone vollständig an andere Personen delegiert werden - inklusive root-Anteil. Die Betriebssicherheit in der globalen Zone oder der anderen lokalen Zonen wird dadurch nicht beeinflusst. root der globalen Zone hat generellen Zugang zu allen lokalen Zonen.

Tabelle 1: [ug] Eigenschaften von Solaris 10 Zonen

3 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009

2.1.2. Zonen und die Installation von Software [dd] Es gibt zwei Arten, Software in Zonen bereitzustellen: 1. Software wird im pkg-Format bereitgestellt. Wird diese Software mit pkgadd in der globalen Zone installiert, so steht diese auch anderen lokalen Zonen zur Verfügung. Dadurch wird die Installation und Pflege von Software erheblich vereinfacht, da - auch wenn viele Zonen installiert sind - die Pflege der Software zentral von der globalen Zone aus vorgenommen werden kann. 2. Software kann exklusiv für eine lokale oder für die globale Zone installiert werden, um z.B. in einer Zone unabhängig von anderen Zonen Änderungen an der Software vornehmen zu können. Dieses kann durch die Installation mit speziellen Optionen von pkgadd oder durch spezielle Softwareinstallationsformen, z.B. als tar-Archiv erreicht werden. In jedem Falle werden jedoch der Kernel und die Treiber von Solaris von allen Zonen gemeinsam genutzt, können aber nur in der globalen Zone direkt installiert und modifiziert werden. 2.1.3. Zonen und Sicherheit [dd] Durch die Bereitstellung eigener root-Verzeichnisse für jede Zone, können durch die lokalen Namensumgebungen in den Zonen eigene Festlegungen zu den Sicherheitseinstellungen getroffen werden (RBAC - Role Based Access Control, passwd-Datenbank). Weiterhin steht in jeder Zone eine eigene Nutzerdatenbank mit eigenen Benutzerkonten zur Verfügung. Dadurch wird es möglich, getrennte Nutzerumgebungen für jede Zone aufzubauen, sowie für jede Zone eigene Administrator- Anmeldungen einzuführen. Solaris 10 5/08 ist wie bereits frühere Solaris-Versionen nach Common Criteria EAL4+ zertifiziert. Diese Zertifizierung wurde durch die Canadian CCS durchgeführt. Canadian CCS ist Mitglied der Gruppe der Zertifizierungsstellen von westlichen Staaten, bei der auch das BSI (Bundesamt für Sicherheit in der Informationstechnik) Mitglied ist. Diese Zertifizierung wird auch vom BSI anerkannt. Bestandteil der Zertifizierung sind Einbruchssicherheit, Separation und - neu in Solaris 10 - die Abgrenzung der Zonen. Details dazu sind nachlesbar unter: http://www.sun.com/software/security/securitycert/ Solaris Trusted Extensions erlauben es Anwendern, die spezifischen Gesetzen oder Datenschutzanforderungen unterliegen, Labeling Features zu nutzen, die bisher nur in hochspezialisierten Betriebssystemen und Appliances enthalten waren. Zur Realisierung von Labeled Security werden sogenannte Compartments verwendet. Diese Compartments werden bei den Solaris Trusted Extensions durch Solaris Zonen realisiert. 2.1.4. Zonen und Privilegien [dd] Lokale Zonen verfügen über weniger mögliche Prozess-Privilegien als die globale Zone, wodurch die Ausführung einiger Kommandos innerhalb einer lokalen Zone nicht möglich ist. Zu den Einschränkungen gehören u.a.: • Konfiguration von Swap-space und Prozessorsets • Veränderung des Prozess Schedulers und des Shared Memory • Anlegen von Device Files • Laden und Entladen von Kernel Modulen • Bei gemeinsam genutzten IP-Instanzen: – Zugriff auf die physikalische Netzwerkschnittstelle – Setzen von IP-Adressen Seit Solaris 10 11/06 können lokalen Zonen bei der Zonenkonfiguration erweiterte Prozess-Privilegien zugeordnet werden, die erweiterte Zugriffsmöglichkeiten der lokalen Zonen ermöglichen (aber nicht alle). Die möglichen Kombinationen und benutzbaren Privilegien in Zonen sind hier dargestellt: http://docs.sun.com/app/docs/doc/817-1592/6mhahuotq?a=view

4 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009

2.1.5. Zonen und Ressource Management [ug] In Solaris 9 wurde das Ressource Management auf der Basis von Projekten, Tasks und Ressource Pools eingeführt. In Solaris 10 kann das Ressource Management auch auf Zonen angewendet werden. Kontrollierbar sind die folgenden Ressourcen: • CPU Anteile (Prozessor-Sets, CPU-Capping und Fair-Share-Scheduler) • Speicher-Verbrauch (Realer Speicher, Virtueller Speicher, Shared Segmente) • Kontrolle des Netzwerk-Verkehrs (IPQoS = IP Quality of Service) • Zonen-spezifische Einstellungen für Shared Memory, Semaphore, Swap (System V IPC Ressource Controls ) 2.1.5.1. CPU Ressourcen [ug] Mit Zonen sind 3 Stufen des Ressource Management möglich: • Partitionierung der CPUs in Prozessor-Sets, die Ressource Pools zugeordnet werden können. Ressource-Pools werden lokalen Zonen zugeordnet und bestimmen die nutzbare CPU Menge. • Einsatz des Fair-Share-Scheduler (FSS) in einem Ressource-Pool, der von einer oder mehreren lokalen Zonen benutzt wird. Dieser erlaubt die feingranulare Zuteilung von CPU-Ressourcen zu Zonen in einem definierten Verhältnis, sobald Zonen um CPU-Zuteilungen konkurrieren. Dies ist der Fall, wenn die Systemauslastung bei 100% ist. So stellt der FSS die Antwortzeit von Zonen sicher. • Einsatz des FSS in einer lokalen Zone. Dies erlaubt die feingranulare Zuteilung von CPU-Ressourcen zu Projekten (Gruppen von Prozessen) in einem definierten Verhältnis, wenn Projekte um CPU-Zuteilungen konkurrieren, die Auslastung der für diese Zone verfügbaren CPU-Zeit also bei 100% liegt. So stellt der FSS die Antwortzeit von Prozessen sicher. Prozessor-Sets in einem Ressource-Pool Einer lokalen Zone lässt sich genau wie einem Projekt ein Ressource Pool zuordnen, in dem alle Prozesse der Zone ablaufen (zonecfg: set pool=). Man kann CPUs einem Ressource Pool zuordnen. Dann laufen die Prozesse der Zonen nur auf den dem Ressource-Pool zugeordneten CPUs ab. Einem Ressource-Pool können auch mehrere Zonen (oder auch Projekte) zugeordnet sein, die sich die CPU-Ressourcen des Ressource Pools teilen. Der häufigste Fall ist, je Zone einen eigenen Ressource-Pool mit CPUs zu erzeugen. Dann kann als Vereinfachung die Anzahl der CPUs für eine Zone in der Zonenkonfiguration angegeben werden (zonecfg: add dedicated-cpu). Beim Start einer Zone wird automatisch ein temporärer Ressource-Pool erzeugt, der die konfigurierte Zahl von CPUs enthält. Beim Shutdown der Zone werden Ressource-Pool und CPUs wieder freigegeben (Seit Solaris 10 8/07). Fair-Share-Scheduler in einem Ressource-Pool In dem Fall, dass mehrere Zonen in einem Ressource Pool miteinander laufen, lässt sich mit dem Fair Share Scheduler (FSS) die Zuordnung von CPU-Ressourcen innerhalb eines Ressource Pools steuern . Dazu kann man jeder Zone bzw. jedem Projekt einen Anteil (share) zuordnen. Die Einstellungen der Zonen und der Projekte in einem Ressource Pool werden dazu herangezogen, die Kontrolle der CPU-Ressourcen dann vorzunehmen, wenn die Applikationen der lokalen Zonen bzw. die Projekte um die CPU Zeiten konkurrieren: • Ist die Auslastung des Prozessor-Sets unter 100%, dann wird keine Steuerung vorgenommen, da noch freie CPU Leistung zur Verfügung steht. • Liegt die Auslastung bei 100%, dann wird der Fair-Share-Scheduler aktiv, indem die Priorität der beteiligten Prozesse so verändert wird, dass die zugeteilte CPU-Leistung einer Zone oder eines Projektes dem definierten Anteil entspricht. • Der definierte Anteil berechnet sich aus dem Share-Wert einer aktiven Zone (oder eines Projektes) dividiert durch die Summe der Shares aller aktiven Zonen/Projekte. Die Zuordnung ist dynamisch im laufenden Betrieb veränderbar. CPU-Ressource Kontrolle in einer Zone In einer lokalen Zone ist es zusätzlich möglich, Projekte und Ressource-Pools zu definieren und die Zuordnung von CPU-Ressourcen mittels FSS auf die in der Zone laufenden Projekte anzuwenden (siehe voriger Absatz).

5 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009

CPU-Capping Der maximale CPU-Verbrauch von Zonen kann eingestellt werden (cpu-caps). Diese Einstellung ist ein absolutes Limit bezüglich der verbrauchten CPU-Leistung und kann auf 1/100 CPUs genau eingestellt werden (ab Solaris 10 5/08). Mit dieser Konfigurationsmöglichkeit kann man die Zuordnung erheblich feiner einstellen, als mit Prozessor-Sets (1/100 CPU statt 1 CPU). Weiterhin bietet CPU-Capping eine weitere Kontrollmöglichkeit, wenn mehrere Zonen in einem Ressourcenpool laufen (mit oder ohne FSS), um von Anfang an alle Nutzer auf die später zur Verfügung stehende Leistung zu limitieren. 2.1.5.2. Kontrolle von Memory Ressourcen [ug] In Solaris 10 (auch in einem Update von Solaris 9) ist der Hauptspeicher-Verbrauch auf der Ebene von Zonen, Projekten und Prozessen begrenzbar. Dies wird mit dem sogenannten Ressource- Capping-Daemon (rcapd) realisiert. Für die entsprechenden Objekte wird ein Limit für den Realspeicherverbrauch definiert. Steigt der Verbrauch eines der Projekte über das definierte Limit an, veranlasst der rcapd das Auslagern von wenig genutzten Hauptspeicher-Seiten von Prozessen. Als Messgröße wird die Summe des Platzverbrauches der Prozesse herangezogen. So wird der definierte Hauptspeicher-Bedarf eingehalten. Die Leistung der Prozesse in dem entsprechenden Objekt sinkt, da sie gegebenenfalls Seiten wieder einlagern müssen, wenn die Speicherbereiche wieder benutzt werden. Eine ständige Auslagerung von Hauptspeicherseiten ist ein Indiz für eine zu geringe Menge an verfügbarem Hauptspeicher oder zu knappen Einstellungen oder die Anwendung benötigt mehr als die eingestellte Menge Als Vereinfachung sind seit Solaris 10 8/07 Memory Limits für jede Zone einstellbar. Man kann die Menge des genutzten realen Speichers (physical), den virtuellen Speicher (swap) und von locked Segmenten (nicht auslagerungsfähige Hauptspeicherseiten, Shared-Memory Segmente) begrenzen. Die Einstellungen für virtuellen und locked Speicher sind harte Limits, d.h. wenn der entsprechende Wert erreicht wird, können die Applikationen keinen weiteren Speicher anfordern. Das Limit für den realen Speicher wird hingegen von dem rcapd überwacht, der bei Überschreitung Hauptspeicherseiten sukzessive auslagert.

2.1.5.3. Kontrolle von Netzwerk Ressourcen (IPQoS = IP Quality of Services) [ug] In Solaris 10 (auch Solaris 9) ist es möglich, den Netzwerk-Verkehr zu klassifizieren und die Datenrate der Klassen zu kontrollieren. Ein Beispiel ist die Bevorzugung des Netzwerk-Verkehrs eines Webservers vor dem Netzwerk Backup. Wenn der Netzwerk-Backup läuft, soll der Dienst am Kunden darunter nicht leiden. Die Konfiguration erfolgt mit Regeln in einer Datei, die mit dem Kommando ipqosconf aktiviert wird. Die Regeln bestehen aus einem Teil, mit dem der Netzwerkverkehr klassifiziert wird und aus Aktionen, mit denen die Datenrate / Burstrate gesteuert werden kann. Die Klassifizierung kann nach einigen oder allen der folgenden Parametern erfolgen: • Adresse des Senders oder Empfängers • Port-Nummer des Empfängers • Datenverkehr Typ (UDP,TCP) • User-ID des lokalen Prozesses • Projekt des lokalen Prozesses (/etc/project) • TOS Feld des IP-Verkehrs (Veränderung Priorität in einer laufenden Verbindung)

6 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009

2.1.6. User Interfaces für Zonen [dd] Für die Arbeit mit Zonen und Containern stehen verschiedene Werkzeuge zur Verfügung. Solaris liefert selbst eine Reihe von Command Line Interface (CLI)-Tools wie zoneadm, zonecfg und zlogin mit denen auf der Kommandozeile oder in Scripten die Konfiguration und Installation von Zonen vorgenommen werden kann. Als Grafisches User Interface (GUI) steht der Solaris Container Manager (http://www.sun.com/software/products/container_mgr/) zur Verfügung. Dabei handelt es sich um ein separates Produkt, das zusammen mit dem Sun Management Center (SunMC) betrieben wird. Der Container Manager gestattet durch sein Nutzerinterface eine einfache und schnelle Neuerzeugung, Umkonfiguration oder Migration von Zonen und eine effektive Benutzung des Ressource Managements. Webmin stellt mit dem Zonenmodule ein Browser User Interface (BUI) zur Installation und dem Management von Zonen zur Verfügung. Das Module kann unter http://www.webmin.com/standard.html als zones.wbm.gz heruntergeladen werden. 2.1.7. Zonen und Hochverfügbarkeit [tf/du/hs] Ein einzelnes System hat bei allen vorhandenen RAS-Fähigkeiten nur die Verfügbarkeit eines Rechners und reduziert sich mit der Anzahl der Komponenten einer Maschine (MTBF) Ist diese Verfügbarkeit nicht ausreichend, so kann man mit dem HA Solaris Container Agenten sogenannte Failover Zonen implementieren und so Zonen zwischen Cluster Knoten schwenken (ab Sun Cluster 3.1 08/05). Damit erhöht sich die Verfügbarkeit des Gesamtsystems erheblich. Zusätzlich wird hier aus einem Container ein flexibler Container. Das heißt, es ist völlig unerheblich auf welchem der am Cluster beteiligten Rechner der Container abläuft. Ein Verschieben des Containers ist manuell durch administrative Aktionen oder automatisch bei Ausfall eines Rechners möglich. Alternativ ist mit dem HA Solaris Container Agenten auch möglich, lokale Zonen mitsamt ihren Services zu starten und zu stoppen. D.h. Es existieren identische Zonen auf mehreren Rechnern, mit identischen Services, die keinen(!) shared Storage haben. Da jetzt kein Failover einer Zone möglich ist, da der Zonenrootpfad nicht geschwenkt werden kann, ist konfigurierbar, dass die eine Zone gestoppt und anschließend die identische auf einem anderen System gestartet wird. Eine weitere Möglichkeit bieten Container Cluster (seit Sun Cluster 3.2 1/09). In der globalen Zone ist ein Sun Cluster installiert, in dem virtuelle Cluster konfiguriert werden können. Die virtuellen Cluster bestehen aus virtuellen Rechner-Knoten, die lokale Zonen sind. Die Administration kann dem Betreiber der Zonen übertragen werden. (siehe 2.1.9 Solaris Container Cluster (aka „zone cluster“) ). 2.1.8. Branded Zones (Linux und Solaris 8/Solaris 9 Kompatibilität) [dd/ug] Mit Branded Zones ist es möglich, in einer Zone eine andere OS-Umgebung laufen zu lassen als in der globalen Zone installiert ist (BrandZ, seit Solaris 10 8/07) Branded Zones erweitern die Zonen-Konfiguration wie folgt: • Ein Brand ist ein Zonenattribut. • Jeder Brand enthält Mechanismen zur Installation einer Branded Zone. • Jeder Brand kann seine eigenen Pre-/Post-Boot Verfahren benutzen. Zur Laufzeit werden die Systemaufrufe abgefangen und entweder an das Solaris weitergeleitet oder emuliert. Die Emulation erfolgt durch Module in Bibliotheken, die im Brand mit enthalten sind. Diese Konstruktion hat den Vorteil, dass ohne Änderung des Solaris Kernels leicht weitere Brands eingeführt werden können. Zur Zeit gibt es die folgenden Brands: • native: Brand für Zonen mit dem Solaris aus der Globalen Zone • lx: Solaris Container for Linux Applications (abgekürzt: SCLA) Hiermit können unter Solaris auf x86-Systemen unmodifizierte 32-Bit Linux-Programme benutzt werden. Dazu muss in der Zone eine 32-Bit Linux-Distribution installiert werden, die einen Linux 2.4 Kernel benutzen kann. In der Zone können dann die benötigten Linux- Programme benutzt und/oder installiert werden. Die Linux-Distribution und Lizenz ist selbst nicht in Solaris enthalten und muss in jeder Zone installiert werden Neuinstallation oder Kopie einer bestehenden Installation). Die folgenden Linux Distributionen funktionieren: – CentOS 3.5 – 3.8, RedHat Linux 3.5 - 3.8 (zertifiziert) – Debian (unsupported, Anleitung siehe Blog von Nils Nieuwejaar http://blogs.sun.com/nilsn/entry/installing_a_debian_zone_with)

7 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009 • solaris8/Solaris9: Solaris 8 bzw. Solaris 9 Container Damit ist es möglich, eine Solaris 8 oder Solaris 9 Umgebung in einer Zone zu betreiben (nur SPARC). Solche Container können mit den HA Solaris Container Agenten hochverfügbar gemacht werden. Zonen dieses Typs können nicht als virtuelle Knoten verwendet werden. • solaris 10: Solaris 10 Branded Zones sind für OpenSolaris in der Planung (Siehe http://opensolaris.org/os/project/s10brand/)

2.1.9. Solaris Container Cluster (aka „zone cluster“) [hs] Im Herbst 2008 wurden im Rahmen des Open HA Cluster Projekts zone clusters angekündigt. Diese steht seit Sun Cluster 3.2 1/09 auch im kommerziellen Produkt als Solaris Container Cluster zur Verfügung. Ein Solaris Container Cluster ist die Weiterentwicklung der Solaris Zonen-Technologie hin zu einem virtuellen Cluster, auch „zone cluster” genannt. Die Installation und Konfiguration eines Container Clusters ist im Sun Cluster Installation Guide [http://docs.sun.com/app/docs/doc/820-4677/ggzen?a=view] beschrieben. Der Open HA Cluster stellt eine vollständige, virtuelle Clusterumgebung zur Verfügung. Als Elemente werden Zonen als virtualisierte Solaris-Instanzen verwendet. Der Administrator einer solchen Umgebung sieht und bemerkt fast keinen Unterschied zum globalen Cluster, das hier virtualisiert wird. Zwei wesentliche Gründe haben die Entwicklung der virtuellen Cluster-Technologie vorangetrieben: • der Wunsch nach einer Abrundung der Container-Technologie • die Kundenanforderung, Oracle RAC (Real Application Cluster) innerhalb einer Container- Umgebung betreiben zu können.

Solaris Container, abgesichert durch Sun Cluster, bieten eine hervorragende Möglichkeit, Anwen- dungen sicher und hochverfügbar in Solaris Containern zu betreiben. Für solche Implementierungen stehen zwei Möglichkeiten, Flying Container und Flying Services, zur Verfügung. Eine saubere Trennung bei der Systemadministration ermöglicht die Delegation der Container- Administration an die Anwendungsbetreiber, die ihre Applikation innerhalb eines Containers installieren, konfigurieren und betreiben. Für den Anwendungsbetreiber war es allerdings unbefriedigend, zwar Administratorrechte in seinen Containern zu haben, andererseits aber nur sehr eingeschränkt mit den zu seiner Zone gehörenden Cluster-Ressourcen umgehen zu können. In der Cluster Implementierung vor Sun Cluster 3.2 1/09 bestand das Cluster hauptsächlich aus den in der globalen Zone installierten, konfigurierten und auch laufenden Komponenten. Nur eine sehr kleine Zahl von Clusterkomponenten war tatsächlich innerhalb eines Containers aktiv; und auch diese ermöglichte nur sehr eingeschränkte administrative Eingriffe. Die virtuellen Cluster geben dem Zonen-Administrator nun das Gefühl, eine fast vollständige Kontrolle über seinen Cluster zu haben. Einschränkungen beziehen sich auf Dienste, die weiterhin nur einmal im Cluster vorhanden sind, wie z.B. Quorum Devices oder auch Heartbeats. Anwendern von Oracle RAC war es unverständlich, dass dieses Produkt nicht einfach innerhalb eines Containers installiert und betrieben werden konnte. Allerdings muss man wissen, dass das Oracle CRS, die sogenannte Oracle Clusterware - eine Betriebssystem-neutrale Clusterschicht - Rechte benötigt, die das ursprüngliche Sicherheitskonzept der Solaris Container nicht in eine non-global Zone delegierte. Seit Solaris 10 5/08 ist es allerdings möglich, auch innerhalb einer Zone Netzwerkschnittstellen so zu verwalten, dass Oracle CRS dort betrieben werden kann. Das Ziel, eine Clusterumgebung zur Verfügung zu stellen, die keinerlei Anpassungen der Anwendungen notwendig macht, wurde erreicht. Auch Oracle RAC kann so wie in einer normalen Solaris-Instanz installiert und konfiguriert werden. Die Zertifizierung von Oracle RAC in einem Solaris Container Cluster ist derzeit (Juni 2009) noch nicht abgeschlossen. Allerdings bietet Sun Microsystems für eine solche Konstruktion Support an. Eine Installation von Oracle RAC mit CRS in einem Solaris Container ist auch ohne ein Zonencluster möglich, allerdings ebenfalls noch nicht zertifiziert. Der Nachteil einer solchen Konfiguration ist, dass ausschließlich exclusive-IP Konfigurationen verwendet werden können, welche die Anzahl der notwendigen Netzwerkschnittstellen unnötig erhöht.

8 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009 2.2. Virtualisierungstechnologien im Vergleich [ug] Die herkömmlichen RZ Technologien umfassen • Applikationen auf separaten Rechnern Hierzu gehören auch mehrstufige Architekturen mit Firewall, Loadbalancing, Web- und Applikations-Server und Datenbanken. • Applikationen auf einem Rechnerverbund Darunter fallen verteilte Applikationen und Job-Systeme. • Viele Applikationen auf einem großen Rechner

Die Separierung von Applikationen auf Rechnern vereinfacht die Installation der Applikationen, erhöht jedoch die Verwaltungskosten, da die Betriebssysteme mehrfach installiert und separat gepflegt werden müssen. Weiterhin sind die Rechner in der Regel schlecht ausgelastet (< 30 %). Verteilte Applikationen sind Applikationen die auf mehreren Rechnern gleichzeitig laufen und via Netzwerk (TCP/IP, Infiniband, Myrinet, ...) kommunizieren (MPP Rechner, MPI-Software, ...). Bei Job-Systemen wird in der Vorbereitung die Berechnung in abgeschlossene Teilberechnungen mit Abhängigkeiten zerlegt und von einem Job-Scheduler auf mehreren Rechnern ausgeführt, der auch den Transport der Daten übernimmt (Grid Verbund). Beide Varianten erfordern eine hohe Netzwerkleistung und angepasste Applikationen und machen nur in Bereichen Sinn, in denen die Applikationen bereits angepasst sind. Die Anpassung ist ein größerer Schritt und nur selten für heute verfügbare Standard-Applikationen durchgeführt. In Zukunft kann diese Technologie daher mit der Anpassung der Applikationen interessanter werden. Viele Applikationen in einem Rechner einzusetzen ist die Art und Weise, in der heute Mainframes und größere Unix Systeme betrieben werden. Die Vorteile liegen in der besseren Auslastung der Systeme (mehrere Applikationen) und geringeren Zahl von zu wartenden Betriebssystem-Installationen. Daher ist gerade diese Variante für die Konsolidierung im Rechenzentrum interessant. Die Herausforderungen bestehen darin, für die Applikationen eine Umgebung zu schaffen, in der die Applikationen zwar unabhängig ablaufen können (Separation), aber doch Ressourcen miteinander teilen (Sharing), um Kosten zu sparen. Die im einzelnen interessanten Bereiche sind: • Separation. Wie weit sind die Environments der Applikationen getrennt? • Applikation. Wie fügt sich die Applikation in das Environment ein? • Auswirkungen auf die SW-Maintenance • Auswirkungen auf die HW-Maintenance • Delegation: Können Administrations-Tätigkeiten an das Environment delegiert werden? • Skalierung der Environments? • Overhead der Virtualisierungstechnologie? • Kann man unterschiedliche OS-Versionen in den Environments benutzen? Dazu wurden verschiedene Techniken zur Virtualisierung entwickelt, die im folgenden vorgestellt werden.

Vergleiche dazu auch: http://en.wikipedia.org/wiki/Virtualization

9 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009

2.2.1. Domains/physikalische Partitionen [ug] Ein Rechner kann durch Konfiguration in Teil-Rechner (Domain, Partition) zerlegt werden. Die Domains sind fast vollständig physikalisch getrennt, da die elektrischen Verbindungen abgeschaltet werden. Gemeinsam benutzte Teile sind entweder sehr ausfallsicher (Gehäuse) oder redundant aufgebaut (Service-Prozessor, Netzteile). Vorteile: • Separation: Die Applikationen sind gut voneinander separiert, ein gegenseitiger Einfluss über das OS oder ausgefallene gemeinsame Hardware ist nicht möglich. • Applikation: Alle Applikationen sind lauffähig, sofern sie nur im Basis-Betriebssystem lauffähig sind. • Skalierbarkeit: Die Leistung einer Virtualisierungsinstanz (hier eine Domain) lässt sich bei einigen Implementierungen im laufenden Betrieb ändern (Dynamic Reconfiguration), indem HW- Ressourcen zwischen Domains verschoben werden. • HW-Maintenance: Bei Ausfall einer Komponente kann bei entsprechender Auslegung der Domain die Applikation trotzdem betrieben werden. Reparaturen sind durch Dynamic Reconfiguration im laufenden Betrieb möglich (bei redundanter Auslegung). Nur um Total- Ausfälle abzufangen, muss noch ein Cluster eingerichtet werden (Stromversorgung, Brand des Gehäuses, Ausfall des RZ, Software-Fehler). • OS-Versionen: Unterschiedliche Betriebssysteme/Versionen sind möglich. Nachteile: • OS-Maintenance: Jede Maschine muss separat administriert werden. OS-Installation, Patches und die Umsetzung Firmen-interner Standards müssen für jede Maschine separat erfolgen. • Delegation: Die für die Applikation / den Service zuständige Abteilung braucht für einen Teil der Ablaufsteuerung root-Rechte oder muss mit dem Rechner-Betrieb bezüglich Änderungen kommunizieren. Das kann die Sicherheit beeinträchtigen oder aufwändig werden/länger dauern. • Overhead: Jede Maschine hat den Overhead eines eigenen Betriebssystems. Sun bietet Domains in den High-End Servern SunFire E20K, E25K , den Midrange Servern SunFire E2900, E4900, E6900 und den Sun SPARC Enterprise M4000, M5000, M8000 und M9000 an.

App 1 App 2 App 3 App

OS

Server

Zeichnung 2: [dd] Domains/Physikalische Domains

Diese Virtualisierungstechnik wird von einigen Herstellern zur Verfügung gestellt (Sun Dynamic System Domains, Fujitsu Partitions, HP nPars). HW-Support und (wenig) OS-Support sind notwendig.

10 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009

2.2.2. Logische Partitionen [ug] Auf der Hardware eines Rechners läuft ein minimales Betriebssystem, der , der die Schnittstelle zwischen Hardware und OS des Rechners virtualisiert. Auf den entstehenden sogenannten virtuellen Maschinen lässt sich jeweils ein eigenes Betriebssystem (Gast- Betriebssystem) installieren. Bei einigen Implementierungen läuft der Hypervisor auch als normales Applikationsprogramm, was jedoch erhöhten Overhead bedeutet. In der Regel werden durch Emulation aus den realen Devices virtuelle Devices erzeugt; reale und virtuelle Devices werden den logischen Partitionen durch Konfiguration zugeteilt. Vorteile: • Applikation: Alle Applikationen des Gast-Betriebssystem sind lauffähig. • Skalierbarkeit: Die Leistung einer logischen Partition lässt sich teilweise im laufenden Betrieb ändern, wenn das OS und der Hypervisor es zulassen. • Separation: Die Applikationen sind voneinander separiert, ein direkter gegenseitiger Einfluss über das OS ist nicht möglich. • OS-Versionen: Unterschiedliche Betriebssysteme/Versionen sind möglich. Nachteile: • HW-Maintenance: Bei Ausfall einer gemeinsam genutzten Komponente sind ggf. viele oder alle logischen Partitionen betroffen. Es wird jedoch versucht, durch vorbeugende Analyse Anzeichen eines zukünftigen Ausfalls zu erkennen, um vorab die Fehler auszugrenzen. • Separation: Die Applikationen können sich über gemeinsam genutzte Hardware gegenseitig beeinflussen. Ein Beispiel ist hier das virtuelle Netzwerk, da der Hypervisor einen Switch emulieren muss. Auch die virtuellen Platten, die zusammen auf einer realen Platte liegen und sich dort gegenseitig den Schreib-/Lese-Kopf „wegziehen“, sind ein Beispiel für dieses Verhalten. Um das zu vermeiden, kann man reale Netzwerk-Interfaces und/oder dedizierte Platten verwenden, was den Aufwand zur Nutzung von logischen Partitionen allerdings erhöht. • OS-Maintenance: Jede Partition muss separat administriert werden. OS-Installation, Patches und die Umsetzung Firmen-interner Standards müssen für jede Partition separat erfolgen. • Delegation: Wenn die für die Applikation / den Service zuständige Abteilung root-Rechte benötigt, dann sind alle Aspekte des Betriebssystems in der logischen Partition administrierbar. Das kann die Sicherheit beeinträchtigen. • Overhead: Jede logische Partition hat den Overhead eines eigenen Betriebssystems, insbesondere wird der Hauptspeicherbedarf der einzelnen Systeme beibehalten.

App 1 App 2 App 3 App

OS

Server

Zeichnung 3: [dd] Logische Partitionen

Zu logischer Partitionierung gehören das IBM VM-Betriebssystem, IBM LPARs auf z/OS und AIX, HP vPars, sowie VMware und . Sun bietet Logical Domains an (SPARC: seit Solaris 10 11/06) sowie Sun xVM VirtualBox (x86- und x64-Architekturen. Der Sun xVM-Server befindet sich in Zusammenarbeit mit der XEN-Community für x64-Architekturen in der Entwicklung. Der Virtualisierungsteil (xVM-Hypervisor) kann seit OpenSolaris 2009.06 bereits evaluiert werden.

11 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009

2.2.3. Container (Solaris Zonen) in einem OS [ug] In einer Betriebssystem-Installation werden voneinander unabhängige Ausführungsumgebungen für Anwendungen und Dienste geschaffen. Der Kernel wird mandantenfähig: er ist nur einmal da, erscheint aber jeder Zone als wäre er exklusiv zugeordnet. Die Separation wird implementiert, indem der Zugriff auf Ressourcen eingeschränkt wird, wie z.B. die Sichtbarkeit der Prozesse (modifiziertes procfs), Nutzbarkeit der Devices (modifiziertes devfs), die Sichtbarkeit des Dateibaumes (wie bei chroot). Vorteile: • Applikation: Alle Applikationen sind lauffähig, sofern sie keine eigenen Treiber benutzen oder sonst systemnahe Features nutzen. Eigene Treiber sind jedoch über Installation in der globalen Zone nutzbar. • Skalierbarkeit: Die Leistung eines Containers ist konfigurierbar (mit Ressource Management, Prozessorsets und CPU-Caps). • Separation: Die Applikationen sind voneinander separiert, ein direkter gegenseitiger Einfluss über das OS ist nicht möglich. • OS-Maintenance: Nur an zentraler Stelle (in der globalen Zone) muss die OS-Installation, Patches und Umsetzung Firmen-interner Standards erfolgen. • Delegation: Die für die Applikation / den Service zuständige Abteilung braucht für einen Teil der Ablaufsteuerung root-Rechte. Sie kann hier die root-Rechte in der Zone erhalten, ohne die anderen lokalen Zonen oder die globale Zone beeinträchtigen zu können. Die Zuweisung von Ressourcen ist allein der globalen Zone vorbehalten. • Overhead: Alle Prozesse lokaler Zonen sind aus Sicht der globalen Zone nur normale Applikationsprozesse. Der OS-Overhead (Memory Management, Scheduling, Kernel) und der Speicherbedarf für shared Objekte (Dateien, Programme, Libraries) entsteht nur einmal. Jede Zone hat zusätzlich nur eine kleine Zahl von Systemprozessen. Daher sind hunderte von Zonen auf einem 1-Prozessor-System möglich.

Nachteile: • HW-Maintenance: Bei Ausfall einer gemeinsam genutzten Komponente sind ggf. viele oder alle Zonen betroffen. Mit FMA (Fault Management Architecture) erkennt Solaris 10 Anzeichen eines zukünftigen Ausfalls und kann die betroffenen Komponenten (CPU, Memory, Bus-Systeme) im laufenden Betrieb deaktivieren bzw. benutzt stattdessen alternativ vorhandene Komponenten. Durch Einsatz von Cluster Software (Sun Cluster) kann die Verfügbarkeit der Applikation in der Zone verbessert werden (Solaris Container Cluster/ Solaris Container). • Separation: Die Applikationen können sich über gemeinsam genutzte Hardware gegenseitig beeinflussen. Der Einfluss kann bei Solaris mit Ressource Management und Netzwerk- Bandbreitenkontrolle minimiert werden. • OS-Versionen: Unterschiedliche Betriebssysteme/Versionen sind nur mit Branded Zones möglich. Hierbei wird in einer Zone eine virtuelle Ablaufumgebung für ein anderes Betriebssystem erzeugt, der Kern der globalen Zone wird aber von den Branded Zones mitbenutzt.

App 1 App 2 App 3 App

BrandZ OS

Server

Zeichnung 4: [dd] Container (Solaris Zonen) in einem OS Implementierungen sind im freien BSD Betriebssystem die Jails, in Solaris die Zonen und im Linux das vserver Projekt. HW Voraussetzungen sind nicht erforderlich.

12 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009

2.2.4. Konsolidierung in einem Rechner [ug] Die Applikationen werden auf einem Rechner installiert und unter unterschiedlichen UserIDs benutzt. Das ist die Konsolidierung, die von Haus aus in den modernen Betriebssystemen möglich ist. Vorteile: • Applikation: Alle Applikationen sind lauffähig, sofern sie nur im Basis-Betriebssystem lauffähig sind und keine eigenen OS-Treiber nutzen. Einschränkungen gibt es allerdings dann, wenn unterschiedliche Versionen der Applikationen mit definiertem Install-Verzeichnis gebraucht werden oder zwei Instanzen die gleiche UserID brauchen (z.B. Oracle Instanzen) bzw. die Konfigurations-Dateien an den selben Stellen im Filesystem liegen. • Skalierbarkeit: Die Leistung einer Anwendung lässt sich online ändern. • OS-Maintenance: Nur für ein OS muss die OS-Installation, Patches und Umsetzung Firmen- interner Standards erfolgen. Das heißt mit dem Administrations-Aufwand für eine Maschine kann man viele Applikationen betreiben. • Overhead: Der Overhead ist gering, da nur die Applikationsprozesse pro Applikation laufen müssen. Nachteile: • HW-Maintenance: Bei Ausfall einer gemeinsam genutzten Komponente sind ggf. viele oder alle Applikationen betroffen. • OS-Maintenance: Die Administration wird kompliziert, sobald Applikationen auf unterschiedliche Versionen einer Software basieren (z.B. Versionen für Oracle, Weblogic, , ...). Ohne genaue Dokumentation und Change-Management wird ein solches System schwer beherrschbar. Ein Fehler in der Dokumentation wird nicht sofort bemerkt, kann sich jedoch beim Upgrade (HW oder OS) später fatal auswirken. • Separation: Die Applikationen können sich über gemeinsam genutzte Hardware und das OS gegenseitig beeinflussen. Der Einfluss kann bei Solaris mit Ressource Management und Netzwerk-Bandbreitenkontrolle reduziert werden. • Delegation: Die für die Applikation / den Service zuständige Abteilung braucht für einen Teil der Ablaufsteuerung root-Rechte oder muss mit dem Rechner-Betrieb bezüglich Änderungen kommunizieren. Das kann daher die Sicherheit beeinträchtigen oder aufwändiger werden/länger dauern. • OS-Versionen: Unterschiedliche Betriebssysteme/Versionen sind nicht möglich.

App1 App 2 App 3 App

OS

Server

Zeichnung 5: [dd] Konsolidierung in einem Rechner

Diese Konsolidierung wird von vielen modernen Betriebssystemen ermöglicht die es erlauben, mehrere Software-Pakete zu installieren, ggf. auch die gleiche Software in unterschiedlichen Versionsständen.

13 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009

2.2.5. Zusammenfassung zu den Virtualisierungstechnologien [ug] Die diskutierten Virtualisierungstechnologien lassen sich in der folgenden Tabelle -im Vergleich zur Installation auf einem separaten Rechner- zusammenfassen.

Domains/ Logische Container Konsolidierung Separate Physikalische Partitionen (Solaris Zonen) in einem Rechner Partitionen in einem OS Rechner Separation + O + (Software) + (Software) - - (Hardware) - (Hardware) Applikation + + + + - SW-Maintenance - - - + O HW-Maintenance + + O O O Delegation - - - + - Skalierbarkeit O + O + + Overhead - - - + + OS-Versionen je eine mehrere mehrere eine eine Tabelle 2: [ug] Zusammenfassung zu den Virtualisierungstechnologien

Legende zur Bedeutung der Symbole: • + gut • O ist weder gut noch schlecht • - bedeutet: hat Nachteile

Die Separation ist bei einem eigenständigen Rechner natürlich am Besten, bei physikalischen Partitionen gibt es das gemeinsam genutzte Gehäuse (Netzteil, Brand), obwohl die Rechner unabhängig sind, währenddessen Lpars, LDom und Container nur in der OS-Umgebung separiert sind. Konsolidierung in einem Betriebssystem offenbart jeder Applikation das Sichtbare der anderen Applikationen. In den anderen Fällen sind die Applikationen separiert. SW-Maintenance kann erst mit Zonen und Konsolidierung in einem Rechner gemeinsam durchgeführt werden. Die anderen Technologien erfordern mehrfache Maintenance. HW-Maintenance auf der Maschine einer Applikation ist nur bei Domains oder separaten Rechnern ohne Beeinträchtigung anderer Applikationen machbar, es sei denn, man nutzt bewegliche Lpars/LDom oder setzt Cluster Technologien oder Flying Zones ein. Die Delegation von Teilen der Administrations-Aufgaben ist nur bei Containern vordefiniert. Alle anderen Technologien erfordern genaue Definition der Aufgaben und dedizierte Zuordnung von Rollen. Das ist kostenintensiv und aufwändig. Die Skalierbarkeit ist bei separaten Rechnern und Lpars auf die Basis der Hardware limitiert (definierte feste Bus-Leistung), währenddessen Domains durch weitere Hardware in der Leistung angepasst werden können (Crossbar). Container und Konsolidierungen laufen ohne Anpassung auf größeren Rechnern. Weitere Anteile können durch Verschiebung von weiteren Containern auf diesen Rechner genutzt werden. Der Overhead ist bei separaten Rechnern, physikalischer und logischer Partitionierung höher, da je Applikation ein Betriebssystem mit CPU und Memory-Anforderungen läuft. Container und Konsolidierung auf einem Rechner teilen sich ein Betriebssystem und sind daher erheblich sparsamer im Verbrauch von Ressourcen. Der Effekt ist umso deutlicher, je geringer der Ressourcen-Bedarf einer Applikation ist. Die OS-Version jeder Betriebssystem-Installation muss separat gepflegt werden. Das bedeutet Aufwand. Daher sind bei separaten Rechnern sowie physikalischer und logischer Virtualisierung höhere Aufwände zu betreiben, als bei Containern oder Konsolidierung auf einem Rechner. Die multiplen OS-Versionen bedeuten aber auch die Möglichkeit, separate Stände des OS zu nutzen, sofern die Applikationen es erfordern. Daher ist hier keine Wertung vorgenommen, da die Wertung vom Einsatzzweck im Rechenzentrum abhängt. Man kann den Aufwand mehrerer OS-Instanzen verringern, indem Management-Software wie z.B. das Sun xVM OpsCenter eingesetzt wird, was selber wieder Investitionen erfordert.

14 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 2. Allgemein Stand: 30.11.2009

Physikalische Logische OS Ressource Virtualisierung Virtualisierung Virtualisierung Management (Domains/ (Logische (Container (Konsolidierung in Physikalische Partitionen) - Solaris Zonen - einem Rechner) Partitionen) in einem OS)

App

OS

HW

HW-Fehler Containment

Eigenes OS / separater Speicher OS und Speicher Sharing

Isolation des OS-Environments Sharing des OS- Environments

Zeichnung 6: [dd] Vergleich von Virtualisierungstechnologien

15 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3. Anwendungsfälle

Das folgende Kapitel diskutiert verschiedene Anwendungsfälle für Solaris Container und bewertet diese. 3.1. Grid Computing mit Isolation Anforderung [ug] Im Unternehmen besteht Bedarf eine gewisse Menge Rechenarbeit im Hintergrund unter Nutzung der freien Zyklen der bestehenden Rechner durchzuführen. Dafür ist Grid Software wie Sun N1 Grid Engine geeignet. Jedoch soll den Prozessen die dann im Grid laufen, die Sicht auf die anderen Prozesse des Systems versperrt werden. Lösung [ug] Auf den Rechnern mit freier Kapazität wird Sun Gridware in jeweils einer Zone installiert: • Sparse-root Zones werden benutzt ( 4.1.1 Sparse-root Zonen ). • Software und Daten werden per NFS in der globalen Zone installiert. • Sun Grid wird in der lokalen Zone installiert. • Automatische Erzeugung der Zone ( 5.1.14 Automatische Schnell-Installation von Zonen ) • Software-Installation per lofi von der globalen Zone ( 5.3.3. Softwareinstallation per mount ) Bewertung [ug] Dieser Anwendungsfall hat die folgenden Eigenschaften: • Die Rechner können zu den definierten Zeiten die freien Kapazitäten nutzen. • Die Daten der anderen Applikationen bleiben vor Einsicht geschützt. Dadurch erhöht sich oft die Bereitschaft der Applikations-Zuständigen, die Rechner dafür zur Verfügung zu stellen. • Die Applikations-Abteilung kann die freien Kapazitäten den Grid-Nutzern „verkaufen“. Über alles werden Rechner-Kapazitäten eingespart.

Grid Netzwerk

Grid Grid Knoten App 1 App 2 Knoten App 3 App 4 1 2 Grid Knoten 3 Grid Knoten 4 Globale Zone Globale Zone System 1 System 2

Zeichnung 7: [dd] Anwendungsfall Grid Computing mit Isolation

16 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.2. Kleine Webserver Anforderung [ug] Eine der folgenden Situationen besteht: • Ein Internet Service Provider (ISP) möchte ohne große Kosten die Möglichkeit haben, Webserver automatisch aufzusetzen. Der ISP will auf Basis dieser Technologie ein günstiges Angebot für Webserver mit root-Zugang erstellen. • Ein Rechenzentrum einer größeren Firma hat aus vielen Abteilungen Anforderungen für interne Webserver zum Informationsaustausch zwischen den Abteilungen. Das Interesse der Kunden ist, möglichst einfach ohne viele Regularien und Absprachen, Web- Content abzulegen (wenig Aufwand). Daher strebt die Fachabteilung einen Webserver an, auf dem sonst niemand sonst arbeitet. Das Interesse des Rechenzentrums ist, die Administrationskosten niedrig zu halten. Daher soll es möglichst kein eigener Rechner sein, zumal auch der Datenverkehr wahrscheinlich klein sein wird und keinen eigenen Rechner rechtfertigt. Lösung [ug] Die Webserver werden durch automatisch installierte Zonen realisiert. Im einzelnen werden die folgenden Details verwendet: • Sparse-root Zones, das heißt die Zonen erben möglichst alles von der globalen Zone (4.1.1 Sparse-root Zonen). • Das Softwareverzeichnis des Webservers, z.B. /opt/webserver wird nicht vererbt (inherit-pkg-dir), um verschiedene Web-Server Versionen zu ermöglichen. • Automatische Erzeugung einer Zone per Script • Automatische Systemkonfiguration in der Zone mit sysidcfg • Automatische IP-Adressenverwaltung • Option: Automatische Schnell-Installation einer Zone • Option: Applikations-Administrator mit root-Zugang • Option: Software-Installation per mount Bewertung [ug] Dieser Anwendungsfall hat die folgenden Eigenschaften. • Die Betriebsabteilung hat geringe Aufwände bei der Erzeugung der Zonen. • Da die erwartete Last sehr klein ist, ist der Konsolidierungseffekt sehr groß, da nur die aktiven Prozesse in der Zone Ressourcen brauchen. • Die Nutzer der automatisch erzeugten Web-Server in den Zonen haben die Freiheit, diverse verschiedene Versionen zu nutzen, ohne sich umgewöhnen zu müssen. Das heißt, ihre Kosten sind gering und es entsteht kaum Schulungsbedarf. • Die Webserver können mit den Standardports und den voreingestellten IP-Adressen der Container arbeiten - es sind keine besonderen Konfigurationen nötig, wie sonst, wenn mehrere Webserver auf einem System betrieben werden sollen.

Webserver Webserver Webserver 1 2 3

Globale Zone System 1

Zeichnung 8: [dd] Anwendungsfall kleine Webserver

17 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.3. Multi-Netzwerk Konsolidierung Anforderung [dd] Die folgende Situation besteht: • Eine Firma verfügt über mehrere unterschiedliche Netzwerke, die entweder in mehreren Stufen durch Firewalls oder durch Router getrennt sind. In den einzelnen Netzwerken laufen Anwendungen. Man möchte sehr einfach Anwendungen aus verschiedenen Netzwerken oder Security-Bereichen gemeinsam auf einem physikalischen System benutzen, da die Anwendungen nicht jeweils ein komplettes System auslasten. Lösung [dd] Die einzelnen Anwendungen werden jeweils in eine Zone installiert. Zonen werden nach bestimmten Kriterien (Redundanz, ähnliche Anwendung, Lastverhalten, ...) zusammen auf physikalische Server gruppiert. Das Routing zwischen den Zonen ist ausgeschaltet, um die Netzwerke zu trennen. Im einzelnen werden die folgenden Details verwendet: • Erzeugung von Zonen • Zonen als Laufzeitumgebung für je eine Anwendung • Das Routing der globalen Zone auf den Interfaces ist ausgeschaltet, damit Zonen sich nicht gegenseitig erreichen können. D.h. die Zonen erreichen jeweils nur Adressen in ihrem Netzwerk • IP Instanzen benutzen Bewertung [dd] Dieser Anwendungsfall hat die folgenden Eigenschaften. • Die Netzwerkstruktur vereinfacht sich durch die Einsparung von Routen und Routern. • Die Anzahl benötigter Systeme verringert sich. • Anwendungen können nach neuen Gesichtspunkten geordnet werden, z.B. alle Web-Server auf einen physikalischen Server bzw. für Webserver werden z.B. T2000 benutzt, für Proxy Server werden T1000 benutzt, für alle Datenbanken UltraSPARC IV+ Systeme, etc. • Die globale Zone kann als zentrale Administrationsinstanz aller Zonen eines Systems benutzt werden. Über die globalen Zonen kann ein separates Administrationsnetz gelegt werden. • Die Administration der Anwendungen liegt innerhalb der Zone bei den Anwendungsadministratoren. Werden gleiche Anwendungen auf Systemen zusammen gruppiert, kann ein Anwendungsadministrator aus der globalen Zone heraus alle Anwendungen in den Zonen einfacher administrieren oder durch die Nutzung von Sparse-root Zones die Administration vereinfachen. Gateway/Router/ FireWall

Netzwerk C Netzwerk A Netzwerk B

App A1 App A2 App B App A1' App A3 App B' App C App C App C

Globale Zone Globale Zone Globale Zone System 1 System 2 System 3

Zeichnung 9: [dd] Anwendungsfall: Multi-Netzwerk Konsolidierung

18 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.4. Multi-Netzwerk Monitoring Anforderung [dd] Die folgende Situation besteht: • Eine Firma verfügt über mehrere unterschiedliche Netzwerke, die entweder in mehreren Stufen durch Firewalls oder durch Router getrennt sind. In den einzelnen Netzwerken sind verschiedene Rechner installiert. Die Administration soll vereinfacht werden und man möchte von einer zentralen Stelle aus direkt in alle Netzwerke „hineinschauen“ und administrieren können, ohne die Netzwerke mit Routing verbinden zu müssen. Lösung [dd] Es wird ein zentraler Monitoring- und Administrator-Server installiert. Auf diesem Server werden mehrere Zonen erzeugt, die in jedes Netzwerk eine Netzwerkverbindung haben. Aus den Zonen erfolgt das Monitoring oder die Administration der Rechner der einzelnen Netzwerke. Im Einzelnen werden die folgenden Details verwendet: • Sparse-root Zones, das heißt die Zonen erben möglichst alles von der globalen Zone • Alle Zonen verwenden die selben Monitoring- und Administrationstools • Monitoring-Daten werden in zwischen Zonen gemeinsam genutzte Filesysteme abgelegt • Die Daten können aus einer lokalen Zone oder aus der globalen Zone heraus zentral ausgewertet werden. • Von einer zentralen Stelle aus (die globale Zone) können zentrale Konfigurationsdateien über die Zonen an alle Systeme in den Netzwerken direkt verteilt werden. Umständliche Wege über Router oder Firewalls entfallen. • Das Routing zwischen den Zonen muss abgeschaltet sein. • Option: IP Instanzen benutzen Bewertung [dd] Dieser Anwendungsfall hat die folgenden Eigenschaften. • Die Betriebsabteilung hat geringe Aufwände bei der Erzeugung der Zonen. • Der Administrationsaufwand sinkt für Systeme in den Netzwerken, da keine mehrfachen Logins über Router oder Firewalls hinweg ausgeführt werden müssen. • Es kann ein Single-Point-of-Administration geschaffen werden. • Entlastung der Router und Firewalls von Netzlast und zusätzlichen Konfigurationen. • Nutzung einheitlicher Überwachungswerkzeuge. • Nutzung einheitlicher Konfigurationen wird vereinfacht.

Netzwerk C Netzwerk D Netzwerk B Netzwerk E

Monitor Monitor Monirot Monitor Monitor Monirot Netzwerk A A B C D E F Netzwerk F

Globale Zone System 1

Zeichnung 10: [dd] Anwendungsfall Multi-Netzwerk Monitoring

19 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.5. Multi-Netzwerk Backup Anforderung [dd] Die folgende Situation besteht: • Eine Firma verfügt über mehrere unterschiedliche Netzwerke, die entweder in mehreren Stufen durch Firewalls oder durch Router getrennt sind. In den einzelnen Netzwerken sind verschiedene Rechner installiert. Das Backup soll vereinfacht werden, indem von einer Stelle aus das direkte Backup der Systeme in den einzelnen Netzwerken durchgeführt werden kann, ohne die Netzwerke mit Routing verbinden zu müssen Lösung [dd] Es wird ein Server mit Backup-Serversoftware installiert. Auf diesem Server werden mehrere Zonen erzeugt, die in jedes Netzwerk eine Netzwerkverbindung haben. In den Zonen werden Backup- Clients gestartet, die mit dem Backup-Server in der globalen Zone über das interne Netzwerk kommunizieren oder als Backup-Server direkt auf ein verfügbares Backup-Gerät schreiben. Im Einzelnen werden die folgenden Details verwendet: • Sparse-root Zones, das heißt die Zonen erben möglichst alles von der globalen Zone. • Die Backup-Client oder -Server Software ist für jede Zone separat installiert. • Bereitstellung eines Gerätes aus der globalen Zone an eine lokale Zone. • Netzwerksetup zur Verbindung von der globalen mit der lokalen Zone Bewertung [dd] Dieser Anwendungsfall hat die folgenden Eigenschaften. • Die Betriebsabteilung hat geringe Aufwände bei der Erzeugung der Zonen. • Backup und Restore kann zentral von einer Stelle aus organisiert und durchgeführt werden. • Durch direktes Backup können höhere Backup-Geschwindigkeiten erreicht werden. Router oder Firewalls werden nicht durch Backup-Daten belastet. • U.u. Einsparung von Lizenzkosten für Backup-Software. • Sharing von Backup-Hardware zwischen Abteilungen und Netzwerken.

Bisher hat sich leider gezeigt, dass die Softwarehersteller Backup-Server Software noch nicht für die Benutzung in Zonen freigegeben haben. So ist also dieser Anwendungsfall nur bedingt einsetzbar. Backup-Clients sind vereinzelt bereits zur Benutzung in Zonen freigegeben.

Netzwerk B

Backup Backup Backup Netzwerk A Client Client Client Netzwerk C A B C

Globale Zone System 1

Zeichnung 11: [dd] Anwendungsfall Multi-Netzwerk Backup

20 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.6. Konsolidierung Entwicklung/Test/Integration/Produktion Anforderung [ug] Zu einer Applikation, die in Produktion ist, existieren in der Regel noch weitere Systeme, die die gleiche Applikation tragen: • Entwicklungssysteme • Testsysteme • Integrationssysteme ggf. mit Simulation der Applikationsumgebung • Disaster-Recovery-Systeme Lösung [ug] Die verschiedenen Systeme können auf einem Rechner in Zonen realisiert werden. Die Details: • Sparse-root Zones, das heißt die Zonen erben möglichst alles von der globalen Zone. • Option: Ressource Pools mit eigenem Prozessor-Set für die Produktion • Option: Applikations-Administrator mit root-Zugang • Option: Software-Installation per mount • Option: OS Release Upgrade per Flash-Image Bewertung [ug] Dieser Anwendungsfall hat die folgenden Eigenschaften: • Es sind weniger Rechner insgesamt zu betreiben. Daher können Einsparungen bei Platz, Stromverbrauch und Klimatisierung erzielt werden. • Die Anwendungen können auf genau dem Environment getestet werden, auf dem sie auch später ablaufen sollen. • Ein Umstieg auf eine neue Software-Version in der Produktion ist einfach durch Umleiten der Last auf die Zone mit der neuen Version möglich. Eine Installation nach Test ist nicht erforderlich.

Entwick- Test Produktion Integration lung

Globale Zone System

Zeichnung 12: [dd] Anwendungsfall Konsolidierung Entwicklung/Test/Integration/Produktion

21 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.7. Konsolidierung von Testsystemen Anforderung [ug] Für Tests von Software und Applikationen existieren im RZ-Environment viele Test-Systeme die immer nur bei Tests benutzt werden. Größtenteils werden sie nur für qualitative Tests benutzt, wobei die Systeme nicht wie bei Lasttests belastet werden. Ein Neu-Installieren der Testsysteme je nach benötigtem Test kommt allerdings nicht in Frage, weil man ohne Wartezeit auf das Environment gehen können will, genau so wie es in der Produktion läuft. Die Testsysteme sind daher sehr schlecht ausgelastet. Lösung [ug] Die Testsysteme werden durch Zonen auf einem größeren Server realisiert. Die Details: • Sparse-root Zones / Whole-root Zones, je nach Bedarf. • Filesystem Entscheidungen analog zum Produktionssystem • Option: Ressource Management mit Prozessor Sets für parallel ablaufende Tests • Option: Automatische Erzeugung der Zone • Option: Software-Installation per mount • Option: Move der Zone zwischen Rechnern • Option: Automatische Schnell-Installation einer Zone Bewertung [ug] Dieser Anwendungsfall hat die folgenden Eigenschaften: • Die Betriebsabteilung benötigt viel weniger Rechner, die als Testsysteme dienen. Es müssen viel weniger Installationen durchgeführt werden. • Teure Systeme für Lasttests müssen nur einmal und nicht für jede Applikation angeschafft werden. Lasttests auf den mittels Zonen gemeinsam genutzten Maschinen müssen jedoch abgesprochen werden (Betrieb). • Die Anwender haben die Testinstallation immer im Zugriff, jedenfalls qualitativ; gegebenenfalls nicht mit der vollen Performance.

Test Test Test Test Test A B C D E

Globale Zone System

Zeichnung 13: [dd] Anwendungsfall Konsolidierung von Testsystemen

22 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.8. Schulungssysteme Anforderung [ug] In Schulungs-Abteilungen müssen die Rechner häufig wieder neu aufgesetzt werden, die den Schulungsteilnehmern (auch Schüler/Studenten) zur Verfügung stehen. Lösung [ug] Die Schulungssysteme werden durch automatisch installierte Zonen realisiert: • Sparse-root Zones, das heißt die Zonen erben möglichst alles von der globalen Zone. • Automatische Erzeugung einer Zone per Script • Automatische Systemkonfiguration in der Zone mit sysidcfg • Automatische IP-Adressenverwaltung • Option: /opt ist nicht vererbt (inherit-pkg-dir), für die Schulung von Installationen • Option: Automatische Schnell-Installation einer Zone • Option: Applikations-Administrator mit root-Zugang • Option: Installation gemeinsamer Software per mount Bewertung [ug] Dieser Anwendungsfall hat die folgenden Eigenschaften: • Der Betrieb der Schulungsrechner ist extrem einfach, da die Zonen für die Schulung einfach für den nächsten Kurs neu erzeugt werden können. • Die Schulungsteilnehmer sind in der Zone selbst root, womit sie alle wesentlichen Administrationsfunktionen ohne Gefahr für das Gesamtsystem ausüben können. Die Neuinstallation des Rechners entfällt somit. • Der Schulungsleiter hat von der globalen Zone aus Einblick in die Arbeit der Schulungsteilnehmer. • Die Kosten für das Schulungssystem sinken daher drastisch.

Student Student Student Student Student Student A B C D E F

Globale Zone System

Zeichnung 14: [dd] Anwendungsfall Schulungssysteme

23 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.9. Server Konsolidierung Anforderung [ug] Im Rechenzentrum werden mehrere Applikationen betrieben, deren Auslastung zu gering ist (oft weit unter 50%). Die Rechner selber benötigen in der Regel Strom, Kühlung und Platz. Lösung [ug] Mehrere Anwendungen werden in Zonen auf einem Rechner konsolidiert. Die Details: • Dies kann in der Regel mit Sparse-root Zones erfolgen. • Genau eine Applikation pro Zone installieren. • Option: Software-Installation durch shared Directory • Option: Automatische Software Installation • Option: Ressource Management mit Ressource Pools • Option: Ressource Management mit Fair Share Scheduler • Option: Netzwerk Ressource Management mit IPQoS • Option: Hochverfügbarkeit durch Cluster • Option: Software-Installation per Provisioning Bewertung [ug] Dieser Anwendungsfall hat die folgenden Eigenschaften: • Die Betriebsabteilung hat geringere Kosten, da weniger Platz, Energie und Kühlung benötigt werden. • Die Anwendungsabteilung hat eine Kapselung der Applikation und genau definierte Schnittstellen. Die Verfügbarkeit der Applikation steigt.

App App App App App A B C D E

Ressource Pool 1 Ressource Pool 2

CPU1 CPU2 CPU3 CPU4 Globale Zone System CPU5

Zeichnung 15: [dd] Anwendungsfall Server Konsolidierung

24 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.10. Vertraulichkeit von Daten und Prozessen Anforderung [ug] Im Rechenzentrum laufen Applikationen auf verschiedenen Rechnern, weil • Bestimmte Abteilungen sicher sein wollen, dass die Daten und Prozesse nicht von anderen Abteilungen gesehen werden. • Services für verschiedene Kunden sollen konsolidiert werden. Die Kunden wünschen Vertraulichkeit der Daten und der Prozesse (die ggf. Rückschluss auf Geschäftsprozesse erlauben). Lösung [ug] Die Applikationen der Kunden werden in verschiedenen Zonen installiert: • Applikationen werden nur in lokalen Zonen installiert • Die Filesysteme/Devices mit den Daten der jeweiligen Kunden werden nur in den entsprechenden Zonen zur Verfügung gestellt. Damit ist die Vertraulichkeit der Daten auch ohne strenge Disziplin bei den Dateizugriffsrechten gewährleistet. • Option: Software-Installation in der Zone in ein nur dort vorhandenes lokales Filesystem oder ein nicht gemeinsam genutztes /opt . Bewertung [ug] Dieser Anwendungsfall hat die folgenden Eigenschaften: • Die Betriebsabteilung hat eine bessere Auslastung der Systeme. • Die Anwender / Kunden behalten die Vertraulichkeit. • Die Basis-Kosten sind geringer, wodurch der Service bei höherer Marge günstiger angeboten werden kann.

App App App App App A B C D E

Globale Zone System

Zeichnung 16: [dd] Anwendungsfall Vertraulichkeit von Daten und Prozessen

25 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.11. Testsysteme für Entwickler Anforderung [ug] Entwickler brauchen zum Ausprobieren ihrer Applikation Testsysteme. Häufig ist auch das Zusammenspiel von mehreren Rechnern zu testen. Die Ressourcen für die Installation der Testsysteme sind in der Regel limitiert. Da die Entwickler die meiste Zeit entwickeln, haben die Testsysteme eine geringe Auslastung. • Eine gemeinsames Benutzen der Testsysteme ist möglich, jedoch erhöht es die Dauer, bis der Test durchgeführt ist, da die Systeme neu installiert bzw. wiederhergestellt werden müssen. • Es ist nicht auszuschließen, dass es Zeitkonflikte gibt, wenn die Developer gleichzeitig auf die Systeme zugreifen wollen. • Backup/Restore bzw. Installation sind in der Regel in der Betriebsabteilung lokalisiert. Die herkömmliche Nutzung der Testsysteme erzeugt hier einigen Aufwand. Lösung [ug] Die Testsysteme der Developer werden mittels mittelgroßer Rechner und Zonen realisiert.. Die Details: • Sparse-root Zones / Whole-root Zones je nach Bedarf. • Daten liegen lokal • Automatische Erzeugung der Zone • Automatische Systemkonfiguration in der Zone mit sysidcfg • Automatische IP-Adressenverwaltung • Der Developer wird Applikations-Administrator mit root-Zugang • Zu testende Software wird lokal installiert. • Option: Software-Installation (teilweise) per mount Bewertung [ug] Dieser Anwendungsfall hat die folgenden Eigenschaften: • Die Betriebsabteilung hat viel weniger Testsysteme zu betreiben, jedes neue Testsystem braucht daher nur Plattenplatz und keinen eigenen Rechner mehr. • Das Erstellen der Testsysteme kann voll automatisiert werden, der Aufwand für die Betriebsabteilung ist daher viel geringer. • Die Developer können mehrere Testsysteme gleichzeitig bestehen lassen; nur die gerade gebrauchten müssen hochgefahren werden. Vergleich von Funktionalitäten in den Versionen ist ohne viel Aufwand möglich. • Um einen Test durchzuführen ist keine Wartezeit (f. Restore) oder Koordination (mit anderen Tests auf der Maschine) notwendig.

Ent- Entwickler Entwickler Entwickler Entwickler wickler A B C D E

Globale Zone System

Zeichnung 17: [dd] Anwendungsfall Developer Testsysteme

26 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.12. Solaris 8 und Solaris 9 Container für die Entwicklung Anforderung [ug] Es sind noch Systeme unter Solaris 8 oder Solaris 9 mit selbst entwickelter Software im Unternehmen in Betrieb und für diese Systeme muss es möglich sein, noch Entwicklung oder Fehlerbehebung von Software zu betreiben. • Betrieb von alten Systemen unter Solaris 8 oder Solaris 9 noch notwendig • Selten benutzte Entwicklungssysteme sind relativ teuer (laufende Wartung) • Migration der Entwicklung auf aktuelle Systeme garantiert nicht die Lauffähigkeit der entwickelten Software auf den Alt-Systemen.

Lösung [ug] Auf einem aktuellen System unter Solaris 10 werden Solaris 8 bzw. Solaris 9 Zonen mit installierter Entwicklungsumgebung für das entsprechende Betriebssystem eingerichtet. Die Details: • Branded Zones, d.h. in der Zone ist eine Umgebung eines älteren Solaris aktiv • Installation eines archivierten Altsystems • CPU Ressource Management auf Basis des Solaris Fair Share Scheduler • Memory Ressource Management

Bewertung [ug] Dieser Anwendungsfall hat die folgenden Eigenschaften: • Die Anwendungen werden mit der ursprünglichen Version betrieben und weiterentwickelt. Es ist keine kostenintensive Migration der Anwendung auf eine neue Version notwendig. • Die ursprüngliche Entwicklungssoftware kann weiter benutzt werden; es gibt keine Kompatibilitätsprobleme. • Es kann aktuelle Hardware mit Solaris 10 als Basis benutzt werden. • Die Environment-Kosten wie Strom und Kühlung sind geringer, die Leistung ist höher als bei einem alten Rechner. • Die weiterentwickelte Software kann sowohl auf einem System unter Solaris 8 oder Solaris 9 als auch in einem System in einer entsprechenden Branded Zone installiert und betrieben werden.

27 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.13. Solaris 8 und Solaris 9 Container als Revisionssysteme Anforderung [ug] Aus rechtlichen Gründen oder wegen Anforderung der Revision ist es notwendig, bestimmte Systeme unter Solaris 8 oder Solaris 9 über Jahre hinweg verfügbar zu haben. • Betrieb von alten Systemen unter Solaris 8 oder Solaris 9 wird teuer (Wartung). • Alte Hardware, teilweise außerhalb der Wartung. • Migration auf aktuellere Systeme ist teuer. • Migration auf aktuelles Betriebssystem/aktuelle Hardware erfordert neue Software-Version.

Lösung [ug] Die Altsysteme werden in Solaris 8 bzw. Solaris 9 Containern auf einem aktuellen Solaris 10 System betrieben. Die Details: • Branded Zones, d.h. in der Zone ist eine Umgebung eines älteren Solaris aktiv (Kochbuch) • Installation eines archivierten Altsystems • CPU Ressource Management auf Basis des Solaris Fair Share Scheduler • Memory Ressource Management • Applikations-Administrator / Zugang für Alt-System Administrator mit root-Zugang

28 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.14. Hosting für verschiedene Firmen auf einem Rechner Anforderung [ug] Ein Application Service Provider betreibt Systeme für verschiedene Firmen. Die Systeme sind nicht ausgelastet. Lösung [ug] Die Applikationen werden in Zonen auf einem Rechner konsolidiert. Die Details: • Getrennte Filesysteme für jede Zone • Option: Integration der Server in die Firmennetze per NAT • Option: Software-Installation per mount Bewertung [ug] Dieser Anwendungsfall hat die folgenden Eigenschaften: • Der Application Service Provider spart RZ-Platz, Energie und Kühlung. Er kann daher seine Dienstleistung günstiger anbieten. • Der Kunde des ASP kann die Dienstleistung günstiger einkaufen.

Firmen-Netz C

Firmen-Netz Firmen-Netz B D

Firmen-Netz Public Firmen-Netz A Netzwerk E

NAT-

Firma Firma Firma Firma Firma A B C D E

Globale Zone System

Zeichnung 18: [dd] Anwendungsfall Hosting für verschiedene Firmen auf einem Rechner

29 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.15. SAP Portale in Solaris Containern Anforderung [da] Der Betrieb von SAP Systemumgebungen wird stetig komplexer. Daraus ergeben sich: • Applikationsspezifische Anforderungen • Standardisierungsvorgaben • Einfache Kommandos und Scripte zur Basis-Administration • Automatisierungsmöglichkeit betriebsrelevanter Prozesse • Anforderungen zur Kostenreduzierung • Einfache Konsolidierungsmöglichkeiten durch Solaris Container • Softwarelizenzen (Virtualisierungstools, Volume Manager, Snapshot Technologien, ...) • Optimierung der Systemauslastung • Hochverfügbarkeitsanforderungen • Flexibilität durch verschiebbare Container • Erhöhte Datensicherheit • „Komplexe“ Kundenanforderungen • Klonen von SAP-Systemen ohne Downtime • Neue SAP Installationsumgebungen in Minuten • Minimieren / Optimieren von Upgrade-Zeiten • Versionierung von SAP Systemen Lösung [da] Betrachtet man aktuelle SAP Systemlandschaften, so stellt man fest, dass 70-80% der Systeme nicht produktive Systeme sind. Diese erfordern jedoch den größten Pflege- und Administrationsauf- wand und verursachen somit die meisten Kosten. Daher wurde für diese Systeme eine „Easy-Start“ Lösung erarbeitet, die in „Sun Solaris und SAP“ beschrieben wird: http://de.sun.com/servicessolutions/virtualization/ressourcen.jsp • Alle SAP Applikationen werden in Solaris 10 Containern auf Shared Storage betrieben • Whole-root Zones bieten dem SAP Betrieb die benötigte Flexibilität und Sicherheit • ZFS als Basis für die Containerimplementierung, zur Downtime-Minimierung für SAP Systeme • Ein Toolset, bestehend aus verschiedenen Scripten, ermöglicht den schnellen und einfachen Aufbau einer Virtualisierungslösung mit Solaris Containern und ZFS für SAP Systeme. Bewertung [da] Dieser Anwendungsfall hat die folgenden Eigenschaften. • Schnelle Einführung der Container und ZFS Technologie • Die Betriebsabteilung hat geringe Aufwände bei der Erzeugung der Zonen. • Großer Konsolidierungseffekt • Hohe Flexibilität

Zeichnung 19: [da] Anwendungsfall SAP-Portale in Solaris Containern

30 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.16. Upgrade- und Patchmanagement in einer virtuellen Betriebsumgebung Anforderung [da] Die Virtualisierung mittels Solaris Containern ermöglicht die Loslösung der Anwendung von der Hardware. Eine Anwendung kann so sehr einfach auf verschiedenen Servern betrieben werden. Der Rechenzentrumsbetrieb muss die Verfügbarkeit dieser Anwendungen durch geeignete Maßnahmen sicherstellen. Dies beinhaltet die Anforderungen an geplante Downtimes, aber auch die Anforderung zur Absicherung gegen ungeplante Downtimes. Geplante Downtimes sind für die Wartung jeder IT- Infrastruktur notwendig. Die weitaus meisten geplanten Downtimes werden für die Aktualisierung (Patchen) der Systeme benötigt. Lösungen, die nur den Schwerpunkt auf den Schwenk einer Anwendung von einer Maschine auf eine andere legen, gehen daher am eigentlichen Problem völlig vorbei. Viel wichtiger ist ein einfaches und automatisiertes Release Management für das gesamte Betriebssystem. Die Downtimes für das Aktualisieren der Applikation und die des Betriebssystems (OS) in einer virtualisierten Umgebung können daher unabhängig voneinander betrachtet werden. Lösung [da] Durch den Einsatz von Live Upgrade und Update-on-Attach in Verbindung mit ZFS ergeben sich für den Rechenzentrumsbetrieb die benötigten Voraussetzungen für ein effizientes Release Management. Das Einspielen eines Kernel-Patches für ein Betriebssystem bedeutet nicht mehr zwangsläufig auch eine Downtime der Applikation. Die Betriebssystem-Aktualisierung mittels Live Upgrade kann im laufenden Betrieb erfolgen. Die Aktivierung erfolgt zu einem späteren, planbaren Zeitpunkt, der in vielen Rechenzentren in den Service Level passt. Solaris Live Upgrade ist das optimale Verfahren, um einen Upgrade für ein solches „virtualisiertes“ System durchzuführen oder Patches einzuspielen. Das Verfahren zeichnet sich insbesondere durch den Einsatz von ZFS dadurch aus, dass die Länge des benötigten Wartungsfensters und damit die Downtime der Anwendungen auf dem System minimal ist. Dies bedeutet auch immer, dass alle auf dem System installierten Anwendungen gleichzeitig betroffen sind. Wenn mehrere Zeichnung 20: [da] Live Upgrade Anwendungen mit verschiedenen Wartungsfenstern zusammen auf einem System betrieben werden, kann ein Live Upgrade nicht durchgeführt werden. Mit der neuen Update-on-Attach Technologie für lokale Zonen steht daher ein weiterer Mechanismus in Solaris zur Verfügung, mit dem diese Aufgabenstellung gelöst werden kann. Er ermöglicht es, dem Betrieb einen Update eines inklusive der Anwendung geplant und innerhalb des für die Anwendung in den Service Level Agreements (SLAs) definierten Wartungszeitraums durchzuführen. Dabei geschieht der eigentliche Update durch einfaches Verschieben des Containers auf ein anderes System mit einer neueren Betriebssystemversion. Durch verschiebbare Container ist es auch möglich, eine Anwendung vor einem Live Upgrade „zu schützen“. Kann der Betrieb kein gemeinsames Wartungsfenster für die Anwendungen auf einem System finden, so können Einzelne, diese Anwendungen beinhaltende Container, auf andere Systeme mit der gleichen Betriebssystemversion verschoben werden. Dies Zeichnung 21: [da] Update-on-Attach geschieht geplant in dem jeweils verfügbaren Zeitfenster der Anwendung. Das Konzept wurde in einem WhitePaper u.a. unter folgendem Link veröffentlicht: http://wikis.sun.com/display/SAPonSun/Links+(to+SAP+and+or+Solaris+topics ) Bewertung [da] Dieser Anwendungsfall hat u.a. die folgenden Eigenschaften • Minimale Downtime erforderlich durch Live Upgrade & ZFS • Hohe Flexibilität und „Planbarkeit“ durch Update-on-Attach • Hohe Sicherheit durch „Rollback“ Möglichkeiten • Einfache Administration bzw. einfacher Betrieb • Technologien sind lizenzkostenfrei in Solaris 10 verfügbar

31 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.17. „Flying Zones“ - Service-orientierte Solaris Server Infrastruktur Anforderung [os] Eine hochverfügbare Virtualisierungsplattform zum Betrieb geschäftskritischer Anwendungen sollte folgenden Anforderungen genügen: • Aufbrechen der starren Abhängigkeit von Services und Hardware • Applikationsorientierte und Workload optimierte Ressourcenauslastung • keine physische Trennung der Produktions und Integrationsumgebungen • Katastrophenfall-Funktionalität Lösung [os] Die geschäftskritischen Anwendungen werden in Solaris 10 Zonen sowohl auf SPARC als auch auf X64-Systemen betrieben. Katastrophenfall-Funktionalität und das standortübergreifende Verschieben von Zonen erfolgt innerhalb eines Grid Cluster mit Hilfe des Sun Cluster 3.1. Die Details: • Sparse-root Zones, d.h. die Zonen erben möglichst alles von der globalen Zone. • Manuelles Verschieben von Zonen • Automatisches Failover der Zonen mit SC 3.1, Container Überwachung mit SC 3.1 oder optional Überwachung auf Ebene der Anwendungen durch Spezialwerkzeuge • CPU Ressource Management auf Basis des Solaris Fair Share Scheduler • Memory Ressource Management • Applikations-Administrator mit root-Zugang • Vermessung des Workloads und der Ressourcenanforderungen auf einem dedizierten Staging Server des Grid Clusters (Zeichnung) Bewertung [os] Dieser Anwendungsfall hat die folgenden Eigenschaften: • Bis zu 24 Grid Cluster (mit bis zu 8 Knoten) basierend auf SPARC oder Sun X64-Systemen. Mit bis zu 8 Zonen pro Solaris Instanz werden durchschnittliche CPU-Auslastungen von bis zu 60 % erreicht. • Konsolidierungsfaktor von aktuell durchschnittlich 5, d.h. es werden signifikante Einsparungen bei Platz, Stromverbrauch und Klimatisierung erzielt. • Deutliche Effizienzsteigerungen im Betrieb durch Einsatz einer standardisierten Umgebung (nur 1 OS-Typ, nur 2 Kernel- und CPU-Architekturen) • Staging Server als Teil des Grid Clusters ermöglicht das genaue Vermessen der Ressourcenanforderungen und eine detaillierte Kapazitätsplanung für das Grid Cluster. • Produktions- und Integrationsumgebungen werden gemischt und standortübergreifend betrieben. Im Katastrophenfall werden Integrationsumgebungen heruntergefahren und Produktionsumgebungen auf den Knoten des verbliebenen RZ gestartet.

Produk- Integra- Produk- Integra- Produk- Integra- Produk- Integra- Produk- Integra- Produk- Integra- Produk- Integra- tion tion tion tion tion tion tion tion tion tion tion tion tion tion RZ1 Globale Zone Globale Zone Globale Zone System System System

Staging Server Produk- Integra- Produk- Integra- Produk- Integra- Produk- Integra- Produk- Integra- Produk- Integra- tion tion tion tion tion tion tion tion tion tion tion tion RZ2 Globale Zone Globale Zone System System

Zeichnung 22: [os] Anwendungsfall „Flying Zones“ - Service Orientierte Solaris Server Infrastruktur

32 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 3. Anwendungsfälle Stand: 30.11.2009 3.18. Solaris Container Cluster (aka „zone cluster“) Anforderung [hs] • In einer virtualisierten Umgebung auf der Basis von Solaris Containern soll dem Administrator auch die Verwaltung „seiner“ Clusterumgebung übergeben werden • Die Verwendung von „capped“ Containern zur Minimierung von (Oracle) Lizenzkosten soll auf Oracle RAC (Real Application Cluster) Umgebungen ausgeweitet werden (Zertifizierung durch Oracle ist heute (Juni 2009) noch nicht abgeschlossen. Lösung [hs] Durch die Implementierung von Solaris Container Clustern werden virtuelle Cluster implementiert, bei denen Container die virtuellen Knoten des Clusters bilden. Der Administrator der globalen Sun Cluster Umgebung erschafft das virtuelle Cluster und weist ihm die notwendigen Ressourcen zu; so wie der globale Administrator die Ressourcen einzelnen Containern zuweist. Dazu gehören: • Hauptspeicher • CPUs • Dateisysteme • Netzwerkadressen Dem Administrator der lokalen Zonen, die die virtuellen Knoten des Container Clusters bilden, stehen nun alle administrativen Rechte zur Verfügung, hochverfügbare Dienste mit der Hilfe von Sun Cluster zu verwalten. Dazu gehören: • das Anlegen von Ressourcegruppen • das Anlegen von Ressourcen • das Starten und Stoppen von Ressourcegruppen und Ressourcen

Bewertung [hs] Dieser Anwendungsfall hat die folgenden Eigenschaften: • Durchgehende Virtualisierung bis auf die Clusterebene • Delegation der Administration auch des (virtuellen) Clusters an den Container-Administrator • Reduzierung von Lizenzkosten durch den Einsatz von „capped“ Containern auch im Oracle RAC Umfeld (Status der Zertifizierung bei Oracle noch „pending“)

33 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009 4. Best Practices

Das folgende Kapitel beschreibt Konzeptionen zur Umsetzung von Architekturen mit Solaris Containern. 4.1. Konzepte 4.1.1. Sparse-root Zonen [dd] Sparse-root Zonen werden Zonen genannt, an die die folgenden Verzeichnisse von der globalen Zone aus als inherit-pkg-dir "vererbt" werden: – /lib – /platform – /sbin – /usr • Von der OS- und Anwendungssoftware werden die Softwarepakete nur einmal zentral in der globalen Zone installiert und in allen lokalen Zonen als inherit-pkg-dir zur Verfügung gestellt. Ein inherit-pkg-dir ist ein readonly Loopback-Mount aus der globalen Zone an die lokale Zone. Die Packages erscheinen in der lokalen Zone durch entsprechende Einträge in der pkg-Datenbank installiert. • Die Softwarepflege (Update, Patching) von vererbten Packages erfolgt einfach zentral aus der globalen Zone heraus für alle installierten Zonen. • Durch die Vererbung werden Sparse-root Zonen erheblich schneller installiert und gepatched. • /opt wird nicht als inherit-pkg-dir eingerichtet. • Plattenplatz wird für inherit-pkg-dir nur einmal in der globalen Zone auf der Festplatte belegt und mehrfach in den Sparse-root Zonen benutzt. So wird durch eine Sparse-root Zone nur ein minimaler Plattenplatz benötigt, der je nach Architektur und Umfang der Softwareinstallation ca. 70 MB (x86/x64) oder 100MB (SPARC) beträgt. • Programme und Bibliotheken werden genau wie shared Memory nur einmal in den Hauptspeicher geladen. Da Sparse-root Zonen die gleichen Programme und Bibliotheken mit anderen Zonen teilen, wird der Platz im Hauptspeicher nur einmal belegt, unabhängig davon, wie häufig es aufgerufen worden ist und wie viele Zonen es benutzen. Das führt bei häufiger Benutzung der gleichen Software in unterschiedlichen Zonen zu einer Einsparung in benötigtem Hauptspeicher. • Sparse-root Zonen sind nicht dafür geeignet, unterschiedliche Softwarestände in den Zonen zu betreiben, wenn sich diese Software in einem inherit-pkg-dir befindet. Hierfür sind entweder Whole-root Zonen Konfigurationen zu verwenden oder die Software darf nicht in einem inherit-pkg-dir installiert werden. • Benötigen Installationsroutinen von Software Schreibrechte in einem inherit-pkg-dir der lokalen Zone, sollte eine Whole-root Zonenkonfiguration gewählt werden.

4.1.2. Whole-root Zonen [dd] Whole-root Zonen besitzen keine inherit-pkg-dir, d.h. bei der Erzeugung der Zone werden die Packages der globalen Zone in die lokale Zone kopiert. Ausgenommen hiervon sind Packages, die ausschließlich für die Benutzung in der globalen Zone vorgesehen sind (z.B. der Kernel und die Treiber) oder Packages, die mit pkgadd -G installiert wurden. • Whole-root Zonen haben eine nahezu vollständige Unabhängigkeit von der globalen Zone, da die Packages in Kopie vorliegen und separat modifiziert und gepatched werden können. • Der benötigte Platz für eine Whole-root Zone umfasst ca. den Bedarf einer kompletten Solaris Installation. • Die Erzeugung und das Patchen einer Whole-root Zone erfordert mehr Zeit. • Whole-root Zonen teilen sich bis auf den Kernel keine Programme und Bibliotheken untereinander oder mit der globalen Zone. Deshalb werden sie nochmals in den Hauptspeicher geladen, unabhängig davon, ob eine andere Zone eine eigene Kopie des gleichen Programms bereits in den Hauptspeicher geladen hat. Das führt zu einem erhöhten Bedarf an benötigten Hauptspeicher-Ressourcen durch Whole-root Zonen.

34 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009

4.1.3. Vergleich Sparse-root Zone und Whole-root Zone [dd] Aus den vorangegangenen Betrachtungen ergibt sich ein Vergleich von Sparse-root Zonen zu Whole-root Zonen. In den überwiegenden Fällen werden Sparse-root Zonen eingesetzt.

Sparse-root Zone Whole-root Zone Benötigter Plattenplatz 70 - 100 MB 2600 - 3600 MB Schnelle Erzeugung von Zonen + - Schnelles Patchen pro Zone + - Zentrale Softwareinstallation und Pflege + + Effektive Hauptspeichernutzung + - Unabhängige Installation, Modifikation und Patch von - + Betriebssystem-Teilen in der Zone Schreibmöglichkeit in Systemverzeichnissen - + Tabelle 3: [dd] Vergleich Sparse-root Zone und Whole-root Zone

Globale Sparse-root Whole-root Zone / / / /var /var /var /usr --> lofs inherit-pkg-dir /usr /lib --> lofs inherit-pkg-dir / /sbin --> lofs inherit-pkg-dir /sbinlib /platform --> lofs inherit-pkg-dir /platform ~ 3.6 GB ~100 MB ~3.6 GB Zeichnung 23: [dd] Schematischer Vergleich Sparse-root Zone und Whole-root Zone

4.1.4. Software in Zonen [dd] Für Anwender und Betreiber stellt sich die Frage, ob ihre Software in einer lokalen Zone läuft und von dem Softwarehersteller dafür auch zertifiziert ist. Anwendungen können nach http://developers.sun.com/solaris/articles/zone_app_qualif.html zur Nutzung in lokalen Zonen qualifiziert werden. Grundsätzlich gilt, dass Anwendungen, die mit normalen Benutzerprivilegien auskommen, auch in einer lokalen Zone laufen. Solche Software, die besondere Privilegien erfordert oder unter root-Rechten laufen muss, sollte gesondert betrachtet werden. Als kritisch sind hier vor allem der direkte Zugriff auf Geräte, Gerätetreiber, eigene Kernel-Module, ISM oder der direkte Zugriff auf das Netzwerk und Netzwerkmodule anzusehen. Details dazu sind unter „Bringing your application Into the Zone“ http://developers.sun.com/solaris/articles/application_in_zone.html nachzulesen. Wenn die Software grundsätzlich in einer lokalen Zone lauffähig ist, ist weiterhin der Installations- und Konfigurationsmechanismus der Anwendung zu betrachten. So muss darauf geachtet werden, dass während der Installation in lokalen Zonen keine Schreiboperationen in inherit-pkg-dir notwendig sind, z.B. bei einer Installation nach /usr oder /usr/local, wenn bei einer sparse-root Zone / usr ein inherit-pkg-dir ist.

35 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009

4.1.5. Softwareinstallationen in Solaris und Zonen [dd] Die Frage der Art und Weise der Softwareinstallation in Zonen bestimmt im hohen Maße die Verzeichnisstruktur der Zonen. Vor der Erzeugung der Zonen sollte diese Frage ausgiebig auch vor dem geplanten Einsatzzweck der Zone diskutiert werden. Generell sind die folgenden Formen der Softwareinstallation in Solaris möglich: • Softwareinstallation aus einem Archiv - im Folgenden als non-pkg-Software bezeichnet – Die Software wird per Installationsskript aus einem Archiv oder einem Verzeichnis durch Kopieren installiert. – Es sind keine Informationen über die installierte Software in der pkg-Datenbank enthalten. – Die Softwareverwaltung muss durch Werkzeuge der Software selbst oder durch einfache Solaris Programme wie cp, mv, rm, ... erfolgen. • Softwareinstallation als Package mit pkgadd - im Folgenden als pkg-Software bezeichnet – Die Software wird im pkg-Format verteilt und mit pkgadd installiert. – Die pkg-Informationen sind in der pkg-Datenbank unter /var/sadm/install vorhanden. – Zur pkg-Verwaltung wie Update, Patch, Remove und Zoneninstallation wird die pkg- Datenbank verwendet. Weiterhin muss entschieden werden, ob Software bei der Installation in alle Zonen (globale und lokale) oder nur eine bestimmte installiert werden soll und wer die Software installieren darf (die globale Zone oder die lokale Zone). Die folgenden Abschnitte beschreiben unterschiedliche Szenarien der Softwareinstallation im Zusammenhang mit der Nutzbarkeit der Software. 4.1.5.1. Softwareinstallation durch die globale Zone - Nutzung in allen Zonen • non-pkg-Software – Software A wird durch die globale Zone z.B. in /software/A installiert. – /software/A wird als Verzeichnis allen lokalen Zonen readonly zur Verfügung gestellt (z.B. zonecfg: add fs). – /software/A/cfg ist ein Softlink nach z.B. /opt/A/cfg und enthält die zonenabhängige Konfiguration. – /software/A/data ist ein Softlink nach z.B. /opt/A/data und enthält die zonenabhängigen Daten. – Die Software ist in allen Zonen nutzbar. – Nur die Konfiguration und die Daten der Software können von den Zonen modifiziert werden. • pkg-Software – Software P wird durch die globale Zone mit pkgadd in die globale und alle lokalen Zonen installiert. – In allen Zonen wird ein Eintrag in die pkg-Datenbank vorgenommen. – Wenn die zu installierende Datei sich nicht in einem inherit-pkg-dir befindet, wird die Datei in das entsprechende Verzeichnis kopiert. – Durch entsprechende Softlinks können die Konfigurations- und Datenbereiche von Software P in für die lokalen Zonen schreibbare Bereiche gelegt werden (siehe non-pkg- Software). – Die Software ist in allen Zonen nutzbar. – Nur die Konfiguration und die Daten der Software können von den Zonen modifiziert werden. 4.1.5.2. Softwareinstallation durch die globale Zone - Nutzung in einer lokalen Zone • non-pkg-Software – Software A wird durch die globale Zone z.B. in /zone-z/software/A installiert – /zone-z/software/A wird als Verzeichnis der lokalen Zone z schreibbar zur Verfügung gestellt (z.B. zonecfg: add fs) – Die Konfiguration und die Daten der Software A können von Zone z modifiziert werden, da der Bereich ausschließlich dieser Zone schreibbar zur Verfügung steht. • pkg-Software – Dieser Fall ist mit pkg-Software nicht zu empfehlen. In diesem Falle sollte die Software besser direkt in der lokalen Zone installiert werden (Installation durch die lokale Zone - Nutzung in der lokalen Zone).

36 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009 4.1.5.3. Softwareinstallation durch die globale Zone - Nutzung in der globalen Zone • non-pkg-Software – Software A wird durch die globale Zone z.B. in /software/A installiert – /software/A steht als Verzeichnis der globalen Zone schreibbar zur Verfügung. – Die Konfiguration und die Daten der Software A können durch die globale Zone modifiziert werden, da der Bereich ausschließlich dieser Zone schreibbar zur Verfügung steht. • pkg-Software – Software P wird in die globale Zone mit pkgadd -G installiert. – In der globalen Zone wird ein Eintrag in die pkg-Datenbank vorgenommen. – Die Software ist nur in der globalen Zone nutzbar. – Die Konfiguration und die Daten der Software sind von der globalen Zone aus modifizierbar.

4.1.5.4. Installation durch die lokale Zone - Nutzung in der lokalen Zone • non-pkg-Software – /software/A steht als Verzeichnis der Zone schreibbar zur Verfügung. – Software A wird durch die Zone z.B. in /opt/software/A installiert. – Die Konfiguration und die Daten der Software A können durch die Zone modifiziert werden, da der Bereich ausschließlich dieser Zone schreibbar zur Verfügung steht. • pkg-Software – Software P wird durch die Zone mit pkgadd -G installiert. – Das Installations- und Konfigurationsverzeichnis des Packages muss der Zone schreibbar zur Verfügung stehen. Ist dieses nicht der Fall, z.B. mit /usr/local wenn /usr bei einer sparse-root Zone ein inherit-pkg-dir ist), kann z.B. in der globalen Zone ein Softlink /usr/local --> ../../opt/local gesetzt werden. Dieser zeigt in der lokalen Zone mit /opt/local in einen schreibbaren Bereich. – Für die Zone wird ein Eintrag in die pkg-Datenbank vorgenommen. – Die Software ist nur in dieser Zone nutzbar. – Die Konfiguration und die Daten der Software sind von der Zone aus modifizierbar.

37 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009

4.1.6. Storage-Konzepte 4.1.6.1. Storage für das root-Filesystem der lokalen Zonen [ug] Normalerweise reicht es aus, wenn mehrere Zonen sich ein Filesystem teilen. Wenn der Einfluss von den Zonen auf das Filesystem entkoppelt werden soll wird empfohlen, jeder Zone ein eigenes Filesystem zu geben. Mit dem neuen ZFS Filesystem von Solaris 10 ist das mit geringem Aufwand möglich (ab Solaris 10 6/06). Seit Solaris 10 10/08 kann ZFS als zoneroot verwendet werden. Vor Solaris 10 10/08 kann eine Zone zwar auf ZFS betrieben werden, ein Upgrade ist aber nicht supportet; daher ist mit Zonen auf ZFS Solaris 10 10/08 dringend zu empfehlen. Mit der Verfügbarkeit von iSCSI in Solaris 10 8/07 als Client Initiator und als Target Emulator, kann auch diese Technologie als Speichertechnologie für root-Filesysteme von Zonen verwendet werden. Durch die flexible Nutzung von iSCSI-Volumes an verschiedenen Systemen mit Netzwerkzugang, erhöht sich dadurch die Beweglichkeit von Zonen z.B. im Zusammenhang mit zoneadm detach / zoneadm attach. Für ein System, auf dem eine hohe Zahl an Zonen installiert werden soll, ist zu empfehlen, dass ein Storage-Subsystem mit Cache für die root-Filesysteme eingesetzt wird. Jede OS-Instanz und damit auch jede Zone schreiben in unregelmäßigen Abständen Messages, Log-Einträge, utmp-Einträge usw. auf das root-Filesystem. Die Applikationen nutzen ggf. ebenfalls das root-Filesystem für Logs. Bei vielen Instanzen kann dies zu einem Engpass auf dem Filesystem führen (bei ZFS weniger kritisch). 4.1.6.2. Storage für Daten [ug] Die Planung für den Datenspeicher (Files, Datenbanken) erfolgt in gleicher Weise wie für dedizierte Rechner. Die Speichergeräte werden an den Rechner, der die Zonen enthält, angeschlossen. Die Filesysteme werden in der globalen Zone direkt gemountet und an die Zonen per loopback-mount übergeben (zonecfg:add fs). Dann können die Filesysteme auch von anderen Zonen zum Datenaustausch genutzt werden, sofern konfiguriert. Alternativ ist es möglich, Filesysteme (zonecfg:add fs) direkt beim Booten der Zone durch den zoneadmd(1M) mounten zu lassen und diese so einzelnen Zonen exklusiv zur Verfügung zu stellen. Da in diesem Fall innerhalb der Zone kein Zugriff auf das raw- und das block-Device möglich ist, erfolgt der Mount eines solchen Filesystems während des Bootens der Zone mit zoneadm -z boot durch die globale Zone nach z.B. /zones//root/ und erscheint in der lokalen Zone als /. Durch Bug 6495558 erfolgt durch zoneadm im Bedarfsfall aber kein Check und Repair des Filesystems. Für die Planung des Filesystem-Layouts von Zonen, sollte daher ggf. auf Alternativen ausgewichen werden Raw-Devices z.B. für Datenbanken können ebenfalls dediziert einer lokalen Zone übergeben werden (zonecfg:add device). Das Übergeben des gleichen Raw-Devices an mehrere Zonen ist nur im Ausnahmefall sinnvoll. 4.1.6.3. Storage für Programme/Applikationen [ug] Für die von den Applikationen genutzten Programme kann man ebenfalls diese Vorgehensweise (s.o.) wählen. Mit Zonen kann man alle Software in einem Verzeichnis der globalen Zone installieren und dieses Verzeichnis den lokalen Zonen zuordnen (zonecfg:add fs). Dies ist vergleichbar damit, dass Software auf einem NFS-Server im RZ liegt; hier wird ein lokales Filesystem verwendet, das der Zone zur Verfügung gestellt ist. Damit ist nach einmaliger Installation die Software für alle Zonen nutzbar. Die Eigenständigkeit des Rechners bleibt unangetastet. Diese Art der Softwareverteilung ist nur für non-pkg-Software sinnvoll. pkg-Software wird durch Installationsmechanismen der Zone in die Zonen verteilt bzw. vererbt.

38 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009

4.1.6.4. Rootplatten Layout [dd] Je nach Verfügbarkeitsanforderungen werden die root-Platten innerhalb eines Systems über interne Platten gespiegelt oder über unterschiedliche Controller und externe Storage Devices bereitgestellt. Die gesamte OS-Installation wird heute bereits in vielen Fällen in / installiert, d.h. ohne weitere Unterteilung in /usr oder /opt. Lediglich /var ist als separates Filesystem einzurichten, um ein Überlaufen von / durch z.B. große log-Files zu vermeiden. Weiterhin ist zusätzlicher Platz für ein später geplantes Live Upgrade des Systems vorzusehen. Wenn die Anzahl benötigter Slices pro Platte erschöpft ist, kann /var/crash in /var mit hineinverlagert werden oder die Benutzung von Softpartitionen in Erwägung gezogen werden. Oft wird /usr/local als schreibbares Verzeichnis in einer lokalen Zone benötigt. Wenn z.B. eine Sparse-root Zone benutzt wird und /usr ein inherit-pkg-dir ist, kann in /usr/local in einer lokalen Zone nicht geschrieben werden. Empfehlenswert ist in solchen Fällen, in der globalen Zone einen Softlink z.B. /usr/local -> ../../opt/local anzulegen. Da /opt normalerweise für jede Zone separat ist, besteht hier für jede Zone Schreibrecht. Wichtig ist, relative Links zu benutzen, damit auch ein Zugriff aus der globalen Zone auf z.B. /zones/zone-z/root/usr/local im richtigen Verzeichnis ankommt. Die Software der Companion DVD installiert sich nach /opt/sfw. Wenn diese zentral installiert werden soll, wäre /opt/sfw zusätzlich als inherit-pkg-dir festzulegen. StarOffice installiert sich beispielsweise nach /opt/. Die Größen der Filesysteme variieren je nach Art und Umfang der Installationen. Ein konkretes Rootplattenlayout ist hier dargestellt ( 5.1.3 Rootplattenlayout ). 4.1.6.5. ZFS in einer Zone [ug] Mit Solaris 10 6/06 ist erstmals das neue Filesystem ZFS verfügbar. Da ZFS nicht auf einem special device basiert, das gemountet wird, ist ein Mechanismus im zonecfg-Kommando implementiert, mit dem man ein ZFS Filesystem an eine Zone weitergeben kann. Dies geht mit dem zonecfg-Unterkommando add dataset . Das ZFS Filesystem ist dann in der Zone sichtbar und kann dort verwendet und (limitiert) administriert werden. Bei ZFS können Attribute eines Filesystems gesetzt werden, die sofort aktiv werden. Hier sind die Attribute quota (maximal belegbarer Plattenplatz) und reservation (garantierter Plattenplatz) für das Filesystem interessant. Wenn ein Filesystem mit add dataset einer Zone übergeben ist, dann kann der Administrator der globalen Zone die Attribute quota und reservation setzen. Der Administrator der lokalen Zone kann diese Parameter nicht verändern, um keinen Zugriff auf Ressourcen anderer Zonen zu nehmen. ZFS erlaubt es, Filesysteme hierarchisch zu unterteilen. Dies gilt auch für die einer Zone weitergegebenen ZFS Filesysteme, die vom Administrator der Zone weiter unterteilt werden können. Sind die Attribute quota und reservation für das übergebene Filesystem gesetzt, gilt die Limitierung auch in der Zone weiter. Somit sind die in der Zone nutzbaren Ressourcen beschränkt. Seit Solaris 10 5/08 gibt es für ZFS Filesysteme benutzerdefinierbare Attribute. Gerade im Falle von an Zonen weitergegebenen ZFS Filesystemen sind diese gut dafür nutzbar, die Verwendung der ZFS Filesysteme zu dokumentieren ( 5.1.12.10 User-Attribute für ZFS in einer Zone ).

39 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009

4.1.6.6. Möglichkeiten zur Benutzung von ZFS in lokalen Zonen [hes] Je nach Art und Weise der Konfiguration von ZFS in Zonen ergeben sich unterschiedliche Benutzungsmöglichkeiten von ZFS in Zonen. ZFS-Operation in Zuordnung eines Zuordnung eines Zuordnung eines Zuordnung einer lokalen Zone einzelnen ZFS in ZFS-Datasets zu ZFS-Volumens des ZFS via einer Zone - einer Zone/ zu eines Zone lofs legacy Mount Erzeugung des ZFS in der lokalen Zone umount nein ja ja nein destroy nein ja nein nein snapshot erstellen nein ja nein nein zfs set nein ja nein nein mount des ZFS in nein nein nein ja globaler Zone sichtbar Tabelle 4: [hes] Möglichkeiten zur Benutzung von ZFS in lokalen Zonen

4.1.6.7. NFS und lokale Zonen [ug] Der Einsatz von Zonen verändert bezüglich NFS nichts in der globalen Zone. Eine lokale Zone kann Filesysteme von NFS Servern mounten. Die folgenden Einschränkungen sind zu beachten: • Eine lokale Zone kann nicht als Solaris NFS Server eingesetzt werden, also keine Filesysteme selber freigeben, da der NFS-Service im Kernel abläuft und noch nicht in einer lokalen Zone ablaufen kann. • Mit einem Userland-NFS Server (z.B. Sourceforge.net: unfs3, nicht Bestandteil von Solaris) ist es möglich, eine Zone als NFS-Server einzusetzen. • Eine lokale Zone sollte ein Filesystem nicht von seiner globalen Zone mounten. Das scheint zwar möglich zu sein, weil der mount möglich ist, es kann aber zu Datenverlusten kommen (Bug 5065254)

4.1.6.8. Volume-Manager in lokalen Zonen [ug] Eine häufige Frage ist es, wie man einen Volume-Manager in einer lokalen Zone nutzt. Das ist leider nicht möglich. Ein Volume-Manager wie der Solaris Volume Manager (SVM) oder der Veritas Volume Manager (VxVM) braucht zum Einen Treiber, die in einer lokalen Zone nicht extra geladen werden können. Zum Anderen erzeugt ein Volume-Manager Device Nodes in /dev, mit denen auf die erzeugten Volumes zugegriffen wird. Die Berechtigung zum Erzeugen solcher Device Nodes existiert aber innerhalb einer lokalen Zone nicht, da dies ein Sicherheitsloch darstellen würde. Wenn nämlich eine Zone einen beliebigen Device Node erzeugen kann, dann könnte man als Administrator einer Zone den Device Node einer Platte erzeugen, die der Zone nicht zugewiesen ist und auf die Daten lesend oder schreibend zugreifen. Daher ist durch Einschränkung der Privilegien einer Zone das Erzeugen von Device Nodes innerhalb einer lokalen Zone unterbunden. Ein Volume Manager braucht diese Funktion des Kernels aber und kann daher innerhalb einer lokalen Zone nicht funktionieren.

40 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009

4.1.7. Netzwerk-Konzepte 4.1.7.1. Einführung Netzwerke und Zonen [dd] Eine Netzwerk-Adresse ist bei der Konfiguration einer Zone nicht zwingend vorgeschrieben. Dienste in einer Zone sind von außerhalb aber nur über das Netzwerk zu erreichen, deshalb ist in der Regel mindestens eine Netzwerk-Adresse pro Zone notwendig (konfigurierbar mit zonecfg). Die Netzwerk-Adresse einer Zone kann als virtuelles Interface auf ein beliebiges physikalisches Interface (Shared IP-Instanz) oder direkt auf ein, der Zone exklusiv zugeordnetes, physikalisches Interface (Exclusive IP-Instanz) gelegt werden. Die unterschiedlichen Typen der IP-Instanzen werden in ( 4.1.7.4 Exclusive IP-Instanz ) erläutert. Routen für die Netzwerke der lokalen Zonen lassen sich bei shared IP-Instanzen in der Zonenkonfiguration eintragen. Beim Booten der Zone wird so sichergestellt, dass der entsprechende Routing-Eintrag in der globalen Zone existiert. Der IP-Stack der globalen Zone enthält und verwaltet alle Routen der Shared IP-Instanz. Exclusive IP-Instanzen verwalten ihre eigenen Routing-Tabellen und sind genau einer Zone zugeordnet.

4.1.7.2. Verwaltung der Netzwerk-Adressen für Zonen [ug] DHCP ist für die Adressen von Zonen mit shared IP-Instanzen nicht möglich, da DHCP auf der HW-Adresse des Netzwerk-Interfaces basiert. Zonen nutzen eine virtuelle Adresse auf einem shared Netzwerk-Interface: sie haben daher die gleiche MAC-Adresse wie das Interface in der globalen Zone. Die Verwaltung der Netzwerk-Adressen für Zonen muss daher auf andere Weise erfolgen. Es sind prinzipiell die folgenden Arten der Verwaltung möglich: • Manuelles Führen einer Liste. Bei der Zonen-Konfiguration muss daher die IP-Adresse in der Liste markiert werden. • Vor-Definieren der IP-Adressen mit dem Zonen-Namen im Name-Service. Bei der Zonen-Konfiguration kann ein Script daher die IP-Adresse der Zone automatisch ermitteln, wenn der IP-Name aus dem Zonen-Namen berechnet werden kann (Kochbuch). • Wenn auf einem System viele Zonen eingerichtet werden sollen, dann ist es empfehlenswert einen ganzen Bereich vorab für das System zu allozieren, bei dem die Netzwerk-Adresse gleich dem vorgesehenen Zonennamen ist. Damit ist eine eindeutige Zuordnung gewährleistet. • Andere Integration in die IP-Namensvergabe des Ziel-Environments. Hier ist eine Integration in die organisatorischen Prozesse der IP-Vergabe des Unternehmens gemeint.

4.1.7.3. Shared IP-Instanz und das Routing zwischen Zonen [dd] Jede Zone verfügt über mindestens eine eigene IP-Adresse und eigene TCP- und UDP- Portnummern. Anwendungen, die in Zonen benutzt werden, binden sich auf die in der Zone sichtbaren IP-Adressen und nutzen diese auch als Absenderadressen. Dadurch wird eine logische Netzwerktrennung zwischen den Zonen realisiert. Wenn Zonen sich durch entsprechende Adressvergabe in unterschiedlichen logischen Subnetzen befinden und eine Kommunikation der Zone mit anderen Netzen notwendig ist, müssen für jede Zone eigene Routen existieren. Diese werden durch Zonenkonfiguration in der globalen Zone gesetzt, da die Routingtabelle sich im TCP/IP-Stack befindet, der zwischen allen Zonen shared wird (Shared IP-Instanz). Ist so eine Route für eine Zone gesetzt, findet eine Inter-Zonen-Kommunikation (lokale Zone zu lokale Zone) direkt über die gemeinsam genutzte IP-Instanz statt. Wenn diese Inter- Zonen-Kommunikation unterbunden werden soll, müssen sogenannte reject-routes eingesetzt werden, die jegliche Kommunikation zwischen zwei IP-Adressen einer IP-Instanz unterbinden. Alternativ kann die Kommunikation zwischen Shared-IP Zonen durch die folgende Konfiguration unterbunden werden: ndd -set /dev/ip ip_restrict_interzone_loopback 1

Diese Konfiguration kann auch in /etc/system gesetzt werden. Ist eine gezielte Kommunikation zwischen zwei lokalen Zonen notwendig, die aber z.B. über einen externen Router, Load Balancer oder Firewall geführt werden soll, müssen NAT-fähige Router eingesetzt werden. Entsprechende Setups werden im Abschnitt 5 . Kochbücher diskutiert.

41 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009

4.1.7.4. Exclusive IP-Instanz [dd] Mit exclusive-IP Instanzen wird eine fast vollständige Trennung des Netzwerkstacks zwischen Zonen erreicht (ab Solaris 10 8/07). Eine Zone mit einer exklusiven IP-Instanz hat ihre eigene Kopie von Variablen und Tabellen, die vom TCP/IP-Stack benutzt werden. Diese Zone hat im Ergebnis eine eigene IP-Routingtabelle, ARP- Tabelle, IPsec-Policies, IP-Filter Regeln oder ndd-Einstellungen. Innerhalb der Zone ist in exklusiven IP-Instanzen die Benutzung von ifconfig(1M) plumb, snoop(1M), dhcp(5) oder ipfilter(5) möglich. Für die Nutzung einer exklusive IP-Instanz wird von der globalen Zone einer Zone ein separates physikalisches oder tagged VLAN-Netzwerkinterface zugewiesen (zonecfg: set ip-type). Tagged VLAN-Interfaces erhalten eigene Namen, die wie folgt gebildet werden: Interface = Interfacename z.B. bge4003 benutzt das VLAN mit der ID 4 auf bge3 Die lokale Zone selbst konfiguriert auf dem Interface die IP Adresse. Die folgenden Interfaces sind zur Zeit GLDv3-fähig: bge, e1000g, ixgb, nge, rge, xge. Die älteren ce-Interfaces sind zwar nicht GLDv3-fähig, werden aber ebenfalls unterstützt. Weitere Details zu unterstützen Adaptern finden sich unter: http://opensolaris.org/os/project/crossbow/faq/#ip_instances

Instance #0 Instance #1 Global Zone Zone A Global Zone Zone “bar” Zone “foo” shared IP shared IP exclusive IP apps apps apps apps apps

tcp udp tcp udp tcp udp tcp udp tcp udp 129.146.89.2 129.146.89.3 129.146.89.2 129.146.89.3 10.0.0.1 IP/ARP/IPsec IP/ARP/IPsec IP/ARP/IPsec

ce0 bge1000 ce0 bge1000 Zeichnung 24: [dd] Gegenüberstellung Shared-IP Instanz (links) und Exclusive IP-Instanz (rechts)

4.1.7.5. Firewalls zwischen Zonen (IP Filter) [dd] Firewalls können beim Einsatz von Zonen zur Paketfilterung oder für NAT eingesetzt werden. So lässt sich z.B. der Datenverkehr zwischen bestimmten Zonen komplett unterbinden bzw. für einen Netzwerkport limitieren. Soll die Firewall auf dem System selbst zusammen mit den Zonen zum Einsatz kommen, können generell zwei Varianten unterschieden werden: • Für Shared-IP Zonen: Die Firewall muss mit ihren Regeln in der globalen Zone konfiguriert, gestartet und administriert werden. • Für Exclusive-IP Zonen: Die Firewall muss mit ihren Regeln in der jeweiligen lokalen Zone konfiguriert , gestartet und administriert werden. IP Filter ist in Solaris 10 und OpenSolaris enthalten und wurde so erweitert, dass es auch als Firewall zwischen Shared-IP Zonen eines Systems eingesetzt werden kann. (Kochbuch: 5.2.5 IP Filter zwischen Shared-IP Zonen auf einem System ) (Kochbuch: 5.2.6 IP Filter zwischen Exclusive-IP Zonen auf einem System )

42 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009

4.1.7.6. Zonen und Limitierungen im Netzwerk [dd] Zonen haben im Zusammenhang mit Netzwerkkonfigurationen verschiedene Limitierungen. Die folgende Tabelle zeigt die Unterschiede aufgeteilt nach Zonen- und IP-Instanz Typ. Einige Funktionalitäten können in Zonen selbst konfiguriert und benutzt werden (+), wirken sich lediglich auf die Funktionsweise von Zonen aus oder können von Diensten in einer Zone benutzt werden. Funktionalität Globale Zone Lokale Zone mit Lokale Zone mit shared exclusive IP-Instanz IP-Instanz DHCP-Client + + - DHCP-Server + + - ifconfig(1M) + + - IPfilter + + Auswirkung auf Zone (Filter) IPMP + + Nutzbar in Zone (Redundanz) IPQoS + Auswirkung auf Zone (Bandbreite) Auswirkung auf Zone (Bandbreite) IPsec + + Nutzbar in Zone (Kommunikation) Multicast + + - ndd-Parameter + + - NFS-Server + - - RAW-Netzwerkzugriff + + - Routing Daemon + + - Routing Einstellungen + + Auswirkung auf Zone (Routing) snoop(1M) + + - Solaris Network Cache and + - - Accelerator (NCA) Tabelle 5: Zonen und Limitierungen im Netzwerk

43 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009

4.1.8. Zusätzliche Geräte (devices) in Zonen 4.1.8.1. Konfiguration von Geräten (Devices) [ug] Eine Zone benutzt prinzipiell zunächst keine physikalischen Devices. Um Netzwerk-Interfaces exklusiv in einer Zone zu benutzen muss die Zone als exclusive-IP Zone konfiguriert werden (Fehler: Referenz nicht gefunden Fehler: Referenz nicht gefunden ). Disks oder Volumes können mit zonecfg in eine Zone eingebracht werden ( 5.1.12.6 Ein DVD Laufwerk in der lokalen Zone benutzen). Um eine so veränderte Konfiguration zu aktivieren muss die Zone neu gestartet werden. Devices können auch dynamisch mit mknod in eine Zone gebracht werden, ohne dass die Zone heruntergefahren werden muss ( 5.1.12.7 Dynamisches Konfigurieren von Geräten (Devices)). Das Entfernen von Geräten erfolgt durch Entfernen mit zonecfg bzw. bei dynamisch hinzugefügten Devices mit Löschen des Device-Nodes. Prinzipiell können auch andere Geräte wie zum Beispiel serielle Interfaces an lokale Zonen weitergegeben werden. Die Aufgabe des Administrators der globalen Zone bzw. des Verantwortlichen für die Konfiguration der lokalen Zonen ist es, die Verwendung der Devices zu koordinieren und eine Doppelvergabe bzw. doppelte Nutzung aus globaler Zone und lokaler Zone zu vermeiden. 4.1.8.2. Statische Konfiguration von Geräten [ug] Geräte für eine Zone werden bei der Zonenkonfiguration mit zonecfg mit der Anweisung add device definiert. Solaris erzeugt dann das Gerät mittels eines sogenannten Device-Nodes im Filesystem /dev der Zone. Das /dev-Verzeichnis der Zone befindet sich im zonepath der Zone im Unterverzeichnis dev. Das Löschen der Geräte erfolgt durch Löschen in der Konfiguration. Das Device ist dann beim nächsten Reboot der Zone aus deren /dev Verzeichnis entfernt. Hier ist einer der Unterschiede zwischen der globalen Zone und der lokalen Zonen, da bei der lokalen Zone der Device-Node direkt im /dev-Verzeichnis liegt. In der globalen Zone ist in /dev nur ein symbolischer Link zu einem Device-Eintrag in /devices. In /devices. liegen alle vom System erkannten Geräte mit ihren Device-Nodes. Eine Zone ist nicht in der Lage, selbst in ihrem /dev Device-Nodes zu erzeugen, da das Kommando mknod(1M) und der Systemcall mknod(2) in einer lokalen Zone durch Privilegien verboten sind. Weiterhin kann eine Zone selber Filesysteme nur mit der Option nodevices mounten, wodurch die Geräte-Einträge in diesem Filesystem nicht benutzbar sind. Die Sicherheit der Zonen bezüglich Geräten beruht genau auf diesen Maßnahmen, weil eine Zone keinen Zugriff auf Geräte erlangen kann, die nicht für sie konfiguriert sind. 4.1.8.3. Dynamische Konfiguration von Geräten [ug] Ein Reboot der lokalen Zone ist manchmal nicht erwünscht, obwohl man neue Geräte hinzufügen muss, um zum Beispiel einer Datenbank neuen Platz zu beschaffen. Dann kann man der Zone dynamisch neue Geräte hinzufügen, indem man den Vorgang der statischen Gerätekonfiguration nachahmt. Zunächst wird in der globalen Zone mit ls -lL bestimmt, welcher Device Node hinter dem Gerät liegt, wichtig sind hier die Ausgaben major und minor Number. Die major Number spezifiziert den Treiber und die minor Number ist so etwas wie die laufende Nummer des Geräts. Dann kann man mit mknod das Gerät für eine Zone erzeugen, indem in dem/dev Baum der Zielzone der entsprechende Knoten erzeugt wird. Das kann aus Sicherheitsgründen nur der Administrator der globalen Zone (in der lokalen Zone fehlen ja die Privilegien). Soll der Zugriff auf das Gerät entzogen werden, kann der Knoten in /dev der Zone gelöscht werden. Dabei ist zu beachten, dass Programme oder Mounts, die das Device geöffnet haben, immer noch Zugriff behalten. Ein Mount sollte vor Beenden des Zugriffs entfernt werden. Soll das Gerät dauerhaft in der Zone benutzt werden, dann kann man zusätzlich die entsprechende Eintragung in der Zonenkonfiguration durchführen. (Beispiel in 5.1.12.7 Dynamisches Konfigurieren von Geräten (Devices))

44 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009

4.1.9. Separate Namensdienste in Zonen [ug] Namensdienste umfassen unter anderem die hosts-Datenbank und die UserIDs (passwd, shadow) und werden mit der Datei /etc/nsswitch.conf konfiguriert, die in der lokalen Zone unabhängig von der globalen Zone existiert. Die Namensdienste sind daher in lokalen Zonen unabhängig von den globalen Zonen definiert. Die wichtigsten Aspekte dazu werden in diesem Abschnitt behandelt. Wenn man der Empfehlung von anderer Stelle in dem Dokument folgt, dass man in der globalen Zone keine Applikationen laufen lässt, dann muss auch die globale Zone nicht in NIS oder LDAP eingefügt werden. Dies limitiert weiter den Zugang von außen und vermindert die Abhängigkeit der globalen Zone von anderen Rechner (Namensdienste Server). 4.1.9.1. hosts-Datenbank [ug] Die Rechner, die mittels Namen ansprechbar sein sollen müssen hier eingetragen werden. Es findet keine automatische Kopie der /etc/hosts von der globalen Zone statt, wenn die Zone installiert wird (ganz im Sinne, dass in der lokalen Zone eine eigene OS Umgebung existiert). Die bessere Alternative ist natürlich, dass man einen Namensdienst wie NIS, DNS oder LDAP verwendet. Bei einer automatischen Installation kann das über eine sysidcfg-Datei eingestellt werden. 4.1.9.2. User-Datenbank (passwd, shadow, user_attr) [ug] Die Benutzer-Einstellungen in den lokalen Zonen können wie bei einem separaten Rechner durch einen Namensdienst ergänzt werden. Zu beachten ist, dass in unterschiedlichen Zonen die User- namen ungleich sein können, insbesondere werden bei der Überwachung aus der globalen Zone (mit ps) die in der globalen Zone konfigurierten Namen angezeigt Eine Kopie der Dateien von der globalen Zone wird nicht empfohlen, ein Namensdienst wie NIS oder LDAP ist besser geeignet. 4.1.9.3. Services [ug] Die /etc/services oder der entsprechende Namensdienst muss ebenfalls an die in der Zone laufenden Applikationen angepasst werden. 4.1.9.4. Projekte [ug] Um in einer lokalen Zone Ressource-Management mit Fair-Share-Scheduler oder Extended Accounting lokal zu betreiben, muss die entsprechende Namensdienst Datenbank in /etc/project oder der entsprechende Namensdienst in der Zone angepasst werden.

45 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009 4.2. Paradigmen Paradigmen sind Design Regeln zum Aufbau von Zonen. Je nach Anwendung muss entschieden werden, welche davon zur Anwendung kommen sollen. 4.2.1. Delegation von Admin Rechten an die Applikations-Abteilung [ug] Die Administration bezüglich einer Applikation kann an die für die Applikation zuständige Abteilung delegiert werden. Durch die Zonen-Isolation kann der root-Administrator nur Ressourcen beeinflussen, die der Zone zugeordnet sind. Dies gilt auch für andere definierte privilegierte User in der Zone (siehe Process Privileges, ppriv). • Ist eine Zone einer shared IP-Instanz zugeordnet, kann das Netzwerk nur in der globalen Zone konfiguriert werden. • Wenn einer Zone eine exclusive IP-Instanz zugewiesen wurde, kann der Administrator dieser Zone die Netzwerkkonfiguration der Zone selbstständig vornehmen. • Filesysteme können von der globalen Zone festgelegt sein (zonecfg add fs) • Die Administration der Filesysteme kann dem Administrator der lokalen Zone übergeben werden (zonecfg add device). 4.2.2. Applikationen nur in lokalen Zonen [ug] Wenn lokale Zonen für Applikationen genutzt werden, empfiehlt es sich, die globale Zone nicht auch für Applikationen zu nutzen. • Nur dann ist es möglich, dass die Administration der Hardware des Rechners rein bei den Plattform-Administratoren der globalen Zone bleibt. • Plattform-Administratoren sind die Administratoren, die die globale Zone administrieren. Sie haben den Zugriff auf die Hardware (Gehäuse, Netzkabel, Festplatten) und führen die Solaris Installation in der globalen Zone durch. Das Patching des Kernels und der Reboot des Gesamtsystems obliegt ebenfalls dem Plattform-Administrator. • Es ist nicht notwendig, dem Applikations-Admin Zugang zu der globalen Zone zu geben. • Sofern der Applikations-Admin root-Zugang braucht, kann er das root-Passwort der lokalen Zone seiner Applikation erhalten. Er muss dann allerdings in Absprache mit dem Betrieb die Verantwortung für die Verfügbarkeit der Applikation übernehmen. • Anforderungen für Plattenplatz erfolgen über die Plattform-Administration, die nach Freigabe durch die Storage-Administration (sofern separat) die Ressourcen der entsprechenden lokalen Zone zuordnen kann. • Bei der Netzwerkkonfiguration ist nach shared oder exclusive IP-Instanz zu unterscheiden. Im Gegensatz zu der shared IP-Instanz kann der Administrator einer Zone mit exclusive IP-Instanz die Netzwerkadministration selbst übernehmen. In der globalen Zone werden nur noch systemnahe Applikationen installiert, die zum Management, der Überwachung oder zu Backup-/Restore-Zwecken notwendig sind. Zur Erhöhung der Verfügbarkeit kann auch Cluster-Software eingesetzt werden. Vorteile: • Die Zuständigkeiten für System, Storage und Applikation können klar getrennt werden. • Der root-User Zugriff auf dem Basis-System ist auf die System-Administration eingeschränkt. Die Stabilität ist dadurch besser.

Nachteile: • Einige Applikationen sind noch nicht explizit für die Nutzung in Zonen freigegeben. In der Regel funktionieren die Applikationen in den Zonen, jedoch sind sie nur noch nicht vom Hersteller der Applikation zertifiziert worden.

46 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009

4.2.3. Eine Applikation pro Zone [ug] Ein weiteres Paradigma ist, immer nur eine Applikation pro Zone zu installieren. Der Overhead einer Zone ist sehr gering; im Prinzip werden nur die Applikationsprozesse vom Rest des Systems separiert, indem sie mit der ID der Zone markiert werden. Das wird durch die Zonen- Technologie realisiert. Die Gewinne durch diese Entscheidung sind sehr hoch: • Der Administrator der Applikation kann das Passwort für root in der lokalen Zone erhalten, ohne dass er den Betrieb des gesamten Rechners bei einem Fehler gefährden kann. • Gerade bei Konsolidierung von vielen Applikationen wird die Anzahl der Benutzer mit root- Rechten reduziert. • Wenn man die Applikation automatisch installieren möchte, ist dies viel einfacher, weil man ja sicher weiß, dass keine andere Applikation da ist und das System verändert hat. • Abhängigkeiten/Störungen zwischen Applikationen im Filesystem und/oder Konfigurations- Dateien entfallen vollständig, wodurch der Betrieb sicherer wird. 4.2.4. Container im Cluster [tf/du] Container können im Cluster als virtuelle Knoten oder als Ressourcen betrachtet und konfigu- riert werden. Mit Hilfe von Containern als virtuellen Knoten können seit Sun Cluster 3.2 1/09 virtuelle Cluster, sog. Solaris Container Cluster implementiert werden. Nähere Informationen bietet das nächste Kapitel. Im Cluster ist der Betrieb als Blackbox Container oder in ausgeformten Ressource Topologien möglich. In einem Blackbox Container werden die betriebenen Applikationen nur im Container konfiguriert. Der Cluster kennt sie nicht, sie werden innerhalb des Containers nur von Solaris kontrolliert. Dies führt zu besonders einfachen Cluster Konfigurationen. Bei einer ausgeformten Ressource Topologie wird jede Applikation unter Cluster Kontrolle betrieben. Jede Applikation wird damit als eine Ressource in den Cluster integriert und von ihm in der richtigen Reihenfolge gestartet und überwacht. Für ausgeformte Ressource Topologien in Containern stehen ab Sun Cluster 3.2 der HA Container Agent oder Container als „virtuelle Knoten“ zur Verfügung. Bei einem Container als virtuellem Knoten schwenkt man Applikationen gebündelt in Ressourcegruppen zwischen Containern. Mehrere Ressourcegruppen können in einem Container laufen und unabhängig von einander schwenken. Beide Konzepte, HA Container und Container als virtueller Knoten, haben jeweils ihre eigenen Stärken. Hilfreiche Kriterien zur Wahl des richtigen Konzepts für den jeweiligen Anwendungsfall sind im „Sun Cluster Concepts Guide for Solaris OS“ zu finden: http://docs.sun.com/app/docs/doc/819-2969/gcbkf?a=view Man kann in der Cluster Topologie Applikationen im Container unter Cluster Kontrolle bringen. Betreibt man Container als virtuelle Knoten, werden für die Applikationskontrolle Standard oder selbst geschriebene Agenten benutzt. Betreibt man Container unter Kontrolle des HA Container Agenten, können ausgewählte Standard Agenten oder die Shellscript- oder SMF-Komponente des Sun Cluster Container Agenten verwendet werden. Bei Verwendung des HA Container Agenten sind Mischformen zwischen Blackbox und ausgeformter Ressource Topologie jederzeit zulässig. Bei Containern als virtueller Knoten ist eine ausgeformte Ressourcetopologie erforderlich. Cluster können in aktiv-passiv Konfiguration oder in aktiv-aktiv Konfiguration betrieben werden. Aktiv–passiv bedeutet, ein Knoten bedient die konfigurierten Container oder Applikationen und der zweite Knoten wartet auf den Ausfall des ersten. Aktiv–aktiv bedeutet, dass jeder Knoten Container oder Applikationen bedient. Reicht die Leistung jedes Knoten nicht für alle Container oder Applikationen aus, so ist bei Ausfall eines Knotens eine geringere Performance zu akzeptieren. Ist die Anforderung, Hochverfügbarkeit in einem Rechenzentrum oder Hochverfügbarkeit zwischen zwei Rechenzentren zu erreichen, so genügt Sun Cluster um Container oder Applikationen geplant und im Notfall zwischen den Rechnern zu verschieben. Die maximale Entfernung zwischen zwei Cluster Knoten war bei Sun Cluster früher auf 400 km begrenzt und setzte den Einsatz zertifizierter DWDMs (Dense Wave Division Multiplexer) voraus. Heute gilt der Nachweis einer maximalen Latenz von 15 ms (one-way) und eine maximale Bit Error Rate (BER) von 10-10 als ausreichend. Sind diese Anforderungen eingehalten, bedeutet das leider noch nicht, dass auch die Performance- Anforderungen der Anwendung eingehalten werden. D.h. genügt die Latenz der involvierten Spiegelungs- bzw. Replikationstechnik nicht den Performance Anforderungen, so ist hier Sun Cluster Geographic Edition einsetzbar. Sun Cluster Geographic Edition setzt laufende Cluster in mehreren Rechenzentren voraus. Der verwandte Storage wird über geeignete Techniken vom Rechenzentrum A in das Rechenzentrum B

47 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009 repliziert. Zur Zeit sind Sun StorEdge Availability Suite (AVS) als hostbasierte Replikation, Hitachi Truecopy und EMC SRDF als Controller-basierte Replikation und mit Sun Cluster 3.2 1/09 Oracle DataGuard als anwendungsbasierte Replikation integriert. Sun Cluster Geographic Edition ermöglicht es, die Container / Services vom Rechenzentrum A in das Rechenzentrum B zu verschieben. Fällt ein Rechenzentrum aus, so schlägt Sun Cluster Geographic Edition einen Rechenzentrum-Schwenk vor. Nach Bestätigung durch einen Administrator wird dieser dann auch durchgeführt. Mit den hier beschriebenen Software Produkten lassen sich die Anforderungen von Visualisierung und Flexibilisierung von Containern bis hin zu Desaster Recovery Konzepten voll abdecken. Admin. Client Primary Site Backup Site

Optional Router Heartbeat DWDM Network

SE SE SE Network Network DWDM DWDM Network FC FC FC Switch-8 Switch-8 Unlimited Distance Switch-8 Separation

9990 9990 9990 Zeichnung 25: [tf/du] Typische Konfiguration: Sun Cluster Geographic Edition

Sun Cluster Geographic Active Edition Passive Sun Sun Cluster Cluster Container-protection-group Container-rg Container-rg Container Container Agent Applic. Agent Applic.

Container Container Agent Agent

HAStorage Logical HAStorage Logical Plus Host Plus Host

Zeichnung 26: [tf/du] Ressourcegruppen und Protectiongroup Topologie Die hier dargestellte Hardware Architektur besteht aus einem zwei Knoten Cluster aus SF6900 Servern im primären Rechenzentrum und einem Ein-Knoten Cluster in dem für Desaster Recovery vorgesehenen Ausweichrechenzentrum. Die verwendeten Storage Systeme sind Sun StorageTek 9990 Systeme und die Datenreplikation erfolgt mittels Truecopy. Die Steuerung erfolgt über Sun Cluster Geographic Edition. Sollte keine Desaster Recovery gewünscht werden, so kann man jedes Rechenzentrum auch für sich betreiben. In der hier dargestellten Ressourcegruppen-Topologie verwaltet der aktive Cluster einen Container. Der passive Cluster wird für Disaster Recovery Zwecke benutzt. Die Cluster bilden eine Partnerschaft und verwalten die Ressourcegruppe in einer sogenannte Protectiongroup. 48 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009 4.2.5. Solaris Container Cluster [hs] Eine der wesentlichen Eigenschaften von Containern ist die Möglichkeit, die administrativen Aufgaben an den Verwalter bzw. Benutzer eines oder mehrerer Container zu delegieren. Wird die Hochverfügbarkeit eines Containers durch den Einsatz des HA Solaris Container Agenten sichergestellt, so ist dies für den Administration des betroffenen Containers nicht sichtbar – was in der Regel auch so gewünscht ist. Soll jedoch auch die Container bezogene Verwaltung von Cluster Ressourcen ebenfalls an den Container Administrator delegiert werden, kann ein Container Cluster eingesetzt werden. Ein Container Cluster besteht aus mehreren Containern, je einer pro Solaris Instanz, die zu einem virtuellen Cluster zusammengefasst werden. Die für den Betrieb der Container und des Container Clusters notwendigen Ressourcen werden durch den Administrator der globalen Zone zur Verfügung gestellt. Die Verwendung dieser Ressourcen, u.a. das Anlegen von Ressourcegruppen und ihrer Ressourcen, obliegt aber dem Administrator des Container Clusters. Die Verwaltung der Ressourcen innerhalb eines Container Clusters verhält sich so wie die Verwaltung in der globalen Zone. Ausnahmen sind Quorum und Cluster Interconnect, die ausschließlich in der globalen Zone administriert werden. Damit kann sich der Verwalter des Container Clusters auf die hochverfügbaren Dienste und ihre Integration ins Cluster konzentrieren. Die wesentlichen Aufgaben bei der Verwaltung von Container Clustern bestehen in der Identifikation und Zuweisung der notwendigen Ressourcen von der globalen Zone in die lokalen Zonen, die einen Container Cluster bilden. Dazu gehören: • IP Adressen; (Container Cluster können nur mit ip-type shared arbeiten) • CPUs • Hauptspeicher • Dateisysteme, bzw. raw devices Eine nachvollziehbare, systematische Namensgebung für Ressourcen ist eine große Hilfe für eine fehlerfreie Administration komplexer Container Cluster Umgebungen.

49 Version 3.1-de Solaris 10 Container Leitfaden - 3.1 4. Best Practices Stand: 30.11.2009 4.3. Konfiguration und Administration 4.3.1. Manuelle Konfiguration von Zonen mit zonecfg [ug] Zur Konfiguration einer Zone gibt es das Kommando zonecfg, siehe Beispiel im Kochbuch. Die Konfiguration beschreibt lediglich das Verzeichnis (zonecfg: zonepath) in dem die Dateien für die Zone abgelegt werden sollen und wie System-Verzeichnisse von der globalen Zone übernommen werden sollen (Kopieren/Loopback-Mount). Als Option kommen noch Netzwerk- Adressen, Filesysteme, Devices... hinzu. Jede einmal konfigurierte Zone lässt sich auch als Template für weitere Zonen verwenden. Durch dieses Klonen von Konfigurationen kann die Erstellung von Zonen gleichartiger Konfigurationen erheblich vereinfacht werden. Von einer Konfiguration von Zonen durch das Editieren der XML-Dateien unter /etc/zones wird abgeraten, da dieses Verfahren sehr fehleranfällig ist und daher nicht unterstützt wird. 4.3.2. Manuelle Installation von Zonen mit zoneadm [ug] Nachdem eine Zone konfiguriert ist, besteht der nächste Schritt in der Installation mit zoneadm -z install (siehe Kochbuch). Dabei werden alle Pakete (Solaris pkg), die nicht zum Kernel des Solaris gehören, in der Zone installiert, wobei die Dateien, die per Loopback-Mount von der globalen Zone zur Verfügung stehen, nicht kopiert werden. Hierbei werden auch die postinstall-Scripte der Pakete für die Zone ausgeführt. Die Zone hat am Ende eine eigene Paket-Datenbank (/var/sadm/install/*). Als Quelle für die zu installierenden Pakete der lokalen Zone werden die Pakete der globalen Zone genutzt. Danach ist die Zone bootbar. 4.3.3. Manuelle De-Installation von Zonen mit zoneadm [ug] Wird eine Zone nicht mehr gebraucht, dann kann man die Zone mit zoneadm -z uninstall deinstallieren. Dies entfernt alle Dateien im zonepath, auch die, die nicht bei der Installation sondern später entstanden sind. Die Konfiguration der Zone bleibt bestehen. 4.3.4. Manuelles Entfernen einer konfigurierten Zone mit zonecfg [ug] Um eine Zone zu entfernen, sollte zunächst eine De-Installation durchgeführt werden. Dann kann mit dem Kommando zoneadm -z zone destroy die Konfiguration der Zone entfernt werden. 4.3.5. Duplizieren einer installierten Zone [ug] Zonen können schnell dupliziert werden, wenn die inherit-pkg-dir Konfigurationen identisch sind. Dann kann man eine Zone als Template erzeugen und für jede Zone durch Kopieren des Inhalts schnell duplizieren. Seit Solaris 10 11/06 ist das mit dem Kommando zoneadm clone möglich. Diese Funktion führt zusätzlich zum Kopieren der Verzeichnisse weitere Prüfungen durch. Ab Solaris 10 5/09 wird bei Zonen auf ZFS automatisch die clone-Funktionalität von ZFS genutzt, wodurch das Duplizieren einer Zone erheblich beschleunigt wird. ( 5.3.7 Duplizieren von Zonen mit zoneadm clone bzw. 5.3.8 Duplizieren von Zonen mit zoneadm detach/attach und zfs clone). 4.3.6. Standardisiertes Erzeugen von Zonen [ug] Zonen können folgendermaßen erzeugt werden: • mit dem Kommando zonecfg und dann mit zoneadm zum Installieren der Zone • mit dem Container Manager im Sun ManagementCenter (SunMC) • mit Webmin, einem freien Management-Werkzeug, das bei Solaris 10/OpenSolaris beigepackt ist (Solaris Zones Modul: neuester Stand zones.wbm.gz downloadbar bei http://www.webmin.com/standard.html) • per Scripts, die zonecfg und zoneadm aufrufen Der Container Manager und Webmin eignen sich für die Admins, die selten Zonen einrichten. Mit zonecfg kann man Zonen gemäß eigenen Standards erzeugen, indem man Zonen als Templates einrichtet. Eine Zone kann dann mit dem zonecfg Unterkommando create -t