Sicherung von LXD Containern

Leider ist in den 2.xx Versionen von LXD noch keine direkte Backup-Funktion eingebaut.

Der Workaround geht über:

  • Snapshot der VM erstellen
  • Snapshot in Image wandeln
  • Image exportieren

Für diese Schritte hab ich mir mal ein Skript zusammen gebaut, das ich nicht vorenthalten will:

#!/bin/bash
datum=$(date +%Y-%m-%d)
backupdir=/mnt/data/backup/lxd
#vmliste=$(lxc list | awk '$4 == "STARTED" {print $2}')
vmliste=$(lxc list --format csv -c n)

echo "Starte Backup auf $(hostname -f)"
echo " "
date
echo " "
echo "Sicherungsliste:"
echo $vmliste
echo " "
for vm in $vmliste
do
 echo "Sichere VM: " $vm
 lxc snapshot $vm backup && echo "Snapshot erfolgreich"
 lxc publish $vm'/backup' --alias $vm'-backup' --compression none && echo "Publish erfolgreich"
 [ -d $backupdir/$datum ] || mkdir $backupdir/$datum
 lxc image export $vm-backup $backupdir/$datum/$vm.tar && echo "Export erfolgreich"
 lxc image delete $vm-backup && echo "Image Cleanup erfolgreich"
 lxc delete $vm/backup && echo "Snapshot Cleanup erfolgreich"
 [ -e /var/lib/lxd/containers/$vm/backup.yaml ] && cp /var/lib/lxd/containers/$vm/backup.yaml $backupdir/$datum/$vm.yaml && echo "Config kopiert"
 echo " "
done

date
echo " "
echo "Sicherungen abgeschlossen."

Die Formatierung und Ausgaben zielen herbei auf meine cron-Mail-Formatierung ab 😉

Am Anfang ist noch ein „Switch“, ggfs nur die laufenden VMs zu sichern.

Ich habe die gzip-Komprimierung aus Performancegründen abgeschaltet, andernfalls dauert der Publish sehr lange. Das Image ist dann zwar größer, aber auch bedeutend schneller fertig (bei meinem etwas schwachen Server…).

WordPress, nginx, htaccess, Plesk…

Ich teste derzeit das eine oder andere Hosting-System, so natürlich auch Plesk.

Bisher gefällt mit das System sehr gut und die Preise sind auch in Ordnung.

Angenehm finde ich die Möglichkeiten, für einzelne vServer unterschiedliche PHP Versionen zu nutzen und auch ein nginx als Proxy vorzuschalten.

Allerdings gibt es genau hier ein Problem in Verbindung mit WordPress:
Nutzt man Permelinks, funktionieren diese nicht. Die .htaccess Datei, welche der Apache nutzen würde, wird von dem nginx nicht ausgewertet wenn dieser als PHP Interpreter genutzt wird.

Ein Workaround für WordPress ist es, für alle vServer die Direktiven zu ändern, was für mich einfach keine Option ist, da es hier nur um einen Bruchteil aller Sites, auf dem WordPress überhaupt genutzt wird, geht. Alternativ gibt es dort noch ein nginx-Config-Snippet, was bei mir aber auch nicht sauber funktioniert hat. Es waren beispielsweise alle CSS Files nicht mehr erreichbar und das Design total im Eimer.

Die Lösung ist eine Anpassung den Snippets:

if (!-e $request_filename)
{
rewrite ^/(.+)/$ /index.php last;
}

Einzutragen unter Plesk > Domains > domain.tld > Einstellungen für Apache & nginx > Zusätzliche nginx-Anweisungen.
Damit funktioniert es bei mir mit drei WordPress Installationen sauber, ohne alle anderen vServer zu beeinflussen.

Nachtrag:
Nachteil hierbei, der mir aufgefallen ist: Ein Zugriff auf die von Plesk erstellten AWstats/Webalizer Statistiken ist für diese Domain/Subdomain nicht mehr möglich, da auch diese URL umgeschrieben wird.

UBNT Unifi mit SSL und fhem auf dem RaspberryPi

Anleitungen, Unifi auf dem Raspberry zum laufen zu bringen gibt es inzwischen wie Sand am Meer. Ich stelle meinen aktuellen Weg ebenfalls Online.

Basis-Installation:

echo "deb http://www.ubnt.com/downloads/unifi/debian unifi5 ubiquiti" > /etc/apt/sources.list.d/ubnt.list

apt-key adv --keyserver keyserver.ubuntu.com --recv C0A52C50

apt-get update

apt-get install unifi -y

Dann sollte die Standard-Instanz vom MongoDB noch deaktiviert werden, da diese nicht genutzt wird und nur eh schon knappe Ressourcen frisst. Außerdem werden die Journal-Dateien auf 128M statt 1GB pro File, und maximal 512MB in Summe, festgelegt:

echo "ENABLE_MONGODB=no" | sudo tee -a /etc/mongodb.conf > /dev/null

echo "smallfiles = true" | sudo tee -a /etc/mongodb.conf > /dev/null

service mongodb restart

Damit ist der Unifi Controller einsatzbereit.

UBNT Unifi mit SSL und fhem auf dem RaspberryPi weiterlesen

Canonical Landscape

Lange habe ich nach einer einfachen Möglichkeit gesucht, meine Linux Hardware- und Container-Systeme elegant zentral zu verwalten.
Unter dem Begriff verwalten fasse ich dabei zusammen:

  • Sichtung der Verfügbarkeit/Erreichbarkeit
  • Infos zu den wichtigsten Werten (HDD, CPU, RAM) und Konfiguration (IP etc)
  • Updates, Verfügbarkeit und ausrollen
  • Skripte triggern
  • Software installieren

Zufällig bin ich dabei auf Canonical’s Landscape gestoßen und dachte erst, es wäre ein reiner Cloud-Service und nur für Abonementen.

Dem ist aber nicht so, es gibt neben der Cloud auch eine OnPremise Version und es werden ohen gesonderter Lizenz auch ein paar Maschinen unterstützt:

  • 10 Computer nativ installiert
  • 50 Container (LXD,…)

Neben dem erfüllen meiner oben genannten Anforderungen ist außerdem eine Anbindung an MaaS (Machine as a Service, PXE Maschinen Deployment von Canonical, auch sehr geil), OpenStack und Juju vorhanden. Canonical Landscape weiterlesen

Netscaler 10.5 – LDAPS Monitor

Um auf einem Netscaler einen Monitor für einen klassischen LDAP Service bereitzustellen ist bereits ein Monitor vorhanden, dieser funktioniert allerdings nicht wenn LDAPS genutzt wird. Der konfigurierbare Secure-Flag auf den Monitor würde zwar die Kommunikation zum Dispatcher auf Secure umstellen, nicht aber die Anfragen durch das Perl Skript an den LDAP Server welche hier relevant sind.

Soll der LDAP Monitor einen LDAPS Service prüfen, ist er erforderlich das Perl Skript selber anzupassen.

Netscaler 10.5 – LDAPS Monitor weiterlesen