vServer Administration mit libvirt
Vor kurzem hatte ich von den Virtualisierungsmöglichkeiten von kvm berichtet. Nun möchte ich das ganze etwas erweitern, und zwar mit libvirt.
libvirt-bin ist ein kleines Tool, welches eine „Mini-Shell“ für die einfache Administration von virtuellen Servern auf einem Hostsystem ermöglicht.
Die Konfiguration der virtuellen Systeme läuft dabei über XML Dateien ab, welche durch den Daemon geparst werden. Darin wird ganz normal angegeben, welche Virtualisierungssoftware, wie viel RAM, wie viel bzw. welche virtuelle Disk und wie viel Kerne die virtuelle CPU bekommt.
Der Vorteil liegt hier klar in der Hand: libvirt übernimmt das komplette Managment. Man kann sich bei mehren, gleichzeitig auf einem Server betrieben virtuellen Servern alle Parameter für den Start des Gasts via kvm sparen. Bei einem Reboot besteht die Möglichkeit, libvirt vorzugeben, ob und welche Gäste automatisch wieder gestartet werden.
Installation
libvirt kann bei Debian und Ubuntu-Systemen direkt aus den Paketquellen installiert werden.
apt-get install libvirt-bin
Konfiguration
Standardmäßig startet libvirt-bin bei einem Systemstart mit. Wer das verhindern möchte, sollte den Dienst via `rcconf` direkt aus dem entsprechenden Runlevel entfernen.
Zunächst empfiehlt es sich die Datei /etc/libvirt/qemu.conf den Wünschen entsprechend anzupassen. Interessant ist vorallem der VNC Listenport.
vnc_listen = "0.0.0.0"
Wenn man VNC nicht dauernd braucht, empfiehlt es sich den Listenport auf localhost (127.0.0.1) zu binden, und bei Bedarf des VNC Servers lokal auf SSH-Portforwarding zurückzugreifen, denn libvirt-bin unterstützt (zumindest nach meinen Tests) keine funktionierende Passwortauthentifikation für die VNC Erweiterung für kvm.
Man kann zwar durchaus ein Passwort in der vServer Konfiguration angebenen, aber das wird dann entsprechend ignoriert. Was natürlich dazu führt, dass man dann einen nach außen hin offenen, ohne Passwort gesicherten VNC-Rootserver im Netz stehen hat. Wie lang dieser dann überlebt, ist wohl nur eine Frage der Zeit.
Wie angesprochen läuft die komplette Konfiguration der Gastsysteme über XML Files statt. Diese werden in /etc/libvirt/qemu/ abgelegt. Eine komplette Beschreibung aller Features würde hier wohl zu weit gehen. Ich verweiße an dieser Stelle auf die libvirt Dokumentation und gebe hier nur eine kurze Beispielkonfiguration an, die ihr euch hier ansehen könnt.
Dort sind alle wichtigen Parameter angegeben. Einige sind auch gar nicht nötig, da diese von libvirt-bin selbst generiert werden. Eine „saubere“ XML kann man sich nach dem Import in libvirt per `virsh dumpxml server` erstellen lassen.
Steuerung der vServer
Gestartet, gestoppt und alles andere wird mit dem Kommando „virsh“. Hier gibt es zwei Möglichkeiten: gibt man den Befehl ohne Parameter an, so landet man in einer Mini-Shell, in der man mehrere Kommandos schnell hintereinander eingeben kann. Das ganze funktioniert aber auch mit einem Parameter (start, destroy) direkt aus der Bash heraus.
Wichtig ist die Bennenung. `virsh start server03` entspricht dem Server, so wie er in der Konfiguration in der Datei /etc/libvirt/qemu/server03.xml angegeben ist.
virsh help # Alle Kommandos im Überblick
virsh start server01 # Startet den vServer
virsh shutdown server01 # Fährt den vServer sauber herunter
virsh destroy server01 # Stoppt den vServer sofort (abwürgen)
virsh reboot server01 # Rebootet den Server (Neustart)
libvirt-bin aus den Debian Backports
Installiert man libvirt-bin aus den Debian Backports, so hat man einen sehr großen Vorteil: die Version von backports.org ist um einiges neuer als die in den offiziellen Debian Lenny Quellen und hat somit den Bug nicht, der dazu führt, dass eigentlich angeschaltete Systeme in der virsh Shell, nach einem reload des libvirt-bin Dienstes als „off“ angezeigt werden. Das ist manchmal etwas verwirrend.
Außerdem kann man mit dieser Version im laufenden Betrieb neue virtuelle Systeme hinzufügen oder löschen, ohne den kompletten libvirt Daemon neuzustarten. Das ist auch ein Problem der veralteten Version: um ein weiteres System hinzuzufügen müssen so erst alle Systeme heruntergefahren und anschließend neu „gebootet“ werden – was äußerst umständlich ist.
Die Installation aus den Backports gestaltet sich als einfach:
echo "" >> /etc/apt/sources.list
echo "deb http://www.backports.org/debian lenny-backports main contrib non-free" >> /etc/apt/sources.list
apt-get update
apt-get -t lenny-backports install libvirt-bin
wieder ein schöner Eintrag.
Danke 🙂