KVM-Node
Diese Anleitung beschreibt die Konfiguration von KVM-Nodes für das sourceDESK-Plugin für KVM-vServer. Als System wird hier Debian 8 verwendet, dies sollte 64-bit sein, auch wenn 32-bit theoretisch von KVM unterstützt wird.
Inhaltsverzeichnis
Software-Installation
Zuerst prüfen wir, ob die verbaute CPU Hardware-Virtualisierung unterstützt.
egrep '(vmx|svm)' --color /proc/cpuinfo
In der Ausgabe muss vmx oder svm auftauchen, ansonsten kann die CPU nicht für KVM verwendet werden.
Nun installieren wir KVM und Tools zur Verwaltung.
apt-get install qemu-kvm libvirt-bin bridge-utils uuid
Konfiguration
Zuerst sollte der Hostname des Nodes konfiguriert werden. Dieser wird in die Datei /etc/hostname eingetragen und über das Kommando hostname gesetzt.
Die System-Zeit und die Zeitzone sollte überprüft werden, diese Einstellungen müssen korrekt sein. Die Zeitzone können wir wie folgt auf die deutsche Zeitzone stellen:
dpkg-reconfigure tzdata
Wir müssen nun sicherstellen, dass der Netzwerk-Manager von Debian deaktiviert ist. Gleichzeitig aktivieren wir die Autostart-Funktion von KVM:
systemctl stop NetworkManager.service systemctl disable NetworkManager.service update-rc.d libvirtd defaults
Eine Portänderung von SSH ist möglich, auch wenn wir davon abraten. Wenn der Port geändert wird, auf jeden Fall einen Port kleiner als 1024 wählen! Passwort-Authentifizierung darf nicht deaktiviert werden.
Jetzt kommt der komplizierteste Schritt bei KVM: Die Netzwerkkonfiguration. Wir nutzen hierzu eine Netzwerk-Brücke (Bridge).
Wir erstellen die Bridge br0 mit folgendem Kommando von bridge-utils:
brctl addbr br0
Als nächstes müssen wir einen Autostart der Bridge beim Server-Start einrichten. Wir gehen mit dieser Konfiguration davon aus, dass eth0 zum Zugriff auf das Netzwerk durch den Server genutzt wird. Andernfalls muss das Interface entsprechend geändert werden. Wir müssen nun die Datei /etc/network/interfaces bearbeiten. Am Ende der Datei fügen wir folgende Konfiguration für die Bridge ein:
auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0
Diese Konfiguration geht davon aus, dass DHCP für die IP-Adresse verwendet ist. Ist dies nicht der Fall, übernehmen Sie bitte die IP-Konfiguration von eth0. eth0 taucht später nicht mehr in der Konfigurations-Datei aus, das komplette Netzwerk läuft über die Bridge.
Wir starten den Server nun neu. Nach dem Neustart muss ifconfig zeigen, dass die Bridge br0 eine IP-Adresse hat und eth0 keine IP-Adresse mehr zugeordnet ist. Damit ist die Netzwerk-Konfiguration abgeschlossen.
Templates
Da die Betriebssystem-Installation bei KVM vom Nutzer via VNC erfolgt, ist eine ISO-Datei notwendig, die dann beim Boot-Vorgang eingebunden wird. Es kann hier also theoretisch jedes Betriebssystem verwendet werden, auch Windows.
Die entsprechenden Distributionen kann man also direkt auf der jeweiligen Seite der Distribution herunterladen.
Der Einfachheit halber nutzt sourceDESK nur ISO-Dateien aus dem Verzeichnis /home/iso, welches Sie anlegen müssen. Dorthin laden Sie bitte sämtliche ISO-Dateien, die Sie mit KVM verwenden möchten.
Zu Testzwecken laden wir einfach eine minimale Debian-Version mit Netinstall:
mkdir -p /home/iso cd /home/iso wget http://cdimage.debian.org/debian-cd/8.5.0/amd64/iso-cd/debian-8.5.0-amd64-netinst.iso
Testen
Wir erstellen nun die Verzeichnisse /home/xml und /home/hdd:
mkdir -p /home/xml mkdir -p /home/hdd
Wir erstellen nun die Datei /home/xml/test.xml mit folgendem Inhalt:
<domain type='kvm'> <name>test</name> <uuid>f5b8c05b-9c7a-3211-49b9-2bd635f7e2aa</uuid> <memory>1048576</memory> <currentMemory>1048576</currentMemory> <vcpu>1</vcpu> <os> <type>hvm</type> <boot dev='cdrom'/> </os> <features> <acpi/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/kvm</emulator> <disk type="file" device="disk"> <driver name="qemu" type="raw"/> <source file="/home/hdd/test.img"/> <target dev="vda" bus="virtio"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/> </disk> <disk type="file" device="cdrom"> <driver name="qemu" type="raw"/> <source file="/home/iso/debian-8.5.0-amd64-netinst.iso"/> <target dev="hdc" bus="ide"/> <readonly/> <address type="drive" controller="0" bus="1" target="0" unit="0"/> </disk> <interface type='bridge'> <source bridge='br0'/> <mac address="00:00:A3:B0:56:10"/> </interface> <controller type="ide" index="0"> <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1"/> </controller> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='5900' listen='0.0.0.0' passwd='test1234'/> <console type='pty'> <target port='0'/> </console> </devices> </domain>
Nun muss die Festplatte noch erstellt werden, wir nutzen hierzu qcow2 als Image-Format:
qemu-img create -f qcow2 /home/hdd/test.img 10G
Damit haben eine 10 GB große Festplatte und erstellen nun den vServer mit einem CPU-Kern und 1 GB RAM:
virsh create /home/xml/test.xml
Nun sollte die VM ein virtuelles Interface vnet0 bei der Bridge br0 bekommen haben, das überprüfen wir:
brctl show
Es sollte nun auch ein VNC-Server auf Port 5900 gestartet wurden sein, dies können wir auch prüfen:
netstat -nap | egrep '(kvm|qemu)'
Als nächstes verbinden wir uns mit einem VNC-Client auf den Host-Server auf Port 5900, hier hört der VNC-Server der VM. Das Passwort lautet test1234.
Freie IP-Adressen
Damit sourceDESK weiß, welche IP-Adressen für die vServer noch zur Verfügung stehen, muss die Datei /root/free-v4.txt und/oder /root/free-v6.txt angelegt werden. In diese Dateien wird pro Zeile eine freie IPv4-/IPv6-Adresse eingetragen.
Beispiel:
1.2.3.4 5.6.7.8 9.0.1.2
Hinzufügen
Beim Hinzufügen eines Produktes in sourceDESK muss nur der Hostname (eventuell mit geändertem SSH-Port, zum Beispiel vm01.sourceway.de:923) und das Root-Passwort angegeben werden.
Sie können sodann die Einstellungen für den vServer vornehmen, hier können Sie die Anzahl der CPU-Kerne, den Arbeitsspeicher und die Festplatte einstellen.