Ausgabe Mai 2019 | 15. Mai 2019 | SHD . TechnologyAlle Beiträge dieser Kategorie anzeigen | Alle Beiträge anzeigen von
Christian Müller
| 178 Besucher

Applikationsbereitstellung mittels Container – der App-Store für Server?



Generell kann man einen Container als eine gekapselte Umgebung betrachten, die eine Applikation bereitstellt. Dieser Container enthält alle Abhängigkeiten, Bibliotheken und statische Daten, die zum Betrieb der Applikation notwendig sind. Jedoch wird auf die vollständige Bereitstellung eines Betriebssystems verzichtet, dieses wird durch einen Container Host bereitgestellt und wird beim Betrieb mehrerer Container auf einem System durch alle geteilt. Dennoch erfolgt eine logische Trennung zwischen Host­system und Container. Die Speicherung erfolgt in Images, Installationen beschränken sich somit größtenteils auf einen einfachen Kopiervorgang. Als Standard-Plattform hat sich hier Docker herauskristallisiert. Diese ist auf Linux und Windows Plattformen verfügbar und spätestens seit Windows Server 2019 in die Windows-Administrationstools integriert. Eine Trennung auf Netzwerkebene bringt Docker „out of the Box“ mit. Diese ermöglicht eine Isolation zwischen einzelnen Containern auf einem Host. Im Vergleich zu einer klassischen Virtualisierung sind Container wesentlich ressourcenschonender zu betreiben, wie das folgende Schaubild zeigt:

Abbildung 1: Virtualisierung vs. Container

Innerhalb einer Virtualisierung wird pro Applikation immer ein Basisbetriebssystem zur Verfügung gestellt. Dies hat einen erheblich höheren Ressourcenbedarf zur Folge. Allerdings ist auch eine Isolierung der Applikationen wesentlich granularer. Im Fall von Containern erfolgt diese auf Basis des Betriebssystems unter Zuhilfenahme einer Container Engine wie eben Docker. Hierbei werden Abhängigkeiten einzelner Applikationen untereinander minimiert, indem Software­bibliotheken und Applikationsdaten voneinander isoliert werden. Die Zugriffe zwischen mehreren Containern lassen sich hierbei granular regeln bzw. auch unterbinden.

Diese Architektur erlaubt es, bei Lastspitzen weitere Container zur Verfügung zu stellen, um anfallende Anfragen an die Applikation zu bewältigen. Ein Load Balancing kann über Cluster erfolgen. Im Fall von Docker ist Swarm so eine Technologie. Hierbei werden Servern zwei Rollen zugewiesen:

•   Managment Node             •   Worker Node.

Management Nodes übernehmen die Verwaltung des Clusters. Hierfür wird eine ungerade Zahl an Nodes empfohlen. Für die meisten Anwendungsszenarien kommen pro Cluster 3 oder 5 Management Nodes zum Einsatz. Wobei einer die Master-Rolle übernimmt. Ferner können diese Nodes aber auch die Bereitstellung von Containern übernehmen. Worker wiederum stellen ausschließlich Container bereit. Innerhalb eines Swarm können mehrere Container ein und derselben Applikation bereitgestellt werden, sogenannte Replicas. Diese basieren auf demselben Image. Zugriffe werden über eine integrierte Load Balancing Funktion bereitgestellt. Greift ein Nutzer nun auf einen Cluster Knoten zu, der die Applikation nicht selber bereitstellt, wird diese über die integrierte Load Balancing Funktion auf einen entsprechenden Host umgeleitet. Fällt ein Host aus, werden die Applikationen auf einem anderen Host automatisch gestartet, wobei das Startverhalten der Container gegenüber VMs um ein vielfaches schneller ist. Abhängigkeiten gibt es jedoch beim Betriebssystem. In produktiven Umgebungen wird empfohlen, Linux- und Windows-Systeme in separaten Clustern zu betreiben. Generell ist die Unterstützung von Docker auf Windows-Server noch relativ jung.

Im Unternehmenseinsatz stört meist, dass Images von einem Cloud Repository bezogen werden, jedoch ist es möglich, einen eigenen „Image Store“ (Docker Registry) anzulegen. Dies ermöglicht, die Images innerhalb des Unternehmens zu verwalten. Für einfache und schnelle Roll Backs ist eine Versionierung enthalten. Docker Images sind hierbei in Layern aufgebaut. Ändert sich ein Image, wird immer ein neuer Layer erstellt. Änderungen sind somit sehr schnell auf Produktivsysteme übertragbar und ebenso schnell wieder rückgängig zu machen, indem auf eine ältere Version zurückgegangen wird. Bereitstellungszeiten werden so auf einen Bruchteil reduziert. Vor allem bei webbasierten Anwendungen findet dies heute schon massiven Gebrauch. Aber auch in neuen Bereichen wie dem Edge Computing favorisieren viele Hersteller diesen Ansatz, um ressourcenschonend und effizient neue Workloads bereitstellen zu können. Die Bereitstellung reduziert sich durch das Containerverfahren auf Kopieren der Images. Zum Löschen werden Container lediglich gestoppt und die Files wieder vom System entfernt. Hierdurch werden jedoch auch die Daten gelöscht, welche sich ggf. innerhalb des Containers befinden.

Für komplexe Umgebungen ist eine Einschränkung der Kommunikation einzelner Container untereinander möglich. Dies wird bei Docker über das eigene Netzwerk-Subsystem realisiert. Hierbei stehen standardmäßig folgende Typen zur Verfügung:

  • Bridge (erlaubt die Kommunikation von mehreren Containern auf einem Host),
  • Host (wird für standalone Container eingesetzt und ist auf den Host beschränkt),
  • Overlay (ermöglicht die Verbindung zwischen mehreren Docker-Containern),
  • MACVLAN (weist dem Container eine MAC Adresse zu, über welche er erreichbar ist),
  • None (es besteht keine Netzwerkverbindung des Containers).

Weitere Netzwerkfunktionen sind mittels Plug-In nachrüstbar.

Sollen Nutzdaten persistent in einem Filesystem oder einer Datenbank gespeichert werden, empfiehlt sich eine Speicherung außerhalb der Container-Lösung. Hierfür bietet Docker zwei Möglichkeiten:

•   Bind Mount             •   Volumes

Bind Mount erlaubt es, Daten zwischen einem einzelnen Container und dem Host zu teilen und Daten persistent auf dem Host zu speichern. Volumes sind der präferierte Weg, um Daten zu speichern. Diese ermöglichen es, Daten zwischen Containern geteilt bereitzustellen. Die Speicherung muss hierbei nicht auf dem Host erfolgen, sondern kann ein zentrales shared Storage System nutzen. Diese Möglichkeit steht auch innerhalb eines Swarm Clusters zur Verfügung. Als Ziel dient dann ein File Services oder NAS Systeme.

Abbildung 2: Zugriff auf Volume mittels Shared File Storage

Im Fall von Docker und Swarm erfolgt die Administration über Command Line. Docker für sich allein ist für die Verwaltung einzelner Container bestens geeignet. Wenn Sie beginnen, mehr und mehr Container zu verwenden, die in mehrere Bestandteile zerlegt sind, können die Verwaltung und Orchestrierung schwierig werden. Dann müssen diese gruppiert werden und Dienste wie Vernetzung und Sicherheit in all Ihren Containern zentral bereitgestellt werden. An dieser Stelle kommt meist ein Management System wie Kubernetes ins Spiel.

Da die Isolierung zwischen Containern nicht so ausgeprägt ist, wie bei einer Virtualisierungsumgebung, ist es angebracht, weitere Sicherungsmaßnahmen zu ergreifen. Hierzu gehören:

  • Härtung des Host Betriebssystem
  • Einsatz der aktuellen Docker Engine
  • Verschlüsselung der Kommunikation zum Docker Daemon, zur Registry und innerhalb des Swarm Cluster
  • Einsatz von Roll Based Access Control zu den einzelnen Funktionen
  • Einsatz von gehärteten und gepatchten Images
  • Limitierung der CPU Ressourcen
  • Einsatz nicht privilegierter Benutzer
  • Überwachung der Systeme und Log Files.

Auch der Einsatz von Security Gateways zur Absicherung der Zugriffe auf exponierte Container kann zur Erhöhung der Sicherheit beitragen.

Schreiben Sie uns, wenn Sie mehr erfahren wollen.

 

Christian Müller
Autor:
Christian Müller | Technology Consultant
Website:
Bildquelle/Copyright: © MicroOne / Shutterstock (Headerbild)

Bitte bewerten Sie diesen Beitrag

Es wird kein Zusammenhang zwischen Ihrer Bewertung und Ihrer E-Mail-Adresse hergestellt, falls Sie unseren Newsletter erhalten haben.

SHD . NewsAlle Beiträge dieser Kategorie anzeigen

Verstärkung im Projektmanagement

Seit Februar 2019 unterstützt uns Robert Preuß als IT-Consultant und Project Manager am Standort Dresden. Nach einigen beruflichen Stationen im Bereich Enterprise Networking war er zuletzt als Teamleiter – Netzwerktechnik für ein Berliner IT-Dienstleistungsunternehmen tätig ...

121 Besucher
SHD . NewsAlle Beiträge dieser Kategorie anzeigen

IT-Infrastruktur und Geschäftsprozesse verbinden

Ist Ihre IT-Abteilung gerüstet für die Anforderungen, die sich aus Automatisierung, IoT, Industrie 4.0 und Schatten-IT ergeben? Kennen Sie alle Applikationen und Geräte, die im Unternehmensnetzwerk arbeiten? Können Sie die gesetzlichen Vorgaben aus den Bereichen Compliance, DSGVO, ...

108 Besucher
SHD . NewsAlle Beiträge dieser Kategorie anzeigen

New Work: Das moderne Arbeiten

Inspiriert von einem Besuch in der Microsoft Deutschland Zentrale beschäftigen wir uns heute mit Ideen zum modernen Arbeiten. Drei Faktoren bestimmen den Wandel der Arbeitswelt: Menschen, Orte und Technologien. Lassen Sie uns diese kurz betrachten ...

110 Besucher
SHD . NewsAlle Beiträge dieser Kategorie anzeigen

Klarer Fokus auf ganz­heit­liche Sicherheitsansätze

Beim KRITISchen Stammtisch, einer Veranstaltung, die den regelmäßigen Austausch zwischen Akteuren im Klinik­umfeld zu aktuellen Themen fördert, wurde diesmal rund um das Thema Cybersicherheit diskutiert. In diesem Zusammenhang referierte auch das Bundesamt für Sicherheit ...

95 Besucher