Profile

Cover photo
Martin Alfke
305 followers|71,995 views
AboutPostsPhotosReviews

Stream

Martin Alfke

Shared publicly  - 
1
Add a comment...

Martin Alfke

Shared publicly  - 
 
I am eager to learn the opinion of +erkan yanar to this....
controversy, virtual machines, docker. Image sizes are very large, Actually an empty out-of-box chroot image (after debootstrap for example) is the same in all cases for all VMs and even for Docker. Docker has lower memory footprint, because of forcing to run only single process per container: ...
1
erkan yanar's profile photo
 
Och lese ich bei Gelegenheit
 ·  Translate
Add a comment...

Martin Alfke

Shared publicly  - 
2
Giacomo Vacca's profile photo
 
Good luck. I saw your talk at Puppet Camp in London in Nov 2014 and it was very interesting and informative.
Add a comment...

Martin Alfke

Shared publicly  - 
 
 
Das Programm steht, spannende Themen warten, z.B. systemd, Kernel Live-Patching, Samba4, Docker, btrfs, iSCSI-Anbindung eines Ceph Object Store, MySQL, DANE, OpenLDAP, Check_MK, Puppet4, IPv6 in der Praxis, Loganalyse mit Centralstation ... u.v.a.m.
 ·  Translate
View original post
1
Add a comment...

Martin Alfke

Shared publicly  - 
 
Puppet Enterprise on SLES
SLES and OpenSuSE are supported operatingsystems by Puppet. But I always saw trouble when installing either the Puppet Master or the Agent on SLES. One needs to take care on locales, paranoid umask, required packages. 1. locale Standard SLES installation wi...
2
Add a comment...

Martin Alfke

Shared publicly  - 
 
 
Der Openstack DACH Day 2015 findet im Juni in der Berliner Urania statt. Weil es in diesem Jahr keinen Linux-Tag gibt, haben die Organisatoren dafür einen eigenen Verein gegründet.
View original post
2
Add a comment...
Have them in circles
305 people
JP Hashagen's profile photo
Torsten Werner's profile photo
Bernd Worsch's profile photo
Thomas Halinka's profile photo
Susann Hamann's profile photo
Stefan Lampacher's profile photo
Jassi Kapaun's profile photo
Florian Thiel's profile photo
Jan Schroeter's profile photo

Martin Alfke

Shared publicly  - 
 
muss man gelesen haben...
 ·  Translate
 
Mehr oder weniger uneditiert aus dem Gehirn in den Channel genauen, weil jemand eine Diskussion vom Zaun gebrochen hat. Mal sehen, was draus wird.

Sag mal, Kris, wenn dieses Cloudzeugs so kaputt ist, wieso machst Du das dann eigentlich?

Hast Du Dir aktuelle Rechner mal angesehen? Für einen Server legst Du ab 3k Euro hin, wenn Du eine kleine Kiste zu einem guten Preis bekommen willst und für 10K Euro bekommst Du weitaus mehr Rechner, als Du brauchen kannst - 40-50 Cores, 1/4 Terabyte RAM und an die 50 TB Platten plus 2 Ports mit 10GBit-Interfaces. Wenn Du also große Maschinen kaufst, kriegst Du viel mehr Bumms für Dein Geld.

Aber: Das ist zu groß für alles. In der Tat reicht es leicht für 15-20 Produktionsinstanzen von irgendwas, oder für 200 Entwickler-Instanzen von demselben Zeugs.

Und hast Du die Mühle dann mal montiert und angeschaltet? Das tut weh. Die zählt Dir fünf Minuten lang ihre BIOSe, Herstellerlogos und Karten vor, bevor sie in die Gänge kommt. Hardware ist noch immer so ein Dreck wie 1980.

Wenn Du mit dieser Hardware was machen willst, dann muß da ein Kondom drumrum. Virtualisierung oder Container sind dieses Kondom - sie standardisieren Dir die Hardware in etwas, das sich immer gleich verhält und immer dieselben Nicht-Treiber braucht und sie erlauben es Dir, den Monsterbrocken in Stückchen klein zu schneiden, mit denen Du was anfangen kannst.

Container oder Virtualisierung?

Virtualisierung heißt, Du simulierst einen eigenen Rechner mit einem eigenen File System Buffer Cache, einer relativ festen Menge von CPUs und RAM und einer eigenen Gast-Kernel-Instanz. Im Gast einer virtuellen Maschine kannst Du ein komplett anderes Betriebssystem booten als im Host.

Der Overhead von Virtualisierung kann recht groß sein, wenn wirklich Hardware simuliert werden muß, aber in den meisten Fällen ist das nicht der Fall: Die verwendeten Treiber für Platten, Netz und so weiter machen VirtIO (http://wiki.libvirt.org/page/Virtio) und haben einen sehr geringen Overhead, weil sie genau keine Hardware simulieren, sondern Operationen an die Treiber des Hosts durchreichen. In einer solchen Umgebung kann man immer noch ein anderes Betriebssytem im Gast als im Host fahren, hat aber einen sehr geringen Virtualisierungsoverhead - jedenfalls, wenn man reale Lasten drauf tut und nicht einen Microbenchmark fährt, der designed ist, Performanceunterschiede maximal groß zu ziehen.

Container sind genau keine Virtualisierung, sondern es sind normale Unix-Prozesse, die gestartet werden. Im Gegensatz zu anderen Prozessen sind sie jedoch auf verschiedene Arten eingeschränkt: Die Menge an Systemressourcen (CPU, RAM, Netz, und so weiter), die sie nutzen können, ist durch https://en.wikipedia.org/wiki/Cgroups beschränkt und die Sicht, die sie auf das System haben, ist durch Linux Namespaces (https://lwn.net/Articles/531114/) beschränkt. Von Innen sieht ein Container also wie eine VM aus: man sieht ein eigenes Dateisystem, eigene Netzwerkinterfaces, Routingtabelle und iptables, hat eine private Prozeßliste und so weiter.

Container können ein eigenes Userland mitbringen, aber da es im Grunde nur Prozeßlisten-Subtrees mit eingeschränkten Rechten sind, ist der Kernel natürlich derselbe. Man hat also einen Redhat-Kernel mit dem Userland der Distro seiner Wahl unter dem Hintern oder wie immer die lokale Konfiguration aussieht.

Container zu starten ist fast genau so schnell wie ein normaler fork()-Systemaufruf, denn ein Container ist ja im Grunde nur ein fork() mit Zuckerguß, sollte man denken. Aber einige dieser Lagen Zuckerguß können recht dick werden und müssen auskühlen, bevor sie genießbar werden.

Das heißt in der Realität, daß ein Container oft nicht in einem Subtree des Host-Dateisystems läuft, sondern irgendeine Form von Loopback-Mount braucht, mit dem ein Image-File für den Container als Tree angemeldet wird. Ebenso hat der Container typischerweise keinen Zugriff auf die normalen Netzwerk-Interfaces des Hosts, sondern bekommt ein eigenes tun- oder tap-Interface an einer virtual Bridge und bekommt iptables-Regeln mit Firewall-Definitionen oder NAT aufgesetzt, bevor er losrennen kann. Je nach Umfang und Effizienz der Implementation hat man also schon Startzeiten für den Container, die weit über ein einfaches fork() hinausgehen, auch wenn sie wahrscheinlich unter der Setup-Zeit für eine qemu-kvm VM liegen.

Dazu kommt, daß Container-Isolation auf mehr als eine Weise nicht sehr vertrauenswürdig ist. Die in https://plus.google.com/u/0/+MathiasKrause/posts/Mj4j7UK6NSn geschilderten Probleme zum Beispiel sind nur teilweise auf LXC beschränkt - die seccomp-Fehler, die beschrieben werden, sind systemübergreifend und betreffen jeden seccomp-Clienten.

Idealerweise will man Container verwenden, wenn man keine Nicht-Linux-Gäste braucht. Aber wenn man Mandantenfähigkeit und sichere Isolation braucht, dann muß man eine Virtualisierung verwenden.

Welche Rolle spielen Quotas?

Die Ressourcen einer einzelnen Box sind beschränkt. Teilt man sie gleichmäßig auf, dann kommen auf jeden Core so und so viele GB Speicher, so und so viele IOPS und so und so viele MB/sec Platten- und Netzwerk-IO. Wenn man gegenüber seinen Gästen Zusicherungen machen möchte, etwa weil man einen SLA erfüllen muß, dann muß man seine Gäste mit Quotas ausstatten - nicht nur für CPU und RAM, sondern auch für IOPS, Disk- und Netzwerkbandbreite, Anzahl der Flows und so weiter, denn sonst kann ein einzelner Amok laufender Gast die Performance aller anderen Gäste runter ziehen.

Quotas können Token Bucket-Quotas sein, also kurze Bursts erlauben, die höher als die Quota sind, aber alle Gäste dürfen im Mittel nur so viel Ressourcen verbrauchen wie ihnen zugeteilt werden, sonst bekommt man Overcommitment und kann seine SLAs nicht einhalten.

Du redest oft von SDN und SDS. Wieso?

Wir schauen ja nicht nur auf eine Maschine. Also klar, ich kann mir eine so eine Box da hin stellen und damit rum dockern. Das ist relativ leicht. Aber wenn die Box dann umfällt, dann ist sie tot und alles, was darauf ist. Genauso, wenn ich die Maschine mal booten muß, weil Updates eingespielt worden sind und sie einen neuen Kernel laden muß - dann ist sie fünf bis zehn Minuten weg, mindestens.

SDS, Software Defined Storage, erlaubt es mir, Laufwerke zu definieren und einer VM oder einem Container bereitzustellen, und zwar idealerweise egal, wo in meinem Cluster von mehr als einer Maschine ich die VM starten möchte. Liegt auch das Bootfilesystem meiner VM auf einem solchen SDS, dann kann ich die VM beliebig in meinem Cluster starten und mit ein wenig mehr Aufwand sogar live-migrieren. Ich verliere idealerweise einen oder zwei Pings, wenn die virtuelle Maschine die letzte Phase der Migration abschließt, aber abgesehen davon merkt der Guest nichts davon, daß er nun auf einem anderen Host ist.

Das macht Wartungskonzepte für die Hosts einfacher: Ich kann einen rolling Reboot meines Computer-Clusters machen, indem ich einen Host nach dem anderen leer räume, ihn neu starte und mich dann um den nächsten Host kümmern, ohne daß die Guests übermäßig viel davon merken. Es macht auch Isolation von schädlichen Lasten einfacher: Wenn ein Host durch einen Scheduling-Fehler alle Datenbanken abbekommen hat, habe ich eine Chance, das für die Nutzer unsichtbar im Hintergrund zu reparieren.

SDN, Software Defined Netzworking, macht dasselbe für Netze: Ich kann Gastnetze beliebig definieren - Netzwerk, IP-Ranges, Ports, Firewall-Regeln und die VMs darin sind für den Gast und sein Projekt vollkommen frei definierbar. Es spielt dabei keine Rolle, daß Projekt A für sein Netzwerk A den Range 10.0.0.0/8 intern verwendet und Projekt B für sein Netzwerk B denselben Range belegt - das SDN trennt das und sortiert das auseinander, sogar dann, wenn Projekt A und Projekt B jeweils einen Gast mit 'derselben IP' auf demselben Host haben.

SDN und SDS sind harte Probleme. Sie sind mindestens so hart und komplex wie das Thema Virtualisierung selber.

Wenn man Cloud spielen möchte, also Virtualisierung mit mehr als einem großen Rechner in einem Cluster, dann braucht man eine Lösung mit einer glaubhaften, funktionierenden und skalierenden SDN und SDS-Story.

Das ist ein Problem, denn bisher haben Hersteller entweder das eine oder das andere und die im Einsatz befindlichen Open Source-Lösungen haben im Mittel gar nix.

Das hat auch damit zu tun, daß die Mengen der Leute, die Virtualisierungs-Cluster machen, und die Mengen der Leute, die ernsthaft Storage und ernsthaft Netz machen, weitgehend überlappungsfrei sind. Das sind verschiedene Dinge, die jeweils, damit man sie meistern kann, eine ganze Menge Zeit und Erfahrung brauchen.

Ports mit iptables zusammen tüdeln, Virtuelle Bridges zusammen tunneln (https://insights.ubuntu.com/2015/06/22/container-to-container-networking-the-bits-have-hit-the-fan/), hoffen, daß Open vSwitch sich auf mehr als 10 Hosts skaliert oder daß Open Daylite magisch den nötigen Code enthalten wird, der einem das macht sind halt keine wirklichen Lösungen für das Problem. Leute, die glauben, daß das dennoch der Fall ist, haben das Problem schlicht nicht verstanden. Dasselbe sinngleich bei Storage.

Punkt ist, daß man für einen Host oder drei oder maximal zehn ohne SDN und SDS-Story hinkommen mag. Danach ist alle und es tut alles beliebig weh.

Was hat Virtualisierung mit Devops zu tun?

Wenn ich alles richtig gemacht habe, und mein Underlay aus Hardware-Hosts, SDN und SDS meine Last tragen kann, ohne daß ich übermäßig darauf Rücksicht nehmen muß, welche Eigenschaften diese Last hat, dann kann ich im Overlay meine Gäste als Script schreiben.

"Mach mir ein 10/8 mit 3 VMs drin. Eine ist ein Datenbankserver, 8 Cores, 32G RAM, ein 2T Volume dran, mit diesem Ubuntu-Image und diesem Startscript, und zwei sind Webserver, 4 Cores, 8G RAM, dieses Ubuntu-Image mit jenem Startscript. Davor einen Load-Balancer Service, der mein SSL terminiert und eine externe IP mit diesem DNS-Namen hat und der nach hinten raus auf die beiden Webserver verteilt." ist ein solches Script. Mein Cluster-Manager akzeptiert das Script, schneidet sich irgendwo aus den Hosts die passenden Maschinen, legt ein Overlay-Netz drüber zieht mir das alles hoch.

Mein virtuelles Netz ist von den anderen virtuellen Netzen im Cluster isoliert - es ist egal, daß ich 10/8 verwende und ob im Netz noch weitere virtuelle Netze existieren, die auch ein eigenes, von meinem eigenen 10/8 verschiedenes 10/8 verwenden. Es ist auch egal, auf welchem Host meine Datenbank liegt, da mein SDS das Datenbank-Volume an jedem Host bereitstellen kann.

Wenn ich das so mache, und wenn ich mein Setup mit dem o.a. Script und der darauf aufsetzenden Automatisierung mit genau Null manuellen Handgriffen hochziehen kann - Code und Config auschecken, Maschinen konfigurieren, Datenbanken und Webserver hochfahren, Cluster konvergieren und Nodes in das Loadbalancer-Backend reinjoinen, dann kann ich so eine Konfiguration beliebig oft und mit Variantionen starten. Ich kann also neben dem Produktions-Setup auch Stages, Devs und so weiter produzieren und zwar schneller, als reale Hardware auch nur zum Selbsttest brauchen würde.

Wenn ich auch noch Snapshots habe, kann ich Dinge snapshotten, Tests fahren, die Modifikation der Tests wegschmeißen und mit neuem Code einen zweiten Testdurchlauf auf denselben Daten laufen lassen.

Das heißt, Dinge werden wiederholbar und reversibel zugleich und damit reproduzierbar und vergleichbar. Die ganze Ablaufkette "Hardware bereitstellen - Code verwalten - Code deployen - Code aktivieren - Code Auswirkungen messen - Code fixen" ist in Software darstellbar, scriptbar und parallelisiert ausführbar. Ich kann also Dinge risikoarm und mit geringer Latenz ausprobieren, ändern, vor- und zurückrollen und damit real ausmessen statt über hätte-könnte-müßte zu diskutieren.

Virtualisierung mit Snapshots und automatisierter Steuerung ist also ein wichtiges Hilfsmittel für Devops, wenn nicht sogar Vorraussetzung. Das geht alles Hand in Hand.

Wieso haust Du dann auf Docker ein?

Ich haue auf Container-Dateisysteme als Deliverable ein.

Die Aufgabe eines Entwicklungsprozesses ist es, etwas zu liefern, daß man in einer Produktivumgebung reproduzierbar einsetzen kann und über das man argumentieren kann. Das heißt, für eine Produktivumgebung muß ich wissen, was da in welcher Version und mit welcher Lizenz drin ist, wie es gebaut wird, was es leisten kann und wie ich es mit welchen Auswirkungen bei welcher Last wie skalieren muß.

Container-Dateisysteme verstecken solche Abhängigkeiten und machen sie einem Betrieb notlos schwer zugänglich.

Docker und sein Container-Dateisystem sind ideale Entwickler-Werkzeuge - Docker ist für Entwickler insbesondere in einem TDD-Umfeld das Beste seit geschnittenem Brot. Aber während ein Docker-Container leicht Deliverables produzieren kann - ein war, ein rpm oder deb oder sonst irgendwas sinnvoll beschreib- und verteilbares - ist der Container selber kein Deliverable und kann die Anforderungen an einen Produktionsbetrieb nicht erfüllen.

Das ist so, weil man über einen solchen Container - ein Binärblob unbekannter Herkunft, der durch andere Overlay-Blobs binär gepatched wird - nicht argumentieren kann. Welche Bestandteile in welcher Version sind drin, wer hat die gebaut, welche Lizenzen werden verwendet, was läuft intern und was konsumiert das an Speicher oder IO-Bandbreite und so weiter.

Das heißt - verwendet gerne Docker und Container-Images um Euer Zeugs zu bauen, aber baut als Ergebnis keine Images, sondern baut Pakete, und baut Euer Zeugs in Produktion aus Paketen zusammen, damit ihr versteht, wie sich das zusammensetzt und miteinander interagiert.
 ·  Translate
40 comments on original post
1
1
Peb Cak's profile photoErik Geiger's profile photo
Peb Cak
 
Kommt immer drauf an, was man auf den Kisten laufen lassen möchte. Warum man zB um JBoss oder Tomcat noch ne VM bauen möchte muss mir erstmal wer erklären. ;P
 ·  Translate
Add a comment...

Martin Alfke

Shared publicly  - 
 
XKCD on Code Quality:
http://xkcd.com/1513/
… WOW
It looks like being a house built by a child using nothing but a hatchet and a picture of a house.
It’s like a sale recipe written by a corporate lawyer using a phone autocorrect that only knew Excel formulas.
It’s like someone took a transcript of a couple arguing at IKEA and made random edits until it completed without errors.
1
Add a comment...

Martin Alfke

Shared publicly  - 
 
Portland rose - botanic garden Berlin
3
Add a comment...

Martin Alfke

Shared publicly  - 
 
Puppet Enterprise 3.8 Installation - steps and fixes
The new Puppet Enterprise Version 3.8 is out since a couple of days. It now supports Puppet 4 officially. On mailinglist people were telling about installation issues. This is a summary with fixes for SLES 11 and 12, CentOS 6 and 7, Ubuntu 12.04 and 14.10, ...
2
Add a comment...

Martin Alfke

Shared publicly  - 
 
 
The Openstack DACH Day is the community event of the Openstack association in Germany, Austria and Switzerland.
For the last two years this has been a track of the Linuxtag Berlin. This year it will be an independent event for the first time.
 ·  Translate
OpenStack DACH Day 2015
Thu, June 11, 4:00 AM
Urania Berlin, An der Urania 17, 10787 Berlin

1 comment on original post
1
Add a comment...
People
Have them in circles
305 people
JP Hashagen's profile photo
Torsten Werner's profile photo
Bernd Worsch's profile photo
Thomas Halinka's profile photo
Susann Hamann's profile photo
Stefan Lampacher's profile photo
Jassi Kapaun's profile photo
Florian Thiel's profile photo
Jan Schroeter's profile photo
Links
Contributor to
Work
Skills
Linux, Puppet, HA
zimmer sind ok. empfang ist freundlich und hilfsbereit. an der bar kann es etwas dauern. man sieht dem hotel sein alter an. wlan nur langsam kostenlos und parkplatz muss man am automaten extra bezahlen. keine minibar, statt dessen "kiosk' beim concierge, der erst einen schluessel holen muss.
Public - 2 weeks ago
reviewed 2 weeks ago
awesome! ask for the steak with blue chesse - it is no longer on the menu but fantastic. very friendly family owned restaurant.
Public - 6 months ago
reviewed 6 months ago
awesome hotel. rooms have been reworked lately. very friendly and helpfull staff - they also prepare food which is not on the menu. great nearby area.
Public - 6 months ago
reviewed 6 months ago
Awesome place to learn OpenSource related stuff.
Public - 9 months ago
reviewed 9 months ago
54 reviews
Map
Map
Map
nice conference location.
Public - 6 months ago
reviewed 6 months ago
friendly staff, fine food. a little expensive
Public - 6 months ago
reviewed 6 months ago
Ruhig gelegen. Nettes Café.
Public - 9 months ago
reviewed 9 months ago