Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:virtualisierung:kvm:kvm_aufdemserver]] 

Server fungiert als KVM-Host für Firewall und weitere Clients

Wird von linuxmuster.net ab 6.1 unterstützt, mit einem kleinen Patch auch für 6.0 durchführbar.

Ziel dieser Anleitung:

  • linuxmuster.net Server (LM-Server) wird direkt auf Hardware installiert
  • LM-Server dient als VM-Host für virtualisierte Server wie Firewall, Hotspot, PC-Clients, etc.
  • LM-Server wird via LVM installiert um einfache Backup-Lösung zu haben
  • virtualisierte Server liegen ebenfalls auf LVM, um einfaches Backup zu haben

Vorteile

  • Server läuft selbst nicht virtualisiert
  • Flexibilität der virtualisierten Rechner

Nachteile

  • Ersteinrichtung und Einrichtung nach einem Komplettausfall (disaster-recovery) etwas umfangreicher

Vorgehensweise Installation/Wiederherstellung

Im Vergleich zur Installation nach dem Handbuch, muss eine leicht veränderte Reihenfolge eingehalten werden:

  • Ersten Teil der server wie im Handbuch befolgen. Naturgemäß kann man hier nicht das vorgefertigte virtuelle Abbild verwenden, da man den Server nicht virtualisiert installieren will.
  • Danach wird eine für dieses Setup spezifische Netzwerkkonfiguration erstellt.
  • Jetzt kann regulär die Firewall IPFire (auf einem LVM-Storage) in einer virtuellen Maschine wie im Handbuch oder durch Entpacken eines vorgefertigten virtuellen Abbildes installiert und vorkonfiguriert werden.
  • Jetzt wird mit dem Setup des Servers fortgefahren, wobei die Netzwerk-spezifische Konfiguration beachtet werden muss.

Installation des Servers

Erfolgt wie im Handbuch [[dokumentation:handbuch:installation:server]], beispielhaft mit folgender Partitionierung über LVM:

Partitionierung (nicht relevant aber interessant als Beispiel)

  • LVM - vgserverroot - 20GB (z.B. auf einem RAID1):
    vgcreate vgserverroot /dev/sda1
    • für die wurzel /lvcreate -L 20G -n root vgserverroot 1)
  • swap - /dev/sda2 - 8GB
  • LVM - vgserver - 900GB aus mehreren Partitionen (z.B. auf einem RAID5):
    vgcreate vgserver /dev/md0
    • für /homelvcreate -L 400G -n home vgserver (wird quotiert)
    • für /varlvcreate -L 250G -n var vgserver (wird quotiert)
    • für /var/spool/cupslvcreate -L 10G -n varspoolcups vgserver (wird nicht quotiert)
  • Platz für virtuelle Maschinen, z.B. IPFire, Coovachilli, eigenes Backup berücksichtigen
    • für den ipfire - 20G (oder in eigener VG) lvcreate -L 20G -n ipfire vgserver
    • für einen client lvcreate -L 60G -n client01 vgserver

Spezifische Netzwerkkonfiguration

  • Zwei Netzwerkkarten für GRÜN und ROT müssen mindestens eingebaut sein, diese sind dem System als eth0 und eth1 bekannt.
  • Auf dem Server zwei host-bridges einrichten2) <note tip>Jetzt noch die Datei durch <code>cp /etc/network/interfaces /etc/network/interfaces.kvm </code> sichern, da die Konfiguration von der linuxmuster-setup Routine überschrieben wird.</note> ===== Hinweise zur KVM/qemu Konfiguration des IPFire ===== Im Programm virt-manager kann man den IPfire einrichten. Die relevante Konfiguration zu qemu/kvm/libvirt liegt unter /etc/libvirt/qemu/ipfire.xml und die relevanten Teile zu storage und Netzwerk lauten in der XML Schreibweise: <code xml> <devices> <emulator>/usr/bin/kvm</emulator> <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/vgserver/ipfire'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> <interface type='bridge'> <mac address='08:00:27:4b:e9:b3'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <interface type='bridge'> <mac address='08:00:27:73:df:21'/> <source bridge='br1'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </interface> <interface type='network'> <mac address='08:00:27:2d:a5:71'/> <source network='blau'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </interface> </code> * die Zeilen <address type='pci'…> etc. können auch weggelassen werden, wenn man die Datei mal selbst editiert, diese werden dann automatisch neu generiert. Jetzt kann der IPFire regulär per eingebundenem CD-Image aufgesetzt und vorkonfiguriert werden (siehe ipfire und ipfire.preconfiguration) oder wenn der IPFire schon installiert war, per setup als root modifiziert werden. Alternativ kann ein vorgefertigtes Image (z.B. virtualappliance) auf das LVM-Storage kopiert und eingerichtet werden: <code> # qemu-img convert -p -O raw ipfire.img /dev/vgserver/ipfire # virsh start ipfire # ssh ipfire -p 222 [root@ipfire ~]# setup </code> ===== Hinweis zum folgenden Setup des Servers ===== Beim Befehl linuxmuster-setup --first oder linuxmuster-setup --modify kann das Setup des Servers wie im Handbuch beschrieben nur dann funktionieren, wenn die oben eingerichteten Bridges auch als Netzwerk„karten“ ausgewählt werden können. * Ab linuxmuster.net 6.1 kann sofort br0 als Interface für das interne (grüne) Netz ausgewählt werden. * Für linuxmuster.net 6.0 muss wie untenstehend ein Skript bearbeitet werden. <note tip>Nach dem Setup muss die spezielle Netzwerkkonfiguration überprüft werden und am einfachsten durch <code>cp /etc/network/interfaces.kvm /etc/network/interfaces</code> die gesicherte Datei wiederhergestellt werden.</note> === Hack, damit linuxmuster.net 6.0 funktioniert === * in /usr/share/linuxmuster/scripts/helperfunctions.sh die Zeile bearbeiten und /sys/class/net/br* hinzufügen <code bash > ################# # nic setup # ################# discover_nics() { n=0 # fetch all interfaces and their macs from /sys for i in /sys/class/net/bond* /sys/class/net/eth* /sys/class/net/br* /sys/class/net/wlan* /sys/class/net/intern /sys/class/net/extern /sys/class/net/d mz; do </code> ===== Links ===== * Bezug auf kvm-virtuelles-netzwerk ====== Vorgehensweise Backup und Restore ====== Folgende Strategie wird beschrieben: * Ein Backup des Servers wird mit Hilfe der Migration erstellt (welche automatisch auch die Firewalleinstellungen sichert). * Ein Backup der virtuellen Maschinen (Firewall, Coovachilli, etc.) wird durch komplette Sicherung des Festplatten-Images erstellt. Wenn eine Historie und Versionierung des Backups gewünscht ist, bietet sich an * zusätzlich das Backup der Migration mit Hilfe von rsnapshot weiter zu sichern. * zusätzlich eine Synchronisation des Filesystems jeder einzelnen virtuellen Maschine zu erstellen und dieses dann mit Hilfe von rsnapshot weiter zu sichern. Während die Migration und die Images der VM eine Schnelle Disaster-Recovery Aktion erlauben, erlaubt die Synchronisation via rsnapshot Zugriff auf einzelne Dateien. Werden beide Verfahren angewandt, lässt sich eine schnelle Rekonstruktion eines (z.B. alten) Images durch eine Synchronisation eines tagesaktuellen „rsnapshots“ aktualisieren. ===== Backup durch Migration und Komplettsicherung ===== Ein Backup des Servers durch Migration nach z.B. /srv/backup/server wird als Standardlösung im Handbuch beschrieben. Hier wird beschrieben, wie man darüberhinaus über die komplette Sicherung der Festplatten-Images und der Konfiguration zu einem Backup mit schnellem Disaster-Recovery kommt: * Die KVM-Konfiguration und Netzwerk-Konfiguration muss gesichert werden (nach: /srv/backup/server_manual <code>rsync -aR –numeric-ids –delete /etc/libvirtd/qemu/ /srv/backup/server/ rsync -aR –numeric-ids –delete /etc/network/interfaces /srv/backup/server/ rsync -aR –numeric-ids –delete /etc/udev/rules.d/ /srv/backup/server/ </code> * Die VM-Clients müssen heruntergefahren werden3) * Snapshots in LVM erstellen und VM-Clients wieder hochfahren * Von den Snapshots in LVM werden die Festplatten-Images der VM-Clients gesichert. <code> virsh shutdown ipfire lvcreate -s /dev/vgserver/ipfire -L 2G -n ipfire-backup virsh start ipfire qemu-img convert -c -f raw -O qcow2 /dev/vgserver/ipfire-backup /srv/backup/ipfire.img dd bs=512 count=1 if=/dev/vgserver/ipfire of=/srv/backup/ipfire-partitiontable </code> ==== Recovery auf dem selben Rechner ==== * Entspricht der Neuinstallation wie auf dieser Seite beschrieben, nur dass die Konfiguration des Netzwerks und von KVM aus dem Backup kopiert werden können. ==== Recovery auf einem anderen Rechner ==== * Entspricht ebenfalls der Neuinstallation wie hier angegeben, es kann die Konfiguration des Netzwerks und von KVM aus dem Backup kopiert werden, nur sollten eth0 und eth1 entsprechend neu und korrekt den Bridges br0 und br1 zugeordnet werden. ===== Versionierung durch Backup auf Filesystemebene und rsnapshot ===== ++++ Zum Aufklappen des Skript-Beispiels, bitte hier klicken | * Annahme: Die zu sichernden KVM-Clients heißen „ipfire“ und „chapman“ * Weitere Annahme: Alle LVMs haben nur eine Partition „/dev/sda1“ auf der alles „/“ sitzt, andernfalls muss man eben „so tun“ als ob man weitere Server hätte. * Die entsprechenden Verzeichnisse /srv/ipfire müssen erstellt werden. * Man installiert rsnapshot auf dem Host und konfiguriert es so: (Achtung, TABs als Zwischenräume, Verzeichnisse immer mit / enden lassen) <code bash> # Ziel auf dem NAS/NFS/USB-Festplatte: snapshot_root /srv/backup/rsnapshot/ no_create_root 1 retain daily 61 retain monthly 12 link_dest 1 backup /srv/ipfire ipfire/ backup /srv/chapman chapman/ </code> * Ein Skript, dass jetzt alles nach /srv/backup/rsnapshot/ sichert, falls es keine leeren Verzeichnisse gibt, wäre: <code bash backup_only_kvmclients.sh> #!/bin/bash function prep { kvmclient=$1 partition=$2 lvcreate -s /dev/vgserver/${kvmclient} -L 200M -n ${kvmclient}-backup kpartx -a /dev/vgserver/${kvmclient}-backup mount /dev/mapper/vgserver-${kvmclient}–backup${partition} /srv/${kvmclient} } function pop { kvmclient=$1 umount /srv/${kvmclient} kpartx -d /dev/vgserver/${kvmclient}-backup lvremove -f /dev/vgserver/${kvmclient}-backup } function check { c=0 for i in „$@“ ; do if [ -z „$(ls -A /srv/$i 2>/dev/null)“ ]; then c=1 echo WARNING: Abbruch, weil /srv/$i leer erscheint fi done [ $c -eq 1 ] && return 1 || return 0 } prep ipfire 1 prep chapman 1 # check for empty dirs check ipfire chapman # backup using rsnapshot if [ $? -eq 0 ]; then rsnapshot daily fi # normalzustand herstellen pop chapman pop ipfire </code> ++++
1)
später in /etc/default/grub rootdelay=5 einfügen, siehe [[http://www.thomas-krenn.com/de/wiki/GRUB_Bootloader_bootet_nicht_von_LVM_Volume|hier]], oder /boot als eigene Partition einfügen
2)
Quelle: https:wiki.ubuntu.com/KvmWithBridge oder http://wiki.debian.org/BridgeNetworkConnections)), wodurch eth0 der Standardinstallation immer durch br0 ersetzt werden muss. eth0 sollte nicht mehr in /etc/network/interfaces konfiguriert werden: <code bash /etc/network/interfaces> auto lo iface lo inet loopback auto br0 iface br0 inet static bridge-ports eth0 bridge-stp off bridge-maxwait 5 address 10.16.1.1 netmask 255.240.0.0 network 10.16.0.0 broadcast 10.31.255.255 gateway 10.16.1.254 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 10.16.1.1 dns-search linuxmuster-net.lokal auto br1 iface br1 inet manual bridge-ports eth1 bridge-stp off bridge-maxwait 5 </code> * Ziel ist, dass br0 als Switch für alle Geräte im internen=grünen Netzwerk verwendet wird und br1 nur von den Geräten, die im roten Netz eine IP bekommen sollen (z.b. IPFire) * Alternativ könnte man die Bridge br1 weglassen und stattdessen das PCI-device dem (dann einzigen) roten Client durchreichen((Quelle: [[http://libvirt.org/formatnetwork.html#elementsConnect|hier]] oderhier
3)
es ginge auch ein Herunterfahren der Datenbanken innerhalb des Clients und dann ein Pausieren der VM, aber ich bin für Herunterfahren, das geht unkompliziert und die Datenbanken werden sauber geschlossen.
 [[anwenderwiki:virtualisierung:kvm:kvm_aufdemserver]] anwenderwiki/virtualisierung/kvm/kvm_aufdemserver.txt · Zuletzt geändert: 2015/03/03 04:51 (Externe Bearbeitung)