Linux-Admin: VM-Cluster des Otto-Diels-Instituts

Aus Hergipedia
Zur Navigation springen Zur Suche springen

Wozu ist das gut?

Diese Anleitung erklärt die Organisation, Wartung und Troubleshooting der Server-Virtualisierung im Otto-Diels-Institut.

Grundsätzlicher Aufbau

Der Virtual Machine (VM)-Cluster wird mit QEMU-KVM (Kernel-based Virtual Machine) auf Ubuntu LTS Server betrieben. Derzeit (Juli 2015) gibt es vier Host-Server:

vmhost1: 134.245.135.180
vmhost2: 134.245.135.181
vmhost3: 134.245.135.182
vmhost4: 134.245.135.183

Diese benutzen einen gemeinsamen Netzwerkspeicher, um auf die VM-Platten-Images zuzugreifen. Der Speicher (Oracle Cluster File System) wird von einem iSCSI-RAID über das Storage Network bereitgestellt:

192.168.0.10 (vmstorage OCFS2 cluster)
192.168.0.11 (datengrab OCFS2 cluster, wird für VMs nicht benötigt)

Der vmstorage-Cluster wird von den vmhost-Servern als /vmstorage gemountet. Dies ermöglicht die freizügige Migration der VMs zwischen den vmhost-Servern je nach Auslastung oder bei Server-Wartungsarbeiten.

Installation

Zum Setup der VM-Hosts und Einrichtung des Oracle Cluster File System siehe folgende Anleitungen:

VM-Verwaltung mit virsh

Man kann fast alle Manipulationen mit VMs auf der Kommandozeile der vmhost-Server mit dem Werkzeug virsh erledigen. Die wichtigsten Befehle sind folgende:

virsh list (Auflisten aller laufenden VMs)
virsh list --all (Auflisten aller definierten VMs, auch der gerade nicht laufenden)
virsh start <VM-Name> (Starten einer VM)
virsh shutdown <VM-Name> (kontrolliertes Herunterfahren)
virsh destroy <VM-Name> (sofortiges Ausschalten, quasi "Stecker raus", kann für abgestürzte VMs nötig sein)
virsh define <XML-Dateiname> (VM aus XML-Datei neu definieren)
virsh undefine <VM-Name> (VM-Definition löschen)
virsh dumpxml <VM-Name> > <XML-Dateiname> (VM-Definition neu schreiben)

VM-Autostart nach Reboot des Host-Servers

Auf den vmhost-Servern werden nach einem Reboot die zuvor laufenden VMs automatisch wieder angefahren. Dazu enthält die crontab von root folgenden Eintrag:

@reboot /usr/local/bin/restart_running_vms

Damit wird nach dem Neustart dieses Skript getriggert, das nach einer Wartezeit von 30 sec. die VMs wieder startet, die in der Datei /root/running_vms gelistet sind:

sleep 30

echo "restarting VMs on `hostname` after reboot at `date`" >> /vmstorage/restart_running_vms.log
while read line; do virsh start $line >> /vmstorage/restart_running_vms.log; sleep 5; done < /root/running_vms

Die Datei /root/running_vms muss manuell gepflegt werden, damit dort jederzeit die richtigen VMs gelistet sind, z.B.:

virsh list --name > /root/running_vms