Größe: 5141
Kommentar:
|
Größe: 6977
Kommentar:
|
Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
Zeile 1: | Zeile 1: |
== Installationshinweise: Virtualisierungs-Server == | == Installationshinweise: Virtualisierungs-Server unter Ganeti mit KVM == |
Zeile 5: | Zeile 5: |
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!). |
|
Zeile 7: | Zeile 9: |
Durchführen der [[Technik/Installation/VirtServer/BasisJessie|Basisinstallation]]. | Durchführen der [[Technik/Installation/VirtServer/BasisStretch|Basisinstallation]]. |
Zeile 12: | Zeile 14: |
Im allen Virtualisierungs-Servern werden schnelle SAS-Festplatten eingebaut. | Im allen Virtualisierungs-Servern werden schnelle SAS-Festplatten oder SSDs eingebaut. |
Zeile 20: | Zeile 22: |
* SATA-Festplatte 1 und 2 werden 20 GByte als Raid (Level 1, Plattenspiegelung) für Betriebssystem des Virtualisierungs-Server reserviert | * SATA-Festplatte 1 und 2 werden 20 GByte als Raid (Level 1, Plattenspiegelung) für Betriebssystem des Virtualisierungs-Servers reserviert |
Zeile 66: | Zeile 68: |
iface eth1 inet static | 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 |
Zeile 78: | Zeile 88: |
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}}}. | 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.backbone}}}. Ganeti ist aber so eingerichtet, dass theoretisch jeder andere Knoten (in Ganeti heißen Virtualisierungs-Server "Knoten" oder "Node") Master-Status erlangen kann. Der Master bekommt den host-Namen {{{ganeti-cluster.backbone}}}. |
Zeile 82: | Zeile 92: |
* auf allen Virtualiesierungsserver müssen in /etc/hosts alle Virtualisierungsserver eingetragen sein, Beispiel:{{{ | * auf allen Virtualiesierungs-Servern müssen in {{{/etc/hosts}}} alle Virtualisierungs-Server eingetragen sein, Beispiel:{{{ |
Zeile 87: | Zeile 97: |
* zusätzlich muss auf allen Virtualisierungsservern der Hostname des Ganetimasters in /etc/hosts eingetragen werden, Beispiel:{{{ | * zusätzlich muss auf allen Virtualisierungs-Servern der Hostname des Ganetimasters in {{{/etc/hosts}}} eingetragen werden, Beispiel:{{{ |
Zeile 89: | Zeile 99: |
}}} | |
Zeile 92: | Zeile 102: |
==== Ganeti Cluster initializieren ==== | ==== Ganeti Pakete installieren ===== Um Ganeti für den Debian Edu / Skolelinux Kontext aufzusetzen, müssen die Pakete {{{ganeti}}} und {{{ganeti-os-noop}}} installiert sein:{{{ $ sudo apt-get install ganeti ganeti-os-noop }}} ==== Ganeti Cluster initialisieren ==== |
Zeile 95: | Zeile 111: |
$ gnt-cluster init \ --master-netdev eth1 \ |
$ sudo gnt-cluster init \ --master-netdev br1 \ |
Zeile 105: | Zeile 121: |
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. | Ganeti erzeugt eine ssh-key-pair in {{{/root/.ssh}}} und hinterlegt dessen public-key in {{{/root/.ssh/authorized_key}}}, welche auf die anderen Virtualisierungs-Server kopiert werden muss. |
Zeile 107: | Zeile 123: |
Nun können die anderen Virtualisierungsserver den Cluster hinzugefügt werden:{{{ gnt-node add virt-man-<xx> |
Nun können die anderen Virtualisierungs-Server dem Cluster hinzugefügt werden:{{{ $ sudo gnt-node add virt-man-<xx> |
Zeile 110: | Zeile 126: |
Für die Virtuellen Maschinen des !DebianEdu-Netzwerkes stellen wir innerhalb von Ganeti ein Netzwerk bereit: {{{ $ sudo gnt-network add --network=10.0.0.0/8 --gateway=10.0.0.1 DebianEdu $ sudo 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 bereit.{{{ $ sudo gnt-network add --network=172.16.0.0/24 --gateway=172.16.0.253 Backbone $ sudo gnt-network connect -N mode=bridged,link=br1 Backbone }}} Für die von Ganeti verwalteten VMs müssen Standardparameter, (großzügige) Ober- und Untergrenzen festgelegt werden:{{{ $ sudo gnt-cluster modify --ipolicy-std-specs cpu-count=2,disk-count=1,disk-size=10240M,memory-size=2048M,nic-count=1,spindle-use=1 \ --ipolicy-bounds-specs min:cpu-count=1,disk-count=1,disk-size=1024M,memory-size=128M,nic-count=1,spindle-use=1/max:cpu-count=32,disk-count=16,disk-size=4048G,memory-size=32768M,nic-count=8,spindle-use=12 }}} |
|
Zeile 113: | Zeile 146: |
Ordner für das Image im Virt-Man-01 erstellen{{{ $ mkdir /home/locadm/isoimages }}} Image herunterladen (siehe [[https://wiki.debian.org/DebianEdu/HowTo/TestCDinstall|Debian Wiki]]){{{ $ rsync -avP ftp.skolelinux.org::cd-jessie-usbstick/debian-edu-amd64-i386-BD-1.iso /home/locadm/isoimages/debian-edu-amd64-i386-BD-1.iso }}} |
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. |
Installationshinweise: Virtualisierungs-Server unter Ganeti mit KVM
Inhaltsverzeichnis
Ein praktisches Cheat Sheet für die Administration von Ganeti im Terminal ist hier zu finden (externer Link!).
Vorbereitungen
Durchführen der Basisinstallation.
Festplattenpartitionierung (im Detail)
Im allen Virtualisierungs-Servern werden schnelle SAS-Festplatten oder SSDs 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-Servers 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.backbone. Ganeti ist aber so eingerichtet, dass theoretisch jeder andere Knoten (in Ganeti heißen Virtualisierungs-Server "Knoten" oder "Node") Master-Status erlangen kann. Der Master bekommt den host-Namen ganeti-cluster.backbone.
Vorbereitungen
Anpassen von /etc/hosts:
auf allen Virtualiesierungs-Servern müssen in /etc/hosts alle Virtualisierungs-Server 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 Virtualisierungs-Servern 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 Pakete installieren =====
Um Ganeti für den Debian Edu / Skolelinux Kontext aufzusetzen, müssen die Pakete ganeti und ganeti-os-noop installiert sein:
$ sudo apt-get install ganeti ganeti-os-noop
Ganeti Cluster initialisieren
$ sudo gnt-cluster init \ --master-netdev br1 \ --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 Virtualisierungs-Server kopiert werden muss.
Nun können die anderen Virtualisierungs-Server dem Cluster hinzugefügt werden:
$ sudo gnt-node add virt-man-<xx>
Für die Virtuellen Maschinen des DebianEdu-Netzwerkes stellen wir innerhalb von Ganeti ein Netzwerk bereit:
$ sudo gnt-network add --network=10.0.0.0/8 --gateway=10.0.0.1 DebianEdu $ sudo 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 bereit.
$ sudo gnt-network add --network=172.16.0.0/24 --gateway=172.16.0.253 Backbone $ sudo gnt-network connect -N mode=bridged,link=br1 Backbone
Für die von Ganeti verwalteten VMs müssen Standardparameter, (großzügige) Ober- und Untergrenzen festgelegt werden:
$ sudo gnt-cluster modify --ipolicy-std-specs cpu-count=2,disk-count=1,disk-size=10240M,memory-size=2048M,nic-count=1,spindle-use=1 \ --ipolicy-bounds-specs min:cpu-count=1,disk-count=1,disk-size=1024M,memory-size=128M,nic-count=1,spindle-use=1/max:cpu-count=32,disk-count=16,disk-size=4048G,memory-size=32768M,nic-count=8,spindle-use=12
Installation von Tjener vorbereiten
Nun kann mit der Installation des Hauptservers fortgefahren werden.
Installation von GanetiMgr
Das Web Management Tool GanetiMgr kann bei der Fa. DAS-NETZWERKTEAM beauftragt werden. Die Installation ist so spezifisch und zeitlichen Änderungen unterworfen, dass eine öffentlich Dokumentation meist immer veraltet oder ungenau ist.