== Installationshinweise: Virtualisierungs-Server unter Ganeti mit KVM == <> Ein praktisches Cheat Sheet für die Administration von Ganeti im Terminal ist [[https://nsrc.org/workshops/2014/btnog/raw-attachment/wiki/Track2Agenda/ganeti-cheatsheet.pdf|hier]] zu finden (externer Link!). === Vorbereitungen === Durchführen der [[Technik/Installation/VirtServer/BasisJessie|Basisinstallation]]. === Festplattenpartitionierung (im Detail) === Im allen Virtualisierungs-Servern werden schnelle SAS-Festplatten eingebaut. Die Einteilung der Festplatten fällt von Schule zu Schule unterschiedlich aus. Sie ist abhängig von der Zahl und Größe der Festplatten, sowie der Größe des eingebauten Arbeitsspeichers. '''__Beispiel:__''' * Jeder Virtualisierungs-Server enthält eine gerade Anzahl von Festplatten, für Festplatten-Spiegelung wird in den meisten Fällen der RAID-Level-1 verwendet * RAID-Systemen werden stets mit der Software-Lösung im Linux-Kernel realisiert (sog. /dev/md-Devices) * SATA-Festplatte 1 und 2 werden 20 GByte als Raid (Level 1, Plattenspiegelung) für Betriebssystem des Virtualisierungs-Server reserviert * Swap-Partitionen: Größe des Arbeitsspeichers plus 2GByte auf alle Festplatten verteilt. * Raid-Basis für LVM Volumes: jeweils zwei gleichgroße Partitionen auf baugleichen Festplatten zu RAID-Devices vom Level-1 zusammenfügen{{{ $ mdadm --create /dev/md1 -l1 -n2 /dev/sda3 /dev/sdb3 $ mdadm --create /dev/md2 -l1 -n2 /dev/sdc2 /dev/sdd2 # weitere RAID-1 Devices einrichten... $ [...] # alle RAID-1 Devices nach Neustart verfügbar machen... $ /usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf $ dpkg-reconfigure mdadm }}} * LVM Volume Group {{{ganeti_vg}}} für Ganeti anlegen:{{{ $ pvcreate /dev/md1 $ pvcreate /dev/md2 $ [...] # alle RAID-1 Devices zu einer Volume Group zusammenführen $ vgcreate ganeti_vg /dev/md1 /dev/md2 [...] }}} === Netzwerk einrichten === Bislang wurde für die beschriebenen Installationsschritte eine vom DHCP-Server des Internet/DSL-Routers vergebene IP-Adresse für den zu installierenden Virtualisierungs-Server verwendet. Im nächsten Schritt wird nun eine feste IP-Adresse für die Backbone-Netzwerkschnittstelle festgelegt und auch die Schnittstelle für das Pädagogische Netzwerk (Debian Edu / Skolelinux Netzwerk) vorbereitet. Der zentrale Virtualisierungs-Server besitzt typischerweise zwei Netzwerkschnittstellen. * Die erste Schnittstelle stellt das Subnetz für die Schulinfrastruktur bereit ({{{10.0.0.0/8}}}). Diese Schnittstelle wird über eine Netzwerk-Bridge an die virtuellen Maschinen übergeben. * Die zweite Schnittstelle ist für das Backbone-Netz ({{{172.16.0.0/24}}} vorgesehen. '''__Beispiel__''': (Datei: {{{/etc/network/interfaces}}} auf {{{virt-man-01}}}){{{ auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto br0 iface br0 inet manual bridge_fd 0 bridge_hello 2 bridge_maxage 12 bridge_stop off bridge_ports eth0 # backbone interface auto eth1 iface eth1 inet manual auto br1 iface br1 inet manual bridge_fd 0 bridge_hello 2 bridge_maxage 12 bridge_stop off bridge_ports eth1 address 172.16.0.1 netmask 255.255.255.0 broadcast 172.16.0.255 gateway 172.16.0.253 }}} Nach der Neukonfiguration der Schnittstellen muss das Netzwerk (bzw. zum Testen der korrekten Funktion beim System-Boot: der Server) neu gestartet werden. === Ganeti einrichten === Ganiti unterstützt Virtualisierung verteilt über mehrere Virtualisierungsserver. Einer dieser Virtualisierungsserver muss Master-Status im Ganeti-Cluster haben. Auf unseren Schulsystemen ist dies Standardmäßig der Virt-Man-01. Ganeti ist aber so eingerichtet, das theoretisch jeder andere Knoten (in Ganeti heißen Virtualisierungsserver Knoten) Master-Status erlangen kann. Der Master bekommt den host-Namen {{{ganeti-cluster.intern}}}. ==== Vorbereitungen ==== Anpassen von {{{/etc/hosts}}}: * auf allen Virtualiesierungsserver müssen in /etc/hosts alle Virtualisierungsserver eingetragen sein, Beispiel:{{{ 172.16.0.1 virt-man-01.backbone virt-man-01 172.16.0.2 virt-man-02.backbone virt-man-02 [...] }}} * zusätzlich muss auf allen Virtualisierungsservern der Hostname des Ganetimasters in /etc/hosts eingetragen werden, Beispiel:{{{ 172.16.0.240 ganeti-cluster.backbone ganeti-cluster * {{{/root/.ssh}}} muss angelegt sein: {{{mkdir /root/.ssh}}} ==== Ganeti Cluster initializieren ==== {{{ $ gnt-cluster init \ --master-netdev eth1 \ --vg-name ganeti_vg \ --enabled-hypervisors kvm \ --nic-parameters link=br0 \ --hypervisor-parameters kvm:initrd_path=,kernel_path= \ --enabled-disk-templates=plain ganeti-cluster.backbone }}} Ganeti erzeugt eine ssh-key-pair in {{{/root/.ssh}}} und hinterlegt dessen public-key in {{{/root/.ssh/.authorized_key}}}, welche auf die anderen Virtualisierungsserver kopiert werden muss. Nun können die anderen Virtualisierungsserver den Cluster hinzugefügt werden:{{{ $ gnt-node add virt-man- }}} Für die Virtuellen Maschinen des DebianEdu-Netzwerkes stellen wir innerhalb von Ganeti ein Netzwerk bereit: {{{ $ gnt-network add --network=10.0.0.0/16 --gateway=10.0.0.1 DebianEdu $ gnt-network connect -N mode=bridged,link=br0 DebianEdu }}} Um die GanetiMgr Instanz (Webfrontend für Ganeti) stellen wir auch das Backbone-Netzwerk innerhalb von Ganeti bereicht.{{{ $ gnt-network add --network=172.16.0.0/24 --gateway=172.16.0.253 Backbone $ gnt-network connect -N mode=bridged,link=br1 Backbone }}} ==== Installation von Tjener vorbereiten ==== Nun kann mit der [[https://wiki.it-zukunft-schule.de/Technik/Installation/VM/HauptServerTjener/Jessie|Installation des Hauptservers]] fortgefahren werden. ==== Installation von GanetiMgr ==== Das Web Management Tool !GanetiMgr kann bei der Fa. [[http:das-netzwerkteam.de|DAS-NETZWERKTEAM]] beauftragt werden. Die Installation ist so spezifisch und zeitlichen Änderungen unterworfen, dass eine öffentlich Dokumentation meist immer veraltet oder ungenau ist.