Virtualisierungs-Server (Debian bullseye)
Inhaltsverzeichnis
- Virtualisierungs-Server (Debian bullseye)
Vorne Weg: Einrichtung der Virtualisierungs-Software
Die Einrichtung der Virtualisierungs-Software wird je nach verwendetem Produkt beschrieben:
Virtualisierung mit LibVirt (empfohlen für 1-2 Server Schul-Setups)
Virtualisierung mit Ganeti (empfohlen für Multi-Server Schul-Setups)
Im Weiteren wird jetzt die Installation und Basiskonfiguration eines Virtualisierungsservers beschrieben.
Vorbereitungen
Vor der Basisinstallation des ersten Virtualisierungs-Servers muss die Internet-Anbindung der Schule entsprechend der IT-Zukunft Schule Netzwerktopologie eingerichtet werden. Desweiteren muss eine Backbone-Switch für das Backbone-Netz (siehe Internet-Anbindung) 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.
Basisinstallation
Der Virtualisierungs-Server stellt den virtuellen Maschinen Teile der Hardware standardisiert zur Verfügung. Der folgende Abschnitt beschreibt eine allgemeine Installation des ersten/zentralen Virtualiserungs-Servers. Die Details der Installation unterscheiden sich dabei je nach Hardware-Ausstattung des Servers und Nutzungsszenario (Größe der Schule, etc.). In den entsprechenden Textpassagen werden Beispielwerte angegeben, die an die Gegebenheiten der jeweiligen Schule individuell angepasst werden.
Installation starten
Ein startfähiges Medium mit Debian GNU/Linux stable (CD-ROM oder USB Stick) erstellen. Um Verwechslungen vorzubeugen: An dieser Stelle verwenden wir noch nicht Debian Edu / Skolelinux, das kommt erst bei der Installation der virtuellen Maschinen zum Einsatz.
- Vom erstellten Medium den Virtualisierungs-Server booten.
Die folgende Antworten in den angezeigten Menüs auswählen: Install, German, Deutschland und Deutsch
Die Netzwerkschnittstelle mit Zugang zum Internet angeben (in Klammern markiert durch die Bezeichnung Copper). Der Server sollte so verkabelt sein, dass eth1 für das Backbone-Netzwerk genutzt wird.
Rechnernamen und erste Benutzer anlegen
Rechnername: virt-man-01 (weitere Virtualisierungs-Server werden durchnummeriert: virt-man-02, virt-man-03, etc.)
domain: backbone
Passwort für den Benutzer: root eintragen. Wichtig!!! Passwort notieren!!!
Vor- und Zuname für neuen/ersten Benutzer: Local Administrator
Benutzername für lokalen Administrator: locadm
Passwort für den lokalen Administrator eintragen und bestätigen. WICHTIG!!! Passwort notieren!!!
- Im nachfolgenden Dialog des Debian Installers werden die Festplatten partitioniert.
- Partitionierungs-Methode: manuell
- root-Dateisystem: 40Gb, als Software RAID-1 (/dev/md0) konfigurieren
- Swap-Space: Arbeitsspeicher +2Gb auf alle Platten/SSDs/NVMes gleichmäßig verteilen
- Raid-Device (/dev/md0) als ext4-Dateisystem formatieren, Einhängepunkt: ,,/"
Software-Installationsprofil (tasksel): minimale Installation, zusätzlich SSH-Server auswählen
FixMe: Wenn der Server nach der Installation nicht bootet, sollte nach einem grub-install /dev/sdX, grub-install /dev/sdY UND grub-install /dev/md0 sowie einem anschließenden update-grub alles funktionieren (via Rescue-System von der Debian-Installer CD/DVD gestartet).
Grundeinrichtung
Nachdem die Grundinstallation abgeschlossen ist als locadm einloggen.
Den User locadm in die Gruppe sudo eintragen. Eingabe mit root-Kennwort bestätigen. Danach: ausloggen und wieder als locadm einloggen.
locadm@virt-man-01:~# su -c "adduser locadm sudo"
Der Posix-Gruppe sudo den Aufruf des Kommandos sudo ohne Eingabe des Passworts erlauben:
locadm@virt-man-01:~# su -c "diff -u /etc/sudoers.orig /etc/sudoers" --- /etc/sudoers.orig 2012-07-27 12:43:30.000000000 +0200 +++ /etc/sudoers 2012-07-27 12:42:07.000000000 +0200 @@ -19,6 +19,6 @@ # Allow members of group sudo to execute any command # (Note that later entries override this, so you might need to move # it further down) -%sudo ALL=(ALL) ALL +%sudo ALL=(ALL) NOPASSWD: ALL # #includedir /etc/sudoers.d
Den Benutzer locadm seine sudo-Rechte wahrnehmen lassen:
locadm@virt-man-01:~# newgrp sudo
Nachinstallation von Software:
locadm@virt-man-01:~# sudo apt-get install mc vim
- Server Neustart durchführen
Nach der Installation vim als Editor in den Debian "Alternatives" festlegen.
locadm@virt-man-01:~# sudo update-alternatives --config editor
Das Programm Midnight Commander starten (Kommando: mc):
- F9 drücken
Optionen -> Konfiguration: [x] Internen Editor benutzen
Optionen -> Einstellungen speichern
- F10: Midnight Commander beenden
Den Midnight Commander Editor (Kommando: mcedit) starten:
- F9 drücken
Menüpunkt: Optionen -> Allgemein
- "Backspace durch Tabs" auswählen
- "Tabs mit Leerzeichen auffüllen" auswählen
- "Return rückt automatisch ein" abwählen
Optionen-Dialog schließen, nochmal F9: Optionen -> Einstellungen speichern
- F10: Editor beenden
In /etc/apt/sources.list für alle Varianten contrib und non-free hinzufügen.
In /etc/hosts die Einträge prüfen, fehlende Einträge ggf. ergänzen:
127.0.0.1 localhost 172.16.0.1 virt-man-01.backbone virt-man-01 172.16.0.41 tjener.backbone tjener # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Aktualisierung gezielter Pakete via ITZkS-Repository
Zusätzliche APT-Quellen werden hinzugefügt:
locadm@virt-man-01:~# sudo editor /etc/apt/sources.list.d/itzks.list """ deb http://packages.it-zukunft-schule.de/debian bullseye main """ locadm@virt-man-01:~# sudo apt-get --allow-insecure-repositories update && apt-get install itzks-keyring && apt-get update
Aus diesen Quellen werden die folgenden Pakete installiert:
locadm@virt-man-01:~# sudo apt-get install itzks-systems-common locadm@virt-man-01:~# sudo itzks-systems.do_preseed locadm@virt-man-01:~# sudo apt-get update locadm@virt-man-01:~# sudo apt-get purge avahi-daemon locadm@virt-man-01:~# sudo apt-get install itzks-systems-virtman (postfix nur lokal, emails an locadm)
Installation von X2Go
Nach Installation des Pakets x2goserver und einer schlanken Desktop-Umgebung (z.Bsp. LXDE, XFCE) kann der Virtualisierungsserver grafisch über X2Go (unter dem Nutzerkonto locaadm erreicht und "bedient" werden:
root@virt-man-01:~# apt-get install x2goserver root@virt-man-01:~# apt-get install lxde
Grund für die Nutzung von X2Go, insbesondere in Zusammenhang mit virt-manager: Die Bedienung der virtuellen Maschinen via virt-manager ist innerhalb einer X2Go-Sitzung viel performanter als die Ansteuerung der VMs mittels eines lokalen Virt-Managers und der Verbindungsweise ssh+qemu.
Einrichtung einer USV
Unter Verwendung des APC UPS Daemons
Auf virt-man-01 (USV_MASTER):
- ssh-keygen als root
/root/.ssh/id_rsa.pub -> /root/.ssh/authorized_keys auf backup-01
die Datei /etc/apcupsd/doshutdown erstellen:
MY_UPS_SLAVES="backup-01" for host in $MY_UPS_SLAVES; do 0</dev/null ssh -lroot $host shutdown -h -t 30 now "apcupsd UPS ${2} initiated shutdown" 1>/dev/null 2>/dev/null done
in /etc/apcupsd/apcupsd.conf folgende Änderungen gemacht:
--- a/apcupsd/apcupsd.conf +++ b/apcupsd/apcupsd.conf @@ -26,7 +26,7 @@ # 940-1524C, 940-0024G, 940-0095A, 940-0095B, # 940-0095C, 940-0625A, M-04-02-2000 # -UPSCABLE smart +UPSCABLE usb # To get apcupsd to work, in addition to defining the cable # above, you must also define a UPSTYPE, which corresponds to @@ -79,8 +79,8 @@ UPSCABLE smart # modbus /dev/tty** Serial device for use with newest SmartUPS models # supporting the MODBUS protocol. # -UPSTYPE apcsmart -DEVICE /dev/ttyS0 +UPSTYPE usb +DEVICE # POLLTIME <int> # Interval (in seconds) at which apcupsd polls the UPS for status. This @@ -135,12 +135,12 @@ ONBATTERYDELAY 6 # If during a power failure, the remaining battery percentage # (as reported by the UPS) is below or equal to BATTERYLEVEL, # apcupsd will initiate a system shutdown. -BATTERYLEVEL 5 +BATTERYLEVEL 60 # If during a power failure, the remaining runtime in minutes # (as calculated internally by the UPS) is below or equal to MINUTES, # apcupsd, will initiate a system shutdown. -MINUTES 3 +MINUTES 10 # If during a power failure, the UPS has run on batteries for TIMEOUT # many seconds or longer, apcupsd will initiate a system shutdown. @@ -184,7 +184,7 @@ KILLDELAY 0 # information server. If netstatus is on, a network information # server process will be started for serving the STATUS and # EVENT data over the network (used by CGI programs). -NETSERVER on +NETSERVER off # NISIP <dotted notation ip address> # IP address on which NIS server will listen for incoming connections. diff --git a/default/apcupsd b/default/apcupsd index f8de693..b3d0e25 100644
dann noch apcupsd als "konfiguriert" markieren:
--- a/default/apcupsd +++ b/default/apcupsd @@ -2,4 +2,4 @@ # Apcupsd-devel internal configuration APCACCESS=/sbin/apcaccess -ISCONFIGURED=no +ISCONFIGURED=yes
- zuletzt: invoke-rc.d apcupsd restart
Unter Verwendung des hardware-übergreifend nutzbaren 'Network UPS Tools'
FIXME: Dokumentation noch ausstehend!