Mate (Server)/Technische Doku

Aus RaumZeitLabor Wiki

Neue Debian-VM ohne GUI, nur mittels shell installieren (serielle console)

Vor der Installation neues, leeres Image anlegen (Images liegen unter /srv/vm):

export VMNAME=foobar
export VMSIZE=20G
export VMMEM=256
export VMOSTYPE=linux
export VMOSVARIANT=debianwheezy
export VMINSTALLER=http://ftp.de.debian.org/debian/dists/wheezy/main/installer-amd64/
fallocate -l $VMSIZE /srv/vm/$VMNAME.img

Dann Netzinstallation starten:

virt-install --connect qemu:///system --name=$VMNAME --ram=$VMMEM --vcpus=1 \
--disk path=/srv/vm/$VMNAME.img,format=raw,cache=none,bus=virtio --os-type $VMOSTYPE \
--os-variant $VMOSVARIANT  --network=bridge=br0,model=virtio --nographics \
--location $VMINSTALLER \
--extra-args="console=tty0 console=ttyS0,115200n8" -v

Besondere Einstellungen auf dem Hypervisor

Die Default-Linux-Einstellungen (bzw die von Debian) sind etwas ungünstig für Performance. Folgendes sollte geändert werden:

  • Default-Scheduler von cfq auf deadline (Kernel-Parameter elevator=deadline <ref name="KER-PAR-01">Dokumentation zum Kernel-Parameter elevator </ref> in /etc/default/grub setzen, danach update-grub2 ausführen)
  • Hugepages erlauben (in /etc/rc.local) <ref name=KVM-TUN-01">KVM Memory Tuning</ref>:
    • echo 1 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
    • echo always > /sys/kernel/mm/transparent_hugepage/enabled
    • echo never > /sys/kernel/mm/transparent_hugepage/defrag
  • Prüfen, ob das Modul vhost_net geladen ist

Besondere Einstellungen auf den virtuellen Maschinen

In der Config für die VM

  • Das Platten-Image muß raw und pre-allokiert sein. qcow2 und dynamische Allokierung ist wirklich langsam.
  • Der Modus des Festplatten-Controllers muß virtio sein (Achtung: Die Platten in den VMs sind dann vda, vdb etc anstatt sda, sdb etc)
  • Das Plattenimage muß den Cache-Modus auf none gesetzt haben (<driver name='qemu' type='raw' cache='none'/>)
  • Der Typ des Netzwerkinterfaces muß virtio sein (<model type='virtio'/>)

In der VM selbst

  • Default-Scheduler von cfq auf noop (Kernel-Parameter elevator=noop <ref name="KER-PAR-01">Dokumentation zum Kernel-Parameter elevator </ref> in /etc/default/grub setzen, danach update-grub2 ausführen)
  • Tickless Kernel aktivieren (Kernel-Parameter nohz=on <ref name="KER-PAR-02">Dokumentation zum Kernel-Parameter nohz </ref> in /etc/default/grub setzen, danach update-grub2 ausführen)
  • Prüfen, ob die Module virtio-blk und virtio-net geladen sind
  • Serielle Konsole in /etc/inittab aktivieren: T0:23:respawn:/sbin/getty -L ttyS0 115200 vt102
  • Serielle Konsole zusätzlich zur normalen Konsole aktivieren (in /etc/default/grub), wenn man schon dabei ist, kann man auch grub serial beibringen:
    GRUB_TERMINAL=serial
    GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"
    sowie
    console=ttyS0,115200n8 console=tty0

Für die faulen Hunde, wie ich einer bin, hier nochmal der komplette GRUB_CMDLINE-Kram:

GRUB_CMDLINE_LINUX_DEFAULT="elevator=noop nohz=on transparent_hugepage=always console=ttyS0,115200n8 console=tty0"

<blink>DON'T FORGET THE MAGIC update-grub2</blink>

Puppet

Um eine VM unter die Kontrolle von Puppet zu bekommen, ist folgendes zu erledigen:
  • mate.rzl:/etc/puppet/manifests/nodes.pp: die Node eintragen
  • <neuevm>.rzl:
    • Puppet installieren
    • Deamon Autostart in /etc/default/puppet aktivieren
    • puppet agent --test ausführen
  • mate.rzl:
    #Liste der neuen Zertifikate:
    puppet cert list
    
    #Zertifikat signieren:
    puppet cert sign <neuevm.rzl>
  • <neuevm.rzl>: Nochmal puppet agent --test ausführen

Wenn alles geklappt hat, so wird puppet zumindest mal alle fehlenden Pakete nachinstallieren.

Zabbix

Um eine VM zu monitoren:

  • Ändere in der Datei /etc/zabbix/zabbix_agentd.conf den Parameter "Server" auf "172.22.36.251" und den Parameter "Hostname" auf den hostnamen inkl. .rzl-Domain
  • Füge den Server in Zabbix hinzu (Configuration->Hosts->Create), linke die Templates Template_Linux sowie Template_Puppet_Agent

Bacula backups

  • Config-Änderungen auf mate:
    • in /etc/bacula/clients die jeweilige Config umkopieren und die Namen sowie das Director-Passwort ändern
    • die leeren files in /etc/bacula/clients/includes sowie excludes erzeugen
    • in /etc/bacula/bacula-dir.conf das neue config file includen
    • bacula neustarten
    • Das file /etc/puppet/templates/bacula-fd_conf.erb in die VM kopieren und die Variablen ersetzen
  • In der VM:
    • /etc/init.d/bacula-fd restart
    • prüfen, ob bacula-fd auf 0.0.0.0:9102 lauscht (bei Fehlern lauscht er nur auf localhost)

Schließlich über bconsole, danach run den entsprechende Job auswählen und testweise laufen lassen.

TODO

  • Automatisches Discovery von VMs in Zabbix?

Einzelnachweise

<references />