Vagrant und Chef Performanceoptimierung

Schritt 4: DevOps Performanceoptimierung - Vagrant und Chef tunen

Die Dateien zu diesem Schritt im Workshop findest du als git Repository auf github:

https://github.com/timoschmidt/vagrant-chef-workshop/tree/master/step4

Dieses Repository enthält zwei Vagrant setups. Eins für die gecachte Variante und eins für die ungecachte Variante.

 

High Performance DevOps mit Vagrant und Chef

Bislang haben gelernt, wie wir mit dem Apache Kochbuch einen eigenen VirtualHost aufsetzen können. Je mehr Dienste installiert werden, umso länger dauert die Provisionierung und kann relativ lange dauern. Die Einführung von DevOps kann durch lange Wartezeiten schnell an Akzeptanz verlieren und zu Frust führen. Um dies zu vermeiden, sollten wir die Performance vom Begin an im Blick behalten und optimieren.


Eine Massnahme, wenn es sich beim Hostsystem um ein Linux- oder MacSystem handelt ist es, statt dem VirtualBox Filesystem für das shared folder ein NFS zu verwenden.

 

NFS für VirtualBox synced Folder aktivieren

Das VirtualBox Dateisystem is relative langsam. Vagrant bietet die Möglichkeit das shared Folder mittels NFS einzubinden:

NFS ist nur möglich auf einem Linux oder Mac Hostsystem. Wenn das VagrantFile auf mehreren Host Systemen verwendet wird, kann wie folgt dynamisch NFS aktiviert werden:

Die reine Verwendung von NFS bringt schon einen Geschwindigkeitsvorteil. Dieser kann ausgebaut werden, indem innerhalb der Box NFS caching verwendet wird.

NFS Caching in der Box verwenden

Der erste Schritt is die Anpassung der Syncfolder Optionen zur Verwendung des NFS cachings:

Ausserdem muss innerhalb der Box der NFS Caching Dienst installiert und aktiviert werden.

Die Resourcen des Hostsystems werden optimal genutzt wenn Arbeitsspeicher und CPU des Gastsystems so gesetzt werden, dass maximal verfügbare Ressourcen genutzt werden. Um dies automatisch zu tun können diese Werte dynamisch gesetzt werden.

Dynamische Zuweisung von RAM und CPU

Anhängig vom Hostsystem kann mit der Shell ausgelesen werden, wieviel Speicher und CPUs zur Verfügung stehen. Wenn möglich sollten der VM alle CPU Kerne zur Verfügung gestellt werden. Beim Speicher sollte 1/4 oder 1/2 des Speichers verwendet werden.

 

Mit folgender Anpassung können die Ressourcen per Script im VagrantFile zugewiesen werden:

DevOps hilft am Puls der Zeit zu  bleiben und mit jeder Provisionierung bzw „vagrant up“ die neuste Serversoftware zu installieren. Dazu werden apt Pakete, tar.gz und git Ressourcen aus dem Internet geladen. Die Anschlüsse sind zwar oftmals schnell genug, dennoch lohnt es sich durch caches Bandbreite zu sparen.

 

Vagrant Cachier Plugin verwenden

Das Cachier Plugin klingt sich in Vagrant ein und cached Ressourcen für eine weitere Installation. Hierbei können caches pro VagrantBox oder auch für mehrere Boxen geteilt werden. Dadurch müssen Ressourcen nicht immer wieder aus dem Internet heruntergeladen werden, sondern liegen lokal vor.

Zunächst muss das Cachier Plugin installiert werden:

 

Mit dem folgenden Snipped kann das VagrantFile angepasst werden um das Cachier Plugin zu verwenden, falls es installiert ist:

Vagrant & Chef mit und ohne Cache im Vergleich

Um die Laufzeit zu messen habe ich zehn Provisionierung mit und zehn Provisionierungen ohne Cache durchgeführt:

  • Laufzeit ohne Cache: 51,5 Minuten
  • Laufzeit mit Cache: 29,5 Minuten

 

Und hier nochmal visuell die durchschnittliche dauern pro Lauf in Minuten:

Navigation