Moodle-Nodes

Aus THM-Wiki
Version vom 6. Oktober 2011, 13:45 Uhr von Hg12780 (Diskussion | Beiträge) (Apache 2: ServerLimit Attribute Added)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Die Clusterkonfigurationen der beiden Lernplattformen Moodle und eStudy sind sich sehr ähnlich, jedoch entscheiden Sie sich in einigen wichtigen Punkten, die hier näher aufgeführt sind.

Vorhandene Knoten

Der Moodle Cluster besteht derzeit aus 4 Clusterknoten mit folgenden Domainnamen und IP-Adressen:

  • Knoten 1:
    • eth0: moodle-01.mni.fh-giessen.de - 10.197.5.8
    • eth1: moodle-01-san.mni.fh-giessen.de - 10.196.20.8
  • Knoten 2:
    • eth0: moodle-02.mni.fh-giessen.de - 10.197.5.7
    • eth1: moodle-02-san.mni.fh-giessen.de - 10.196.20.9
  • Knoten 3:
    • eth0: moodle-03.mni.fh-giessen.de - 10.197.5.10
    • eth1: moodle-03-san.mni.fh-giessen.de - 10.196.20.20
  • Knoten 4:
    • eth0: moodle-04.mni.fh-giessen.de - 10.197.5.11
    • eth1: moodle-04-san.mni.fh-giessen.de - 10.196.20.21

Netzkonfiguration

Alle Knoten besitzen folgende Netzconfiguration:

eth0

Dieses Interface ist die haupt Netzwerk-Schnittstelle. Über dieses Interface findet jede Kommunikation mit der Aussenwelt statt, mit ausnahme des SAN-Traffics.

iface eth0 inet static
       address [JEWEILIGE IP]
       netmask 255.255.255.0
       network 10.197.5.0
       broadcast 10.197.5.255
       gateway 10.197.5.1
       dns-nameservers 192.168.186.83
       dns-search mni.fh-giessen.de

eth1

Das eth1 Interface Dient der Kommunikation mit dem SAN:

iface eth1 inet static
       address [JEWEILIGE IP]
       netmask 255.255.255.0
       network 10.196.20.0
       broadcast 10.196.20.255
       # dns-* options are implemented by the resolvconf package, if installed
       dns-nameservers 192.168.186.83
       dns-search fh-giessen-friedberg.de
auto eth1

lo:1

Zusätzlich muss für die Lastverteilung ein zweites Loopback Interface erstellt werden:

#### Loadbalancing: 
auto lo:1
iface lo:1 inet static
       address 212.201.14.50
       netmask 255.255.255.255

Apache 2

  • Aktuelle Version des Apache Webserver im Porduktivbetrieb: 2.2.9-10+lenny2
  • Um die maximal ausgeführten Apache Prozesse (Slot's) zu reduzieren setzen wir in /etc/apache2/apache2.conf folgenden Wert:

ServerLimit 80

Virtual Host Settings

Bei der Konfiguration der Knoten gilt es besonders bei dem Apache2 Webserver auf die Einzelheiten der Konfiguration zu achten. Neben wichtigen Grundeinstellungen sind hier auch Performance relevante Settings zu beachten.

  • Der ServerName entspricht der öffentlichen URL (hier: moodle.fh-giessen-friedberg.de)
  • Das SSL Zertifikat muss entsprechend der Dokumentation auf der IT-Services website, erstellt und Signiert werden
  • Das directory listing sowie FileETags werden abgeschaltet
  • Zusätzlich erfolgt bei Apache ErrorResponses keine Ausgabe der Server Signatur

Die VirtualHosts für http sowie https sind in zwei Dateien aufgeteilt. Zum einen 000-default für http sowie 001-ssl für https. Beide Dateien sind in dem Ordner /etc/apache2/sites-enabled/ zu finden.

001-ssl:

NameVirtualHost *:443
<VirtualHost *:443>
     ServerAdmin [Admin-Email-Adresse]
     ServerName moodle.fh-giessen-friedberg.de
     ServerSignature Off

     SSLEngine on
     SSLCertificateFile /etc/apache2/ssl/server_cert.pem
     SSLCertificateKeyFile /etc/apache2/ssl/server_cert.key
     <IfModule mod_headers.c>
       Header set NodeHeader "[KNOTEN-NAME]"
     </IfModule>

       <Directory /var/www/moodle>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride All
#              Order allow,deny
#              allow from all
       </Directory>

       ErrorLog /var/log/apache2/error.log
       LogLevel warn
       CustomLog /var/log/apache2/access.log combined
</VirtualHost>

000-default:

NameVirtualHost *:80
<VirtualHost *:80>
       ServerAdmin [Admin-Email-Adresse]
       DocumentRoot /var/www/moodle
       <Directory /var/www/moodle>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride All
       </Directory>
       <IfModule mod_headers.c>
         Header set NodeHeader "[KNOTEN-NAME]"
       </IfModule>
       ErrorLog /var/log/apache2/error.log
       LogLevel warn
       CustomLog /var/log/apache2/access.log combined
       ServerSignature Off
</VirtualHost>

Apache Module

Die nachfolgend aufgeführten Module sind für den fehlerfreien Betrieb von moodle notwendig:

auth_basic
authn_file
authz_groupfile
authz_user
dir
env
headers
mime
php5
ssl

Durch die ausschliessliche Verwendung dieser Module wird die Server-Auslastung erheblich reduziert, da keine unnötigen Module geladen werden müssen.

PHP

  • Version im Produktivbetrieb: PHP 5.2.9-0.dotdeb.2 with Suhosin-Patch 0.9.7

Auf dem ersten Knoten moodle-01 wird sowohl die Kommandozeilen Version (cli) als auch das Apache Modul benötigt. Auf allen weiteren Knoten ist lediglich das Apache2 Modul notwendig, da dort keine regelmäßigen arbeiten per Kommandozeile (siehe [[Betriebshandbuch#Cronjobs Cronjobs]) ausgeführt werden müssen. Informationen zu den APT-Paketmanager settings um den aktuellen Versionsstand zu erhalten findet man im Betriebshandbuch APT-Pakete:

libapache2-mod-php5
php5-cli

Module

Moodle benötigt für einen reibungslosen Betrieb einige PHP Module. Einige sind einfach per APT-Paketmanager zu installieren, andere müssen per Hand compiliert und installiert werden und/oder benötigen lediglich einige spezielle Einstellungen. In dem folgenden Abschnitt wird auf alle Details eingegangen.

per APT zu installieren

php5-curl
php5-dev
php5-gd
php5-ldap
php5-mysql
php5-xmlrpc

Auch hier gilt: Weniger ist mehr. Je weniger Module von PHP geladen werden müssen, um so mehr freier RAM steht zur Verfügung. Ebenso wird durch den Verzicht auf nicht benötigte Module die Ladezeit der Seiten verringert.

php.ini

Die Konfigurationseinstellungen für php sind in der php.ini Datei wie folgt angepasst worden:

safe_mode = Off
max_execution_time = 30 
max_input_time = 60
memory_limit = 16M 
error_reporting  =  E_ALL & ~E_NOTICE
display_errors = Off
log_errors = On
error_log = /var/log/apache2/php.log
register_globals = Off
post_max_size = 200M
magic_quotes_gpc = On
magic_quotes_runtime = Off
file_uploads = On
allow_url_fopen = On

OCFS 2 Konfiguration

Die Einstellungen des Clusters für Moodle sind wie folgt gewählt:

/etc/default/o2cb

# O2CB_ENABLED: 'true' means to load the driver on boot.
O2CB_ENABLED=true

# O2CB_BOOTCLUSTER: If not empty, the name of a cluster to start.
O2CB_BOOTCLUSTER=moodledata

# O2CB_HEARTBEAT_THRESHOLD: Iterations before a node is considered dead.
O2CB_HEARTBEAT_THRESHOLD=40
 
# O2CB_IDLE_TIMEOUT_MS: Time in ms before a network connection is considered dead.
O2CB_IDLE_TIMEOUT_MS=50000

# O2CB_KEEPALIVE_DELAY_MS: Max. time in ms before a keepalive packet is sent.
O2CB_KEEPALIVE_DELAY_MS=2000

# O2CB_RECONNECT_DELAY_MS: Min. time in ms between connection attempts.
O2CB_RECONNECT_DELAY_MS=1500

/etc/ocfs2/ocfs2.conf

node:
       ip_port = 7777
       ip_address = 10.196.20.8
       number = 0
       name = moodle-01
       cluster = moodledata
node:
       ip_port = 7777
       ip_address = 10.196.20.9
       number = 1
       name = moodle-02
       cluster = moodledata
node:
       ip_port = 7777
       ip_address = 10.196.20.20
       number = 2
       name = moodle-03
       cluster = moodledata
node:
       ip_port = 7777
       ip_address = 10.196.20.21
       number = 3
       name = moodle-04
       cluster = moodledata
cluster:
       node_count = 4
       name = moodledata

Mountpoints

Speziell zu beachten sind hier die mountpoints moodle-session, moodle-upload sowie /mnt/upload.

  • moodle-session dient alleine der Ablage der php Session-Daten. Ziel ist die erste Partition des OCFS2 Cluster
  • moodle-upload ist der Zentrale Ablageort für alle moodle Ressourcen. Das sogenannte moodle-data directory. Ziel ist hier die zweite Partition des OCFS2 Cluster.
  • /mnt/upload enthält ein per rsync gebildetes Abbild des moodle-upload Verzeichnisses. Dieser Mountpoint wird nur auf Knoten moodle-01 benötigt, da auf dieser VM die regelmäßigen Cronjobs ausgeführt werden.
  • /mnt/backup dient der Sicherung des Dateisystems (mit Ausnahme des moodle-data Verzeichnisses) sowie zur Ablage der Moodle Sicherungsdateien (Kurssicherung)

/dev/sda1       /               ext3    defaults,errors=remount-ro 0       1
/dev/sda5       none            swap    sw              0       0
/dev/hda        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0
/dev/sdb1       /moodle-sessions ocfs2  defaults        0       0
/dev/sdb2       /moodle-upload  ocfs2   defaults        0       0
nas-01.its.fh-giessen.de:/moodle-uploads        /mnt/upload     nfs     soft,intr,noexec
nas-02.its.fh-giessen.de:/moodle-backup         /mnt/backup     nfs     soft,intr

Moodle

Moodle wird aktuell in der Version 1.9.5 Betrieben. Installationsstandort auf allen Knoten ist /var/www/moodle. Zusätzlich sind folgende Module in Moodle integriert:

# cd /var/www/moodle/courses
# ln /moodle-upload/externservercourse.php externservercourse.php -s

Genauere Dokumentation über die Verwendung der externservercourse.php Datei findet man im Moodle Forum

Die Moodle Datenbank wurde aus Performancegründen geändert:

ALTER TABLE mdl_backup_log ADD INDEX (time);

Backup / Recovery

Datenbank

siehe Datenbankknoten

Upload-Verzeichnis

Das Upload-Verzeichnis von Moodle wird doppelt gespiegelt.

Primär:

  • Per rsync des OCFS2 Produktiv verzeichnis auf nas-01.its.fh-giessen.de:/moodle-uploads

Sekundär:

  • Per rsync von nas-01.its.fh-giessen.de:/moodle-uploads nach nas-03.its.fh-giessen.de:/moodle_res_back

Je nach benötigtem Stand sowie Integrität der Daten kann zur Wiederherstellung aus einer der vorhandenen Backup-Quellen gewählt werden.

Moodle-Internes Backup

Die Moodle-Daten werden regelmäßig Donnerstags und Montags über die interne Backup-Funktion von Moodle gesichert. Zu finden sind die Sicherungsdateien auf Knoten moodle-01 in dem Ordner /mnt/backup/moodle_int_backup oder direkt auf dem NAS nas-02.its.fh-giessen.de:/moodle-backup in dem Ordner moodle_int_backup.

Zusätzlich hierzu kann jeder Kurs manuell durch den/die Teacher gesichert werden. Die Daten können entweder heruntergeladen und Lokal gespeichert oder in dem Kursverzeichnis des moodle-data-Directory abgelegt werden. Dies kann für jedes Kursbackup seperat eingestellt werden.