ESXi Backup mit GhettoVCB

Mit dem Open Source-Tool GhettoVCB ist es möglich, von der ESXi-Shell aus virtuelle Machinen zu sichern.Das Tool ist hier beschrieben.

Das Shell-Script legt einen Snapshot an oder fährt VMs herunter, um dann die Dateien auf einen Datenträger zu kopieren. Am Ende kann es eine Mail versenden.

Zum Versenden der Mail unter ESXi muss allerdings eine Firewallregel ergänzt werden, die nach einem Reboot wieder aktiviert werden muss.

Firewallregel:

<!– Firewall configuration information for ghettovcb-mail –>
<ConfigRoot>
<service id=’0033′>
<id>ghettomail</id>
<rule id=’0000′>
<direction>outbound</direction>
<protocol>tcp</protocol>
<porttype>dst</porttype>
<port>25</port>
</rule>
<enabled>true</enabled>
<required>false</required>
</service>
</ConfigRoot>

Diese Regel muss in einer Datei stehen im Verzeichnis /etc/vmware/firewall. Wenn die Datei dort steht, muss die Regel noch aktiviert werden mit esxcli network firewall refresh.

Die Datei mit der Firewallregel kann auf einem Datenträger gespeichert sein, um sie dann beim Reboot ins oben angegebene Verzeichnis zu kopieren. Auf dem Hetznerserver sind das die beiden Rootserverplatten mit den Namen datastore1 und datastore2.

Damit die Regel auch nach einem Reboot wieder aktiv ist, wird in die /etc/rc.local folgende Zeilen ergänzt:

/bin/cp /vmfs/volumes/datastore1/Programme-Skripte/ghettomail.xml /etc/vmware/firewall
/sbin/esxcli network firewall refresh

—     noch zu testen, ob es so geht ———-

Sinnvollwerweise kann man einen cronjob anlegen, damit das Backup zyklisch durchgeführt wird.

IPv6-only-Server

Auf einem Root-Server EX4 bei Hetzner läuft ein Ubuntu-Server, der ausschließlich über IPv6 kommunizieren kann.

Grundkonfiguration des Netzwerkanschlusses in /etc/network/interfaces:

auto eth0
iface eth0 inet6 static
address 2a01:4f8:150:61c1::3
netmask    59
gateway 2a01:4f8:150:61c0::1

DNS:

Neben der IPv6-Netzkonfiguration mit IP-Adresse und Router sind die Nameserver-Adressen wichtig. Hetzner bietet IPv6-ansprechbare Nameserver an.

/etc/resolv.conf:

nameserver 2a01:4f8:0:a006::add:1010
nameserver 2a01:4f8:0:a102::add:9999
nameserver 2a01:4f8:0:a111::add:9898

Im DNS-Server trägt man sinnvollerweise Namen für den IPv6-Host ein, z.B.

ubuntuv6.prof-lang.de. IN AAAA 2a01:4f8:150:61c1::3

Die Reverse-Auflösung lässt sich im Robot unter „IP“ anlegen.

Software-Updates: Die ubuntu-Repositories von Hetzner sind über IPv6 erreichber ! Die Servername müssen lediglich um den Zusatz ipv6 ergänzt werde, also in der source.conf:

deb http://mirror.ipv6.hetzner.de/ubuntu/packages oneiric main restricted universe multiverse
deb http://mirror.ipv6.hetzner.de/ubuntu/packages oneiric-updates main restricted universe multiverse
deb http://mirror.ipv6.hetzner.de/ubuntu/security oneiric-security main restricted universe multiverse

Laden weiterer Software

Nicht alles ist in den Repositories enthalten oder liegt in anderen, nicht bei Hetzner vorhandenen Repositories. Hier hilft SixXs weiter, die einen IPv6-Webproxy bieten, um von IPv6-Adressen aus auf IPv4-adressierte Webserver zuzugreifen (an eine Adresse sixxs.net anhängen).

NTP

Ubuntu installiert den NTP-Service. Auch hier muss in /etc/netp.conf ein IPv6-ansprechbarer Zeitserver eingetragen werden. Eine Möglichkeit ist ntp.eu.sixxs.net, hinter dem sich viele andere NTP-Server verbergen.

FTP-Server

Nutzbar ist der vsftpd. Neben der Standardkonfiguration ist es notwendig, in der /etc/vsftpd.conf den Parameter listen_ipv6 zu aktivieren und dafür listen auszukommentieren.

Webmin:

Webmin ist ein schwierigerer Fall. Die Quelle ist nicht per IPv6 erreichbar. Wegen automatischer Weiterleitungen, in denen dann IPv4-Adressen vorkommen, geht auch der Sixxs-Proxy nicht. Es bleibt dann nur, das Installationsarchiv auf einen anderen Rechner zu laden und dann mit FTP hochzuladen. Nach Installieren der Voraussetzungen lässt sich webmin installieren.

Nächstes Problem: Der Webmindienst ist nicht über IPv6 erreichbar, aber über IPv4 (nachprüfbar mit netstat -nlp). Hier bleibt nun eine Möglichkeit: Mit lynx textbasiert in den lokalen webmin einloggen und in der Webmin-Konfiguration IPv6 zulassen und speichern. Dann funktioniert der Zugriff. Im Nachhinein stellt sich heraus, dass dieser aufwändige Weg unnötig ist, wenn man direkt in /etc/webmin/miniserv.conf einträgt ipv6=1.

Webserver und ssh-Server sind direkt erreichbar, Software-Updates funktionieren.

Rootserver-Backup mit Tartarus und Linux Hot Copy

Eine Anleitung für Tartarus ist im Hetzner-Wiki zu finden. Da das Filesystem nicht mit LVM angelegt ist, gehen auch keine LVM-Snapshots, die von Tartarus unterstützt würden. Statt dessen wird das Linux Hot Copy von R1Soft verwendet.

Täglich morgens um 5 Uhr wird ein Vollbackup des Systems (/) erstellt. Der Server verwendet RAID 0 und hat zwei Partitionen /dev/md1 und /dev/md2.

Vor dem Backup wird mit Linux Hot Copy ein (Blockdevice-)Snapshot der Partitionen /dev/md1 (/boot) und /dev/md2 (/) erstellt und nach /var/hotcopy/md2_hcp1 gemountet.

Das gemountete Snapshot-Verzeichnis wird dann mit Tartarus (als Filebackup) gesichert.

Dazu dient folgendes Cron-gesteuerte Skript:

#!/bin/sh
# /usr/local/sbin/backup.sh
# Run all backup profile found in /etc/tartarus/ and pass
# command line arguments on to tartarus (e.g. -i)
/usr/sbin/hcp -m /var/hotcopy/md2_hcp1 /dev/md2
/usr/sbin/hcp -m /var/hotcopy/md2_hcp1/boot /dev/md1
for profile in /etc/tartarus/*.conf; do
/usr/sbin/tartarus $* "$profile"
done
/usr/sbin/hcp -r /dev/hcp2/usr/sbin/hcp -r /dev/hcp1

Die Profildatei /etc/tartarus/snap.conf für das Snapshop-Verzeichnis ist:

# Allgemeine Einstellungen einlesen
source /etc/tartarus/generic.inc
# Name des Sicherungsprofils
NAME="snap"
# Verzeichnis / sichern
DIRECTORY="/var/hotcopy/md2_hcp1"
# Keine temporären Dateien sichern
# mehrere Ordner durch Leerzeichen trennen
EXCLUDE="/var/hotcopy/md2_hcp1/tmp/ /var/hotcopy/md2_hcp1/var/spool/postfix/private/"
# keinen LVM-Snapshot erstellen
CREATE_LVM_SNAPSHOT="no"
INCREMENTAL_TIMESTAMP_FILE="/var/spool/tartarus/snap-timestamps"

Nach dem Backup werden die Snapshots wieder gelöscht (in der richtigen Reihenfolge, sonst geht der umount schief).

Das Backup befindet sich dann als verschlüsselte Archivdatei auf dem Hetzner-Backupserver.

Zum Restore muss die Archivdatei geholt und in einem Verzeichnis ausgepackt werden. Dann hat man Zugriff auf die Dateien.

iRedMail

iRedMail ist eine Skriptsammlung, die alle wesentlichen Komponenten eines Mailsystems installiert und vorkonfiguriert. Dazu gehören auch das die Erstellung von Schlüsseln für verschlüsselten Zugang zu den Diensten oder das Anlegen von Datenbanken in Mysql (oder LDAP) und das Ergänzen der Apache-Konfiguration.

In der derzeit aktuellen Version iRedMail 0.7.1 wird als Verwaltungstool iredadmin verwendet. Ich habe aber lieber postfixadmin wegen des etwas größeren Leistungsumfangs und habe die Version 2.3.3 installiert.

Großer Vorteil von iRedMail ist die vollständige Installation aller benötigen Teile und deren sinnvolle Vorkonfiguration. Großer Nachteil ist, dass es nicht möglich ist, Updates einzuspielen. Wenn man eine Version über eine vorhandene drüberinstalliert, kommt man in Teufels Küche. Manche Dienste laufen nicht mehr, Datenbankpasswörter stimmen nicht mehr. Es ist jedenfalls eine Menge Handarbeit angesagt, um die Installation wieder ans Laufen zu bekommen. Bleibt nur eines: Nur ein einziges Mal iRedMail installieren und dann nur noch nach den Upgrade-Hinweisen in der Homepage der Software richten. Paketupgrades im Betriebssystem haben bisher immer funktioniert, ohne Fehler nach sich zu ziehen. Dies liegt sicherlich daran, dass Paketupgrades normalerweise die Konfigurationsdateien beibehalten (jedenfalls kann man das beim Installieren so bestimmen).

Auch ein Deinstallieren der Software geht zwar mit Hilfe eines Skripts, man muss aber dennoch genau aufpassen, wie man welche Frage bei der Deinstallation beantwortet.

In iRedmail enthalten ist der Webmail-Dienst roundcube. Dieser ist, ergänzt um ein paar Plugins, gut zu gebrauchen. Er erlaubt es Benutzern, neben der umfassenden Mailhandhabung, Passwörter zu ändern, und Filter für Spam, Weiterleitungen oder Abwesenheit (mittels Plugin managesieve und sieve-Skripten) zu konfigurieren.