Moodle-Nodes

Aus THM-Wiki
Version vom 8. Juni 2009, 11:15 Uhr von Marc.kowal:mni (Diskussion | Beiträge) (Die Seite wurde neu angelegt: Die Clusterkonfigurationen der beiden Lernplattformen Moodle und eStudy sind sich sehr ähnlich, jedoch entscheiden Sie sich in einigen wichtigen Punkten, die hier näh...)
(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

Konfiguration

Die Konfiguration wird in den folgenden Abschnitten auf die einzelnen Komponenten aufgeteilt. Die hier aufgelisteten Konfigurationen setzen die Grundkonfiguration der Clusterknoten voraus.

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

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 eStudy 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=7000

# 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