Betriebshandbuch

Aus THM-Wiki
Wechseln zu: Navigation, Suche

Dieses Betriebshandbuch soll fachlich versierten Personen ermöglichen, den Aufbau des eLearning-Clusters der Fachhochschule Giessen-Friedberg zu verstehen und zu rekonstruieren. Ebenso bietet es einen Einblick in die "Backup and Restore" Strategien.

Allgemeine Informationen

Der eLearning-Cluster dient in erster Linie der hochschulweiten Bereitstellung der beiden eLearning-Plattformen Moodle und eStudy. Im Rahmen der eLearning-Angebote wird zusätzlich eine Moodleplattform für das "Hochschulzentrum für Weiterbildung" betrieben. Alle in diesem zusammenhang betriebenen Server sind als Virtuelle Maschinen innerhalb einer VM-Ware Infrastruktur-Lösung realisiert. Diese VM-Ware Infrastruktur-Umgebung wird durch die hochschuleigenen IT-Services betreut. Daher können in diesem Betriebshandbuch keine Informationen zur Verwaltung/Konfiguration der VM-Ware Infrasturktur breitgestellt werden. Die folgende Dokumentation beschränkt sich auf die darunter liegenden Ebenen. Hierzu gehören:

  1. Die Cluster-Knoten der eLearning-Plattformen
  2. Die Datenbank-Knoten
  3. Backup / Recovery
  4. VMs der externen Tools

Struktureller Aufbau

Struktureller Aufbau des Clusters

Die Knoten der zentralen Moodle- und eStudy-Plattformen werden hinter zwei Lastverteilern betrieben, welche zwecks Ausfallsicherheit über Heartbeat-Monitoring verbunden sind. Diese Lastverteiler sind eigenständige reale Server, die nicht Teil der VM-Ware Lösung sind. Die Lastverteiler leiten Anfragen im Round-Robin-Verfahren an die einzelnen Cluster-Knoten weiter. Bearbeitet werden die Anfragen durch Apache2/PHP5-Instanzen der Knoten.

Angebunden an das hochschulzentrale LDAP-Verzeichnis benötigen alle Benutzer nur ihren Mail-Account, um auf beide Plattformen zugreifen zu können. Die Daten der Plattform werden in zwei redundanten MySQL-Servern gehalten. Für die Dateiablage (Ressourcen/Uploads) wird ein OCFS2-Cluster-Filesystem auf einem externen SAN verwendet. Zusätzlich stehen drei NAS-Systeme für Backup-Zwecke zur Verfügung.

Installation / Konfiguration

Im Folgenden wird die grundlegende Installation der einzelnen Maschinen erläutert. Hierzu gehören die eStudy und Moodle Cluster-Knoten, die HZW-Moodle VM sowie die MySQL Server. Es wird detailliert auf die einzelnen Konfigurationsschritte eingegangen, so dass eine Rekonstruktion des gesamten Clusters anhand dieses Betriebshandbuches möglich wird.

Grundkonfiguration

Alle virtuelle Maschinen werden in der Grundkonfiguration mit einer minimalen Debian "Squeeze"-Version ausgestattet.

Besonderheiten wärend der Installation der VMs

  • Netzwerkeinstellungen
    • Die Netzwerkeinstellungen werden genauer im Abschnitt der eStudy/Moodle Knotenkonfiguration erläutert.
  • Partitionierung der vorhandenen (virtuellen-)Festplatte
    • Die Partitionierung erfolgt automatisch durch den debian installationsprozess. Eine spezielle Aufteilung der Partitionen ist nicht notwendig, da alle relevanten Datenpfade zu einem späteren Zeitpunkt von externen Datenträgern (SAN) eingebunden werden.

Nach dem ersten Login

Bevor weitere Pakete installiert werden, müssen folgende Dateien geändert werden:

  • in der Datei /etc/apt/sources.list wird folgendes hinzugefügt:
 deb http://ftp.de.debian.org/debian/ stable main contrib non-free
 deb-src http://ftp.de.debian.org/debian/ stable main contrib non-free
 
 deb http://ftp.de.debian.org/debian/ squeeze-updates main contrib non-free
 #deb-src http://ftp.de.debian.org/debian/ stable main contrib non-free
 
 deb http://packages.dotdeb.org stable all
 deb-src http://packages.dotdeb.org stable all
 
 deb http://security.debian.org/ squeeze/updates main contrib


Nach dem Konfigurieren des Paketmanagers wird ein initiales update und upgrade durchgeführt:

  # apt-get update 
     ...
  # apt-get upgrade

Zur verwendung der aktuellen php und apache Versionen wurde wie oben beschrieben bereits der DotDeb Server als Debian Paketquelle hinzugefügt. Eine Anleitung, vor allem zum überprüfen der Paketquelle anhand des Schlüsselpaares, findet man auf http://www.dotdeb.org/instructions/.

Da die Debian Installation nun auf dem neusten Stand ist, wird nun mit der Installation der ersten Pakete begonnen:

 # su
 [root-pw eingeben]
 # apt-get install sudo chkrootkit sysfsutils logwatch apt-show-versions clamav 

Zusätzlich wird das, evtl. automatisch installierte, mpt-status paket entfernt, da hierdurch häufig "Raid Fehlermeldungen" gemeldet werden, obwohl die Maschinen kein Raid-System nutzen.

 # apt-get remove mpt-status

/etc

Folgende Änderungen müssen in den entsprechenden Dateien vorgenommen werden:

  • /etc/sysfs.conf
block/sda/device/timeout = 190
block/sdb/device/timeout = 190
  • /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
kernel.panic_on_oops = 1
kernel.panic = 90
  • /etc/email-adresses
 echo "root: [ADMIN-MAIL-ADRESSE]" >> /etc/email-addresses

Firewall

Auf allen VM's kommt eine iptables-basierte Whitelist-Firewall zum Einsatz. Zusätzlich zur generellen Sperre aller nicht benötigten Ports werden Pakete mit ungültigen Flags verworfen und geloggt.

Kernel

Für alle VM's mit OCFS2 Cluster FS wird momentan eine speziell für den Betrieb dieses Dateisystems gepatchter Kernel in der Version 2.6.26 verwendet. Alle hierfür notwendigen Dateien sind hier zu finden. Alle anderen VM's werden mit dem jeweils aktuellen 2.6. Kernel der Debian Distribution betrieben.

open-vm-tools

Um von der dynamischen Speicher- und CPU Nutzung der VMWare profitieren zu können werden auf jeder Maschine die open-vm-tools benötigt. Die Open-VM-Tools können direkt aus dem contrib tree des Debian Paket Archivs installiert werden

apt-get install open-vm-tools open-vm-source

anschließend müssen die Module erstellt werden (funktioniert nur mit debian standard kernel-paketen)

m-a open-vm

iscsi

  • Version: open-iscsi/stable uptodate 2.0.870~rc3-0.4

Um via iSCSI eine Verbindung zum SAN-Speicher aufbauen zu können, wird das open-iscsi Debian Paket benötigt. Nach der Installation muss die initiator-ID an IT-Services übermittelt werden, damit eine Freischaltung des Knotens für den SAN Zugriff erfolgen kann. Die ID findet man in der Datei /etc/open-iscsi/initiatorname.iscsi

Nach der Freischaltung werden mit

iscsiadm -m discovery -t st -p 10.196.20.140

die LUNs erkannt. Anschliessend erfolgt das login mittels

iscsiadm -m node -L all

Zur automatischen einhängen des SAN Speichers beim Booten ist einmalig folgender Befehl auszuführen (wobei TARGET_NAME mit dem vorher erkannten TARGET_NAME erstzt wird):

iscsiadm -m node -T TARGET_NAME_HIER --op update -n node.startup -v automatic

Cronjobs

Für regelmäßige Wartungsarbeiten wird der von Linux mitgelieferte Cron-Daemon genutzt. Zur Vermeidung von Konflikten sollte das parallele Ablaufen von Backupjobs beispielsweise vermieden werden. Grundsätzlich sollten Wartungsarbeiten in der Nacht erfolgen, da der reguläre Betrieb tagsüber dadurch nicht beeinflusst wird. Nachfolgen eine Aufstellung der durchgeführten Jobs:

eStudy

  • /etc/cron.hourly (jeweils 17 Minuten nach jeder vollen Stunde)
KEINE 
  • /etc/cron.daily
    • mitgelieferte Skripte
    • ntp
#!/bin/bash
/usr/sbin/ntpdate ntps1-0.fh-giessen.de # Timesync
  • /etc/cron.weekly
    • mitgelieferte Skripte
  • /etc/cron.monthly
    • mitgelieferte Skripte
  • /etc/cron.d/
    • mitgelieferte Skripte, lediglich zu dem Skript php5 hinzugefügt:
12 2 * * *     root   [ -d /estudy-data/share/sessions ] && find /estudy-data/share/sessions/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm
  • root crontab (nur estudy-01)
0 5 * * * /usr/bin/php5 /var/www/trunk/web/admin/daily.php > /var/log/estudy_daily.log # eStudy's Daily PHP ausführen (5:00 Uhr morgens)
12 3 * * * rsync /estudy-data/upload/ /mnt/upload_bck/ -r --stats # eStudy Upload Verzeichnis auf NAS spiegeln
10 0 * * * /usr/local/bin/logresolvemerge.pl /var/log/apache2/access_http_node1.log /var/log/apache2/access_https_node1.log > /estudy-data/weblog/access_node1.log
50 0 * * * /usr/local/bin/logresolvemerge.pl /estudy-data/weblog/access_node*.log > /estudy-data/access.log
50 1 * * * /usr/local/bin/webalizer -c /etc/webalizer.conf /estudy-data/weblog/access.log

Das in der Crontab verwendete logresolvemerge.pl script ist teil des awstats pakets. Die cronjobs von awstats, sowie die autorun scripte, können nach der awstats installation entfernt werden. Durch das logresolvemerge.pl script werden die https und http logfiles der einzelnen Knoten nacheinander in Zeitlicher abfolge sortiert und gemerged. Dies ist notwendig um webalizer ein einzelnes logfile in chronologischer folge zu bieten und somit "Time Gaps" in den Statistiken zu vermeiden.

Moodle

  • /etc/cron.hourly (jeweils 37 Minuten nach jeder vollen Stunde)
KEINE 
  • /etc/cron.daily (täglich 4:25 Uhr)
    • daily_backup.sh (mit folgendem Inhalt) (nur moodle-01)
#!/bin/bash
#mount /mnt/backup
cd /var/www
rm /mnt/backup/moodle_www/moodle_www_`date +%a`.tar.gz
tar czf /mnt/backup/moodle_www/moodle_www_`date +%a`.tar.gz moodle
cd /
rm /mnt/backup/moodle_etc/moodle_etc_`date +%a`.tar.gz
tar czf /mnt/backup/moodle_etc/moodle_etc_`date +%a`.tar.gz etc
#umount /mnt/backup
echo "---- Moodle.fh-giessen-friedberg.de ----"
echo "---- Daily Backup successfully done ----"
    • zusätzlich alle Skripte die per default bei den installierten Debian Paketen mitgeliefert werden (zb. Apache, Apt, logrotate, man-db, sysklogd, ...)
  • /etc/cron.weekly (Sonntags, 4:47 Uhr)
    • mitgelieferte Skripte
    • weekly_backup (mit folgendem Inhalt) (nur moodle-01)
#!/bin/bash
#mount /mnt/backup
cd /var/www
rm /mnt/backup/moodle_www/weekly/moodle_www_`date +%W`.tar.gz
tar czf /mnt/backup/moodle_www/weekly/moodle_www_`date +%W`.tar.gz moodle
cd /
rm /mnt/backup/moodle_etc/weekly/moodle_etc_`date +%W`.tar.gz
tar czf /mnt/backup/moodle_etc/weekly/moodle_etc_`date +%W`.tar.gz etc
#umount /mnt/backup
echo "---- moodle.fh-giessen-friedberg.de ----"
echo "---- Daily backup successfully done ----"
  • /etc/cron.monthly (am 01. des Monats um 4:52 Uhr)
  • root crontab (alle Knoten):
15 6 * * * /usr/sbin/ntpdate ntps1-0.fh-giessen.de (alle nodes)
27 0 * * * apt-get update >> /dev/null && apt-get upgrade -s
  • root crontab (moodle-01)
*/5 * * * * /usr/bin/php /var/www/moodle/admin/cron.php >> /var/log/moodlecron (moodle-01)
0 0 * * * echo "Subject: Moodle - Cronjob" | cat - /var/log/moodlecron | /usr/lib/sendmail -F [sender email] [empfänger email / Admin]
14 0 * * * rm /var/log/moodlecron 
12 3 * * * rsync /moodle-upload /mnt/upload/ -r --stats

Hier wird jeweils alle 5 Minuten der Moodle Cronjob ausgeführt und die Ausgabe in eine Logdatei geschrieben. Diese Logdatei wird täglich an den Administrator gesendet und danach gelöscht. Zusätzlich wird das moodle-data directory moodle-upload per rsync auf das NAS gespiegelt.

Datenbanken

db-elearn-01

  • /etc/cron.hourly (jeweils 22 Minuten nach jeder vollen Stunde)
KEINE 
  • /etc/cron.daily (täglich 2:28 Uhr)
    • mitgelieferte Skripte
    • mysql_single /* Führt mysqldump aus und legt die Sicherung täglich in dem Ordner /backup des Servers ab. */
    • ntp
#!/bin/bash
/usr/sbin/ntpdate ntps1-0.fh-giessen.de # Timesync
  • /etc/cron.weekly
    • mitgelieferte Skripte
    • mysql /* Führt mysqldump aus und legt die Sicherung wöchentlich in dem Ordner /backup des Servers ab. */
  • /etc/cron.monthly
    • mitgelieferte Skripte
  • /etc/cron.d/
    • mitgelieferte Skripte

db-elearn-02

  • /etc/cron.hourly (jeweils 27 Minuten nach jeder vollen Stunde)
KEINE 
  • /etc/cron.daily (täglich 6:32 Uhr)
    • mitgelieferte Skripte
    • mysql_single /* Führt mysqldump aus und legt die Sicherung täglich in dem Ordner /backup des Servers ab. */
    • ntp
#!/bin/bash
/usr/sbin/ntpdate ntps1-0.fh-giessen.de # Timesync
  • /etc/cron.weekly
    • mitgelieferte Skripte
    • mysql /* Führt mysqldump aus und legt die Sicherung wöchentlich in dem Ordner /backup des Servers ab. */
  • /etc/cron.monthly
    • mitgelieferte Skripte
  • /etc/cron.d/
    • mitgelieferte Skripte

NAS

Regelmäßige Backupjobs der NAS Geräte:

  • nas-01
    • Montags und Donnerstags, 01:00: rsync [estudy-upload] -> nas-03.its.fh-giessen.de::estudy_res_back
    • Montags und Donnerstags, 02:00: rsync [moodle-uploads] -> nas-03.its.fh-giessen.de::moodle_res_back
  • nas-02
    • Montags und Donnerstags, 03:00: rsync [db-backup] -> nas-03.its.fh-giessen.de::db_res_back

Weiterführende Links