6623
Kommentar: Basisinstallation verschoben
|
6146
|
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: |
Die Kerninfrastruktur im Projekt IT Zukunft-Schule™ besteht aus mindestens einem zentralen Server, auf dem die Infrastrukturverwaltung und -steuerung des Schulnetzwerks installiert wird. Auf diesem zentralen Server kommt [[Technik/Virtualisierung|Virtualisierung]] zum Einsatz. Bevor also mit der Installation der Server-Kompenenten für das Pädagogische Schulnetz begonnen werden kann, muss als erste Ebene die Software für Server-Virtualisierung auf dem zentralen Server installiert werden. In der Virtualisierungsumgebung werden dann die Komponenten des Debian Edu / Skolelinux Netzwerks installiert. Für große Schulen kommen mehrere Virtualisierungs-Server zum Einsatz und die Dienste des Debian Edu / Skolelinux Netzwerks werden dann auf mehrere physikalische Maschinen verteilt. |
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 13: | Zeile 9: |
Vor der Basisinstallation des ersten Virtualisierungs-Servers muss die [[Technik/Installation/InternetUplink|Internet-Anbindung]] der Schule entsprechend der IT-Zukunft Schule™ [[Technik/Infrastruktur|Netzwerktopologie]] eingerichtet werden. Desweiteren muss eine Backbone-Switch für das Backbone-Netz bereit stehen, welche mit dem Backbone-VLAN des Internet-Routers verbunden ist. Im Backbone-Netz ist standardmäßig ein DHCP-Server aktiv (auf Router für die Internet-Anbindung), so dass angeschlossene Systeme (neue aufzusetzende Server, Notebooks von System-Admins, etc.) sofort Zugriff auf das Internet bekommen können. |
Durchführen der [[Technik/Installation/VirtServer/BasisJessie|Basisinstallation]]. |
Zeile 20: | Zeile 14: |
Im ersten/zentralen Virtualisierungs-Server werden schnelle SAS-Festplatten (geringe Kapazität, schneller Zugriff, teuer) und langsamere SATA-Festplatten (größere Kapazität, langsamerer Zugriff als bei SAS-Platten, kostengünstiger) eingebaut. * Die schnellen SAS-Festplatten werden für die Benutzerverzeichnisse von Lehrer/innen und Schüler/innen und für die Ablage der Boot-Images der Diskless-Workstations verwendet. * Auf den nicht ganz so performanten SATA-Festplatten liegen die Betriebssysteme der Server sowie Daten deren Zugriff nicht geschwindigkeitskritisch ist. |
Im allen Virtualisierungs-Servern werden schnelle SAS-Festplatten eingebaut. |
Zeile 32: | Zeile 23: |
* Swap-Partitionen: Größe des Arbeitsspeichers plus 2GByte auf alle schnellen SAS-Festplatten verteilt | * Swap-Partitionen: Größe des Arbeitsspeichers plus 2GByte auf alle Festplatten verteilt. |
Zeile 34: | Zeile 25: |
$ mdadm --create /dev/md1 -l1 -n2 /dev/sda2 /dev/sdb2 | $ mdadm --create /dev/md1 -l1 -n2 /dev/sda3 /dev/sdb3 |
Zeile 42: | Zeile 33: |
* LVM Volume Groups anlegen: * Volume Group {{{vm-slow-vg}}} beinhaltet alle Level-1 RAIDs der langsameren Festplatten (SATA) * Volume Group {{{vm-fast-vg}}} beinhaltet alle Level-1 RAIDs der schnellen Festplatten (SAS){{{ |
* LVM Volume Group {{{ganeti_vg}}} für Ganeti anlegen:{{{ |
Zeile 48: | Zeile 37: |
# alle RAID-1 Devices der SATA-Festplatten zu einer Volume Group zusammenführen $ vgcreate vm-slow-vg /dev/md<A1> /dev/md<A2> [...] # alle RAID-1 Devices der SAS-Festplatten zu einer Volume Group zusammenführen $ vgcreate vm-fast-vg /dev/md<B1> /dev/md<B2> [...] |
# alle RAID-1 Devices zu einer Volume Group zusammenführen $ vgcreate ganeti_vg /dev/md1 /dev/md2 [...] |
Zeile 53: | Zeile 40: |
* LVM Volumes anlegen: * Logical Volumes für virtuelle Maschinen anlegen. Namenskonvention für LVs: {{{<host-fqdn>_sd{a,b,c,d,...}}}}{{{ $ lvcreate vm-slow-vg -n tjener.intern_sda -L 400G $ lvcreate vm-fast-vg -n tjener.intern_sdb -L 400G $ lvcreate vm-slow-vg -n disklserver.intern_sda -L 40G $ lvcreate vm-fast-vg -n disklserver.intern_sdb -L 80G }}} FixMe: LTSP-Server ergänzen? |
|
Zeile 69: | Zeile 47: |
* Die erste Schnittstelle ist für das Backbone-Netz ({{{172.16.0.0/24}}} vorgesehen. | * 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. |
Zeile 71: | Zeile 49: |
* Die zweite 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. |
Zeile 90: | 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 98: | Zeile 84: |
Nach der Neukonfiguration die Schnittstellen muss das Netzwerk (bzw. zum Testen der korrekten Funktion beim System-Boot: der Server) neu gestartet werden. | Nach der Neukonfiguration der Schnittstellen muss das Netzwerk (bzw. zum Testen der korrekten Funktion beim System-Boot: der Server) neu gestartet werden. |
Zeile 100: | Zeile 86: |
=== Virtuelle Maschinen einrichten === | === Ganeti einrichten === |
Zeile 102: | Zeile 88: |
Das Programm ''Virtual Machine Manager'' dient der Verwaltung und Steuerung der virtuellen Maschinen. In ihm werden die virtuellen Festplatten konfiguriert, und Arbeitsspeicher sowie Prozessorkerne den virtuellen Maschinen zugeteilt. | 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}}}. |
Zeile 104: | Zeile 90: |
* Den User {{{locadm}}} der Gruppe {{{libvirt}}} hinzufügen.{{{ $ sudo adduser locadm libvirt |
==== 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 [...] |
Zeile 107: | Zeile 97: |
* Grafisch am Virtualisierungs-Server als {{{locadm}}} anmelden. * Den "Virtual Machine Manager" starten. |
* 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 |
Zeile 110: | Zeile 100: |
* Mit der rechten Maustaste localhost auswählen, dann Details auswählen. Mit ''Speicher hinzufügen'' folgende virtuelle Festplatten anlegen: * vm-fast-vg (LVM Volume Group, s.o.) * vm-slow-vg (LVM Volume Group, s.o.) |
* {{{/root/.ssh}}} muss angelegt sein: {{{mkdir /root/.ssh}}} |
Zeile 114: | Zeile 102: |
In ''Virtual Machine Manager'' können jetzt virtuelle Maschinen angelegt werden (genaue Beschreibung auf den Seiten, die die einzelnen VMs beschreiben). | ==== 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-<xx> }}} 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. |
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 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-<xx>
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 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.