Seite wählen

NETWAYS Blog

Coreos Übersicht

Docker, Docker Docker! So oder so ähnlich wird teilweise hämisch oder motivierend auf Ideen kommentiert, seine Anwendung in einen bzw. mehrere Docker Container zu migrieren. Für eine produktive Umgebung reicht das Standard Set von Docker nicht aus, zumindest nicht ohne Docker Swarm, Compose und Machine. Es gibt mittlerweile und gab neben den Produkten aus dem Hause Docker bereits Lösungen, die sich um das Deployment und Managen von Containern kümmern können. Eine sehr gute Alternative ist Mesos, aber auch CoreOS.
In der mehrteiligen Blogserie zu CoreOS werden die einzelnen Komponenten, Features und Vorzüge von CoreOS genauer betrachtet. Im ersten Beitrag zur Serie soll ein erster grober Überblick vermittelt werden.
Three-Tier-Webapp
CoreOS ist ein leichtgewichtiges auf dem Linux Kernel aufbauendes Open Source Betriebssystem. Das System ist auf das Nötigste reduziert, kommt ohne Paketmanager aus und nutzt systemd als init. Neben den essentiellen Userland Tools besteht es im wesentlichen aus: Container Runtime (Docker/Rkt), etcd und fleet. Es kann auf diversen Plattformen betrieben werden wie Vagrant, EC2, KVM, VMware, OpenStack, Digital Ocean Droplets, und natürlich auf eigener Hardware. Updates werden durch Reboots vollzogen.
Eine Variante der Installation ist über PXE/iPXE. Hier wird für die entsprechenden VMs oder Hardware-Server ein korrespondierender PXE-Boot-Eintrag erstellt, der das aktuelle CoreOS Image vorhält. Die einzelnen Maschinen können individuell auf ihre zukünftige Rolle mit einer sogenannten cloud-config konfiguriert werden. Beim boot liest das System diese in YAML formatierte Datei ein und konfiguriert sich entsprechend. Es kann der Discovery Service Endpoint, fleet, etcd, ssh-keys und Dateien konfiguriert werden.
Beispiel cloud-config.yaml:
#cloud-config
coreos:
units:
- name: etcd.service
command: start
- name: fleet.service
command: start
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABA....AAAYQC2++odpaavdW2/AU0l7RZiE=

Das Discovery dient zur Clusterbildung und wird von CoreOS bereitgestellt. Natürlich kann man auch seinen eigenen Discovery-Service nutzen. Unter einem eindeutigen Token wird ein neuer Cluster definiert. Die erste Maschine, die startet nimmt Kontakt auf und registriert sich als Leader für den Cluster. Alle weiteren Maschinen, lesen die bereits teilnehmenden Cluster-Nodes aus und können sich entsprechend integrieren und verbinden. Für die Services etcd und fleet sind diese Informationen essentiell.
etcd ist ein verteilter Key-Value-Store, der für Service-Discovery und Konfiguration benutzt wird. Es kümmert sich mit Hilfe des Raft Protokolls um Consensus.
fleet kann man sich als Serverübergreifender systemd vorstellen. Mit Hilfe von Unit-Files erstellt man Services die fleet im Cluster nach Regeln verteilt und startet bzw. stoppt. Ein Service ist in der Regel ein Container.
Beispiel Unit-File:
[Unit]
Description=MyApp
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill busybox1
ExecStartPre=-/usr/bin/docker rm busybox1
ExecStartPre=/usr/bin/docker pull busybox
ExecStart=/usr/bin/docker run --name busybox1 busybox /bin/sh -c "while true; do echo Hello World; sleep 1; done"
ExecStop=/usr/bin/docker stop busybox1

In den nächsten Blogposts der Serie werden die einzelnen Komponenten und weitere wie Loadbalancer etc. genauer betrachtet und anhand von Beispielen näher auf die Vorzüge eines Setups mit CoreOS und mögliche Workflows eingegangen.

Sebastian Saemann
Sebastian Saemann
CEO Managed Services

Sebastian kam von einem großen deutschen Hostingprovider zu NETWAYS, weil ihm dort zu langweilig war. Bei uns kann er sich nun besser verwirklichen, denn er leitet das Managed Services Team. Wenn er nicht gerade Cloud-Komponenten patched, versucht er mit seinem Motorrad einen neuen Rundenrekord aufzustellen.

Webinare im Mai

NETWAYS Webinare Nachdem der Webinar-Marathon im April fast zuende geht und das Vagrant Webinar kurz bevor steht, möchte ich natürlich gleich auf die nächsten Webinare im Mai hinweisen. Einerseits geht es dann um unsere Cloud-Lösungen welche wir über unsere Rechenzentren anbieten und einmal um das Thema Windows Vorbereitung für Puppet. Bei dem Windows Webinar liegt der schwerpunkt darauf, wie ein Windows-System soweit vorbereitet werden kann, dass sowohl eine automatische Installation über Images aber auch die anschließende Konfiguration mit Puppet möglich ist. Christoph hatte hierzu bereits einen interessanten Blog-Artikel veröffentlicht.
Zusammengefasst noch einmal die Themen, die Termine und Anmeldelinks im Überblick:

Titel Zeitraum Registrierung
Vagrant: Virtualisierungs Wrapper 30. April 2015 – 10:30 Uhr Anmelden
NETWAYS Cloud Lösungen 08. Mai 2015 – 10:30 Uhr Anmelden
Windows: Vorbereitung für Puppet 22. Mai 2015 – 10:30 Uhr Anmelden

Vorab natürlich eine schöne Restwoche!

Christian Stein
Christian Stein
Manager Sales

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Manager Sales und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

Reminder für unser Webinar "Das Open Source Rechenzentrum"

netwaysAm Mittwoch starten wir auch wieder in 2015 mit unseren Webinaren durch – angefangen mit unserem Open Source Rechenzentrum. Neben unseren Dienstleistungen rund um Icinga, Icinga 2, Puppet und vielen weiteren Open Source Lösungen, sind wird auch im Hosting-Bereich aktiv. Dabei setzen wir unter anderem auf OpenNebula, Puppet, Foreman, Ceph und viele andere Tools um einen hochverfügbaren Betrieb unserer Kundenumgebungen sicherzustellen.
Im Rahmen des Webinars wollen wir einige Themen davon ansprechen und einen besseren Überblick verschaffen, wie unsere Infrastruktur aussieht.
Das Webinar findet am 11. Februar um 10:30 Uhr statt. Wer teilnehmen möchte, kann sich natürlich gerne noch registrieren! In unserem Webinar-Archiv finden sich bis dahin viele weitere Webinare, um die Wartezeit zu verkürzen.
Bis Mittwoch!

Christian Stein
Christian Stein
Manager Sales

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Manager Sales und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

Viva la Revolución?

Docker ist in aller Munde und erfährt derzeit einen riesen Hype um sich. Es wird teilweise gar von „Revolution“ gesprochen. Doch ist das ganze wirklich so revolutionär? Die Lager in der DevOps Community sind sich hierüber nicht ganz einig und sind teilweise gespalten. Die eingesetzten Technologien aus denen Docker besteht sind eigentlich nicht neu und werfen den Mehrwert, den man in der letzten Zeit durch Configuration Management Tools wie Puppet, Chef etc. gewonnen hat, teilweise wieder zurück. Im wesentlichen besteht Docker aus einer Container-Virtualisierung, einem Copy on Write Filesystem bzw. Overlay Filesystem, einem Repository, einer Versionsverwaltung und einer mächtigen API. Das ganze zusammengeschnürt und einfach zu steuern und zu verwenden ist dann Docker.
 
Die Plattform verfolgt den Continious Integration Gedanken mit der man kontinuierlich Änderungen, möglichst automatisiert mit einer Kette an Tests, in die Produktion ausrollt. Der Workflow sieht im einfachsten Fall vor, dass man ein Image startet, Änderungen an diesem Image durchführt und diese dann als „commit“ speichert. Aus diesem kann man wiederum weitere Instanzen klonen und kann sie, sollte etwas nicht wie gewünscht funktionieren, wieder auf einen älteren Stand zurückrollen.
 
Wie immer und auch bei anderen Lösungen birgt Docker nicht nur Vorteile. Technisch gibt es einige Herausforderungen und Probleme die bei der Integration in die Produktion früher oder später auftauchen werden. (Noch) keine Möglichkeit Disk I/O zu limitieren, kein Quota auf AUFS, keine persistenten Anwendungsdaten, keine vollständige Isolation, dynamische Hostnames, Loadbalancing um nur einige zu nennen. Neben technischen Herausforderungen gibt es außerdem das Workflow Dilemma, das sich wie schon erwähnt teilweise mit den Config Management Tools beißt und deshalb auch die Lager spaltet.
 
Der richtige Weg ist aber wohl mehr eine Glaubensfrage oder am ehesten dem Use-Case gezollt. Jedes Unternehmen hat eigene Anforderungen und muss diese gegen den „Docker-Workflow“ evaluieren. Die bereits existierenden Schwierigkeiten, die es in einer automatisierten Umgebung und Continious Integretion gibt, löst Docker deshalb auch nicht, aber es zeigt einen interessanten alternativen Weg auf. Die Antwort auf die ursprüngliche Frage der revolutionären Ansätze und des Umdenkens, kann wohl erst in einigen Jahren gegeben werden nachdem Erfahrungen gemacht wurden und man den tatsächlichen Einfluss bewerten kann. Mehr zum Thema und Docker erfährt man bei uns in den Trainings.

Sebastian Saemann
Sebastian Saemann
CEO Managed Services

Sebastian kam von einem großen deutschen Hostingprovider zu NETWAYS, weil ihm dort zu langweilig war. Bei uns kann er sich nun besser verwirklichen, denn er leitet das Managed Services Team. Wenn er nicht gerade Cloud-Komponenten patched, versucht er mit seinem Motorrad einen neuen Rundenrekord aufzustellen.

Icinga2-Cluster-Demo unter Windows mit Vagrant

Icinga 2: Distributed Monitoring
Ich weiß Windows und ich passen nicht zusammen, da aber in dieser Woche mehrfach an verschiedener Stelle die Frage aufkam ob oder wie man sich das Icinga2-Cluster-Demo-Setup auf seinem heimischen bzw. firmeneigenen Windows-Computer anschauen kann, wollte ich die Frage hier gleich mal öffentlich beantworten.
Aber bevor ich zur eigentlichen Antwort auf die Frage wie komme, möchte ich kurz die Fragen was und warum beantworten auch wenn sie gar keiner gestellt hat.
Was beinhaltet das Demo-Setup? Das Setup besteht aus zwei virtuellen Maschinen mit CentOS6 auf denen immer der aktuelle Entwicklungsstand von Icinga 2 und Icinga Web 2 läuft. Hierbei ist eine Maschine der zentrale Master, der die Konfiguration hält und somit auch die Anlaufstelle für den Admin wäre, die zweite bekommt vom Master ihre Konfiguration zugewiesen und macht die eigentlich Überwachungsarbeit. Damit ordentlich was zu sehen ist kommen hier zufällige Checks zum Einsatz, so dass im Webinterface auch nicht immer alles grün ist. Entstanden ist das ganze als Demo für die Cebit und wurde dann weiterentwickelt und veröffentlicht um leichter Feedback zu sammeln.
Warum funktioniert das ganze auch unter Windows? Grundlage hierfür ist natürlich Virtualisierung in diesem Fall Virtualbox. Die Arbeit erleichtert hierbei nochmal Vagrant, das sich darum kümmert das Image herunterzuladen und es anschließend mittels Puppet in die gewünschte Form zu bringen. Und damit man die Konfiguration hierfür nicht einzeln herunterladen muss und alles einfach aktualisiert werden kann liegt alles in einem Git-Repository. Und all diese Komponenten gibt es tatsächlich auch für Windows!
Und nun zum alles entscheidenden Wie. Als Ausgangsbasis dient ein Windows auf dem man Rechte hat Software zu installieren. Wer das nicht auf seinem firmeneigenen System darf, bemüht hierfür den zuständigen Kollegen. Als erstes wird Virtualbox installiert, einfach mit dem Standardeinstellungen durch das Setup durchgehen und den Treiberinstallationen und ähnlichen Änderungen am System zustimmen. Danach das gleiche für Git und Vagrant. Wer sich mit der Software auskennt kann natürlich die von ihm gewünschten Optionen einstellen, aber wer einfach nur dazu kommen möchte die Demo anzuschauen für den reichen die Standardeinstellungen.
War die Installation der Software erfolgreich und wurde das System bei Bedarf einmal neugestart, kann es weitergehen. Im Startmenü findet sich die „Git Bash“, diese einfach per Klick öffnen. In diese Textkonsole werden dann die folgenden Befehle eingegeben:

$ git clone https://github.com/Icinga/icinga-vagrant.git
$ cd icinga-vagrant/icinga2x-cluster
$ vagrant up

Der letzte Befehl lädt dann das Image für die virtuellen Maschinenen herunter macht dieses innerhalb von Vagrant bekannt, erstellt daraus erst ein System und konfiguriert dieses, danach dann das zweite. Wer sich mit Puppet auskennt kann hier genau verfolgen was passiert, aber auch wer es nicht tut kann anhand der Ausgaben Installation und Konfiguration nachvollziehen. Sobald die Installation abgeschlossen ist kann man sich mit vagrant ssh icinga2a auf den Master bzw. vagrant ssh icinga2b auf den Satelliten einloggen. Zu root wird man mit sudo -i ohne Passwort. Auf das Webinterface greift man mit einem Browser seiner Wahl über die Portweiterleitung zu, so dass der Master unter http://localhost:8085/icingaweb und der Satellite unter http://localhost:8086/icingaweb erreichbar ist. Hierbei macht der Internet Explorer evtl. Probleme mit seinen Einstellungen welchen Seiten er denn vertrauen soll, da ich mich hiermit nicht rum schlagen wollte, empfehle ich die Verwendung eines anderen Browsers.
Ich hoffe dies kommt nun keinem wie Hexenwerk vor auch wenn es so einfach ist und da es für den Benutzer so einfach ist haben wir Vagrant sogar zum Schulungsthema erhoben. In dem Sinne allen Windowsnutzern viel Spaß mit der Icinga2-Cluster-Demo und Michi nochmal Danke für die investierte Arbeit.
P.S. Wer beim anschauen Fehler findet erstellt bitte ein Ticket auf icinga.org. Sobald dieses dann bearbeitet wurde, können mit git pull und vagrant provision die Demo-Systeme aktualisiert werden.

Dirk Götz
Dirk Götz
Principal Consultant

Dirk ist Red Hat Spezialist und arbeitet bei NETWAYS im Bereich Consulting für Icinga, Puppet, Ansible, Foreman und andere Systems-Management-Lösungen. Früher war er bei einem Träger der gesetzlichen Rentenversicherung als Senior Administrator beschäftigt und auch für die Ausbildung der Azubis verantwortlich wie nun bei NETWAYS.