Mesos

Mit Mesos hat das Apache Projekt ein Cluster-Manager geschaffen, der sich um das Ausführen verteilter Applikationen kümmert.

Der Mehrwert ist, dass mit dem Framework ein Standard geschaffen werden soll, der das komplexe “Rad neu erfinden” für solche Zwecke abgeschafft werden soll und auf bereits funktionierende Software gesetzt werden kann. Ein Beispiel ist z.B. das managen eines Quorum in einem Cluster. Jeder Clusterstack wie Pacemaker/Corosync etc. hat seine eigene Logik. Mesos setzt hierfür auf das ebenfalls aus dem Hause Apache stammende Zookeeper. Das wiederum kann dann modular für Mesos, SolR, eigene Entwicklungen usw. genutzt werden.

Was macht jetzt Mesos? Mesos besteht aus mind. einem Master und einem Slave. Der Master verteilt Jobs oder Anwendungen und die Slaves führen diese aus. Die Slaves melden außerdem regelmäßig ihre aktuelle Auslastung, so dass der Mesos-Master weiß wohin er die neuen Aufgaben verteilen soll. In dieses Konstrukt kann sich ein weiteres Framework, dass für die unterschiedlichsten Zwecke verwendet werden kann, registrieren. Es gibt die wildesten Frameworks genannt Marathon, Aurora, Chronos und viele mehr. Jedes nutzt als Basis Mesos, aber eben für seine eigenen Zwecke.

Chronos ist z.B. für das Ausführen von zeitgesteuerten Jobs entwickelt worden. Also ein Crond, nur eben, dass die Cronjobs nicht nur auf einem Host sondern auf vielen ausgeführt werden können. Mit Marathon werden Commands oder ganze Anwendungen am laufen gehalten. Einmal gestartet, sorgt es dafür dass es immer mind. xmal gestartet ist. Ein Job kann z.B. ein “/usr/sbin/apachectl -d /etc/apache2 -f apache2.conf -e info -DFOREGROUND”. Das setzt natürlich die installierte Software auf dem Slave voraus, also Apache2.

Noch abstrakter geht es indem man Mesos konfiguriert einen externen containerizer zu nutzen: Docker. Obiges Beispiel würde also nicht auf dem Slave direkt gestartet werden, sondern ein Docker Container starten und in diesem das Command ausführen. Betrieben werden kann das ganze auf physischen oder in virtuellen Servern oder beidem.

Wozu man so etwas verwenden kann muss man letztendlich selbst entscheiden. Die Lösung verfolgt den SaaS/PaaS Ansatz und stellt im wesentlichen Hardwareressourcen aus einem Pool(IaaS) zur Verfügung und bietet Bibliotheken, Frameworks und APIs um sie zu steuern. Das Buzzword nennt sich ganz allgemein Cloudcomputing 🙂

Für Docker werden wir übrigens noch dieses Jahr Schulungen anbieten.

Sebastian Saemann

Autor: Sebastian Saemann

Sepp 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 zusammen mit Martin das Managed Services Team. Wenn er nicht gerade Server in MCollective einbindet, versucht er mit seinem Motorrad einen neuen Geschwindigkeitsrekord aufzustellen.

Virtualisierung stoppen!

Trotz der provokativem Überschrift werde ich einer der letzten sein, der dafür plädiert weniger zu virtualisieren – ganz im Gegenteil. In Zeiten von IaaS, PaaS, SaaS geht eigentlich nichts ohne Virtualsierung. Ob Vollvirtualsierung, Paravirtualisierung oder Container-based-Virtualisierung die Möglichkeiten sind nahezu grenzenlos, die aufsetzenden Frameworks unzählig.

In produktiven Umgebungen mit hoher und unterschiedlichster Workload und viel gemeinsam genutzten Infrastrukturkomponenten bzw. Ressourcen ist es deshalb umso wichtiger einzelne virtuelle Maschinen oder Container zu “stoppen” besser gesagt zu drosseln. Natürlich kann man mit mehr Hardware aufkeimende Engpässe entsprechend ausdehnen. Oft sind aber kleine und ungewollte Verhalten der Auslöser für querschießende Prozesse, die parallel ausgeführte Maschinen beeinflussen und somit die Qualität des generellen Services beeinflussen.

Drosseln kann man u.a. CPU Zeit, Memory, IO auf Blockdevices, IO auf NICs. Wie immer gibt es mehrere Möglichkeiten entsprechende Limits zu setzen. Pauschal lässt sich mit cgroups über die Virtualsierungstechnologien hinweg gut und effizient drosseln. Für KVM bzw. Qemu sind die eingebauten Features die effizientesten. Beim aktiven Drosseln muss der CPU des Hosts entsprechend arbeiten und ist laut IBM hier einen Tick effizienter bei Qemu-capped im Vergleich zu cgroup-capped.

KVM Prozesse können mit libvirt auch zur Laufzeit gedrosselt werden. Die Bandbreite der ersten Festplatte einer KVM-VM würde man mit Hilfe von virsh wie folgt auf 10MB/s und 50iops drosseln:

virsh blkdeviotune $virshid $name --live $total_bytes_sec $total_iops_sec
virsh blkdeviotune 123 vda --live 10240000 50

Das Cloud-Computing Framework OpenNebula wird in seiner nächsten Version ebenfalls Funktionen zur Drosselung bereitstellen.

Wem das alles zu umständlich ist, nutzt einfach das folgende funktionierende aber nicht ganz ernstgemeinte Command:
while true; do kill -STOP $ID; sleep 1; kill -CONT $ID; done

Sebastian Saemann

Autor: Sebastian Saemann

Sepp 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 zusammen mit Martin das Managed Services Team. Wenn er nicht gerade Server in MCollective einbindet, versucht er mit seinem Motorrad einen neuen Geschwindigkeitsrekord aufzustellen.

ZFS Replikation mit zrep

Das Dateisystem ZFS wurde ursprünglich von der Firma “Sun Microsystems” entwickelt, die dann später bekanntermaßen von Oracle gekauft wurde. Das sind jetzt keine wirklichen Neuigkeiten und ZFS ist auch nicht neu, aber immer noch in seinen Bereichen das Maß der Dinge. Auf Linux muss man allerdings wegen Lizenzschwierigkeiten von Haus aus darauf verzichten und sich mit dem FUSE Modul oder dem zfsonlinux Kernel Modul Abhilfe schaffen. Für Linux steht ja schon seit langem BTRFS in den Startlöchern, was aber bis heute noch nicht als stable markiert ist.

ZFS ist ein Copy on Write Filesystem, das durch ein reiches Feature Set glänzen kann. Unter anderem unterstützt es Snapshots und kann diese Snapshots inkrementell versenden, um einen Datenzustand als Backup oder für höhere Verfügbarkeit auf einen weiteren Server vorhalten zu können. Das ganze ist denkbar einfach:

zfs snapshot tank/myzfs@1hourago
zfs snapshot tank/myzfs@now
zfs send -I tank/myzfs@1hourago tank/myzfs@now | ssh server2.domain zfs receive tank/myzfsbackup

Die drei Befehle erzeugen zwei Snapshots die dann dann mit “zfs send” inkrementell von “1hourago” bis “now” an den “server2” gesendet und dort empfangen werden. Die Schwierigkeit besteht jetzt darin, Snapshots auch wieder zu löschen und dafür zu sorgen, dass die Snapshots aufeinander aufbauen.

Hierfür gibt es ein KSH Script mit dem Namen zrep. Zrep sorgt sich genau darum und kann noch viel mehr. Neben dem initialen synchronisieren und dem Handling der Snapshots kann mit zrep auch auf den zweiten Server im Fehlerfall geschwenkt werden. Während des Schwenks werden die Filesysteme auf beiden Seiten readonly gesetzt, der letzte Zustand gesynced und anschließend läuft die Replikation in die andere Richtung weiter.

Mehr Informationen zu zrep findet man auf der Website zu dem Projekt.

Sebastian Saemann

Autor: Sebastian Saemann

Sepp 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 zusammen mit Martin das Managed Services Team. Wenn er nicht gerade Server in MCollective einbindet, versucht er mit seinem Motorrad einen neuen Geschwindigkeitsrekord aufzustellen.

Sflow Traffic mit Elasticsearch

Das Webinterface zu Elasticsearch “Kibana” wurde vor kurzem in der Version 3.0.0. GA released auch Elasticsearch selbst steht im neuen Glanz mit vielen neuen und nützlichen Features. Viele kennen bereits diese zwei Komponenten vermutlich unter anderem durch den Einsatz von Logstash. Dass man diese zwei Komponenten auch ohne Logstash für diverse Anwendungsfälle gut verwenden kann steht außer Frage.

Wir entwickeln aktuell an einer Ruby-Anwendung, die Sflow Daten empfängt, verarbeitet und an Elasticsearch sendet bzw. dort ablegt. Mit dem Kibana Webinterface lassen sich dann leicht Graphen über die gesammelten Daten auswerten und darstellen. Sflow ist ein Netzwerkprotokoll, dass u.a. Stichproben aus dem fließenden Traffic pickt und diese dann als sogenannte Samples an einen Collector sendet. Die Liste der Collectoren ist lang besteht allerdings meist aus kommerziellen closed-source Produkten.

Generell lassen sich daraus Informationen aufbereiten und ableiten, die zum Beispiel die Top 10 der IP-Adressen auf einem Switch, die den meisten Traffic verursachen oder VLANs die besonders viel Traffic verbrauchen und viele mehr.

Die Anwendung werden wir in den nächsten Wochen auf Github zur Verfügung stellen und in einem weiteren Blogpost darauf aufmerksam machen. Solange gibt es schon mal ein Sneak-Preview in Form von Screenshots 🙂

Bildschirmfoto 2014-03-25 um 14.46.24
Bildschirmfoto 2014-03-25 um 14.46.56

Sebastian Saemann

Autor: Sebastian Saemann

Sepp 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 zusammen mit Martin das Managed Services Team. Wenn er nicht gerade Server in MCollective einbindet, versucht er mit seinem Motorrad einen neuen Geschwindigkeitsrekord aufzustellen.

Opennebula Retina

Das Opennebula Release 4.4 Codename “Retina” ist zwar schon einige Zeit verfügbar, aber jetzt hat es auch in unsere Private Cloud geschafft.

Opennebula? Opennebula ist ein Cloud-Framework mit dem man private, public und hybrid Clouds erstellen kann. Wir haben schon in mehreren Blogbeiträgen darüber berichtet.

In der neuen Ausgabe sind folgende neue Features und Verbesserungen hervorzuheben:

– Multiple System Datastores
Hiermit kann man virtuelle Maschinen auf verschiedenen Storage-Backends starten und laufen lassen, was zu einer besseren Lastverteilung in großen Umgebungen mit viel I/O führt.

– EC2 Support
Es gibt einige Verbesserungen was Cloud-Bursting Richtung Amazon anbelangt, vorallem das Template-Handling.

– Sunstone
Das Webinterface hat jetzt verbesserten Apache und Memcached Support und schließt einige Bugs. Auch viele kleine Änderungen wie das Starten des VNC Fensters als losgelösten Tab und ein grafischer Dialog für das Aktualisieren von Templates runden das Bild ab.

Darüber hinaus gibt es natürlich jede Menge Bugfixes und weitere Features die sich auf der Website von Opennebula nachlesen lassen.

Außerdem ist vorallem der problemlose Upgradeprozess einen Satz wert. Unsere produktive Umgebung wurde durchgehend seit Version 3.2 zeitnah aktualisiert und hat nie größere Probleme gehabt von einem Release auf das nächste, sofern man sich an die gute Upgrade-Dokumentation gehalten hat.

In den kommenden Wochen gibt es bei uns wieder ein Webinar zum Thema Opennebula, die genauen Termine folgen.

Sebastian Saemann

Autor: Sebastian Saemann

Sepp 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 zusammen mit Martin das Managed Services Team. Wenn er nicht gerade Server in MCollective einbindet, versucht er mit seinem Motorrad einen neuen Geschwindigkeitsrekord aufzustellen.