EStudy-Nodes

Aus THM-Wiki
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 eStudy Cluster besteht derzeit aus 4 Clusterknoten mit folgenden Domainnamen und IP-Adressen:

  • Knoten 1:
    • eth0: estudy-01.mni.fh-giessen.de - 10.197.5.20
    • eth1: estudy-01-san.mni.fh-giessen.de - 10.196.20.6
  • Knoten 2:
    • eth0: estudy-02.mni.fh-giessen.de - 10.197.5.21
    • eth1: estudy-02-san.mni.fh-giessen.de - 10.196.20.7
  • Knoten 3:
    • eth0: estudy-03.mni.fh-giessen.de - 10.197.5.22
    • eth1: estudy-03-san.mni.fh-giessen.de - 10.196.20.18
  • Knoten 4:
    • eth0: estudy-04.fh-giessen-friedberg.de - 10.197.5.9
    • eth1: estudy-04-san.mni.fh-giessen.de - 10.196.20.19

Im Cluster werden derzeit lediglich Knoten 1 und Knoten 2 Aktiv betrieben, da Knoten 3 nach einen gestrigen Versions Update der Portalsoftware noch als Fallback vorgehalten wird. Knoten 4 wird derzeit für Integrations- und Abnahmetests verwendet.

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-* options are implemented by the resolvconf package, if installed
       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.8.13
       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: estudy.fh-giessen-friedberg.de)
  • Das SSL Zertifikat muss entsprechend der Dokumentation auf der IT-Services website, erstellt und Signiert werden
  • Folgende Module müssen zum aktivieren der Performance settings des apache2 Webservers aktiv sein:
    • deflate
    • header
  • Das directory listing sowie FileETags werden ebenfalls abgeschaltet
  • Zusätzlich erfolgt bei Apache ErrorResponses keine Ausgabe der Server Signatur

NameVirtualHost *:443
<VirtualHost *:443>
     ServerName estudy.fh-giessen-friedberg.de
     ServerSignature Off

     SSLEngine on
     SSLCertificateFile /etc/apache2/ssl/estudy.pem
     SSLCertificateKeyFile /etc/apache2/ssl/estudy.key

  • Zu Analysezwecken wird "log_forensic" konfiguriert, das Modul jedoch nur bei Bedarf kurzfristig aktiviert!

     <IfModule mod_log_forensic.c>
          ForensicLog /var/log/apache2/forensic.log
     </IfModule>

     <IfModule mod_headers.c>
          Header set NodeHeader "estudy-01"
     </IfModule>
 
     DocumentRoot "/var/www/trunk/web"
     <Directory "/var/www/trunk/web">
          allow from all
          Options -Indexes FollowSymLinks
          FileETag None
          AllowOverride All
     </Directory>
 
     FileETag None

  • Die logfiles werden auf den Zentralen Cluster Datastore geschrieben. Für jeden Knoten einzeln. Die Zusammenführung für die Webalizer Statistik erfolgt per Cronjob.

     CustomLog /estudy-data/weblog/access_https_node1.log "combined"
     ErrorLog /estudy-data/weblog/error_https_node1.log

</VirtualHost>

NameVirtualHost *:80
<VirtualHost *:80>
       ServerName estudy.fh-giessen-friedberg.de
       ServerSignature Off

       <IfModule mod_log_forensic.c>
            ForensicLog /var/log/apache2/forensic.log
       </IfModule>
       <IfModule mod_headers.c>
            Header set NodeHeader "estudy-01"
       </IfModule>

       DocumentRoot /var/www/trunk/web
       <Directory /var/www/trunk/web>
               Options -Indexes FollowSymLinks MultiViews
               AllowOverride All
               Order allow,deny
               allow from all
               # This directive allows us to have apache2's default start page
               # in /apache2-default/, but still have / go to the right place
                 FileETag None
       </Directory>

       ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
       <Directory "/usr/lib/cgi-bin">
               AllowOverride All
               Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
               Order allow,deny
               Allow from all
       </Directory>

       # Possible values include: debug, info, notice, warn, error, crit,
       # alert, emerg.
       LogLevel warn

       CustomLog /estudy-data/weblog/access_http_node1.log "combined"
       ErrorLog /estudy-data/weblog/error_http_node1.log

       HostNameLookups Off
       FileETag None
</VirtualHost>

Apache Module

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

alias
auth_basic
authn_file
authz_default
authz_host
authz_user
autoindex
cgi
deflate
dir
env
expires
headers
mime
negotiation
php5
rewrite
setenvif
ssl
  • mod_deflate:
<IfModule mod_deflate.c>
       SetOutputFilter DEFLATE
       DeflateCompressionLevel 9
       AddOutputFilterByType DEFLATE text/html text/plain text/xml application$
       DeflateFilterNote Input instream
       DeflateFilterNote Output outstream
       DeflateFilterNote Ratio ratio
       AddOutputFilterByType DEFLATE text/*
       AddOutputFilterByType DEFLATE application/ms* application/vnd* applicat$
       BrowserMatch ^Mozilla/4 gzip-only-text/html
       BrowserMatch ^Mozilla/4\.0[678] no-gzip
       BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>

PHP

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

Es wird sowohl die Kommandozeilen Version (cli) als auch das Apache Modul benötigt. Informationen zu den APT-Paketmanager settings um den aktuellen Versionsstand zu erhalten findet man im Betriebshandbuch APT-Pakete:

libapache2-mod-php5
php5-cli

Module

eStudy 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

php-pear
php-soap
php5-curl
php5-dev
php5-gd
php5-ldap
php5-memcache
php5-mysql
php5-pspell
php5-suhosin
php5-xdebug
php5-xmlrpc

APC

Der Alternative PHP Cache (APC) ist als PECL-Paket verfügbar und kann daher relativ leicht installiert werden:

pecl install APC

Eine weitere Möglichkeit ist das Verwenden der aktuellen Entwicklerversion. Hierzu eignet sich folgendes Skript:

svn co http://svn.php.net/repository/pecl/apc/trunk/ apc-svn
cd apc-svn
phpize
./configure
make
make install
cd ../
rm -rf apc-svn

Wurde APC mit einer der beiden Methoden installiert und kam es hierbei zu keinem Fehler, so ist das PHP-Modul im entsprechenden Ordner installiert. Um APC verwenden zu können, muss hierzu die Datei:

/etc/php5/conf.d/apc.ini

mit folgendem, exemplarischen Inhalt angelegt werden:

extension=apc.so
apc.enabled=1
apc.shm_segments=16
apc.shm_size=32M
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX 
apc.enable_cli=1

Nach einem Neustart von Apache ist APC aktiv und beschleunigt die Ausführung von PHP-Skripten.

PEAR

Nach der Installation des Debian Pakets php-pear müssen folgende pear pakages installiert werden:

XML_Util
XML_Serializer
XML_Parser
Structures_Graph
SOAP
PEAR
Net_URL
Net_Socket
HTTP_Upload
HTTP_Request
HTML_Template_Sigma
HTML_Table
HTML_QuickForm_Controller
HTML_QuickForm
HTML_Common
Date
DB_DataObject
DB
Crypt_Blowfish
Console_Getopt
Archive_Tar

php.ini

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

safe_mode = Off
max_execution_time = 300 
max_input_time = 600
memory_limit = 16M 
error_reporting  =  E_ALL
display_errors = Off
log_errors = On
error_log = /var/log/apache2/php-error.log
register_globals = Off
post_max_size = 20M
magic_quotes_gpc = Off
magic_quotes_runtime = Off
include_path = ".:/usr/share/php:/estudy-shared/ZendFramework/library"
file_uploads = On
allow_url_fopen = On
soap.wsdl_cache_enabled=0
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400

suhosin.ini

Da die Sicherheitseinstellungen und Regeln für eStudy in Verbindung mit Suhosin noch nicht ausreichend entwickelt sind, wird Suhosin derzeit lediglich im Simulationsbetrieb betriebn. Die beschriebene suhosin.ini befindet sich unter Debian/GNU Linux im Verzeichnis /etc/php5/apache2/conf.d/. Folgende Einstellungen sind in der Datei notwendig:

Aktuell Deaktiviert!!

;extension=suhosin.so
;suhosin.memory_limit = 4294967295
;suhosin.log.syslog = S_ALL
;suhosin.simulation = On
;suhosin.log.syslog.facility = LOG_USER
;suhosin.log.sapi = S_ALL
;suhosin.log.syslog.priority = LOG_ALERT
;suhosin.log.file = 511
;suhosin.log.file.name = /var/log/suhosin.log
;suhosin.session.encrypt = Off

OCFS 2 Konfiguration

Die Einstellungen des Clusters für eStudy und 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=estudy-data

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

# 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=2000

/etc/ocfs2/ocfs2.conf

node:
       ip_port = 7777
       ip_address = 10.197.5.20
       number = 0
       name = estudy-01
       cluster = estudy-data
node:
       ip_port = 7777
       ip_address = 10.197.5.21
       number = 1
       name = estudy-02
       cluster = estudy-data
node:
       ip_port = 7777
       ip_address = 10.197.5.22
       number = 2
       name = estudy-03
       cluster = estudy-data
node:
       ip_port = 7777
       ip_address = 10.197.5.9
       number = 3
       name = estudy-04
       cluster = estudy-data
cluster:
       node_count = 4
       name = estudy-data

Mountpoints

Speziell zu beachten sind hier die mountpoints estudy-data, estudy-backup sowie /mnt/upload_bck.

  • estudy-data ist der Zentrale Ablageort für alle eStudy Ressourcen. Das sogenannte upload Verzeichnis. Ziel ist hier die erste Partition des OCFS2 Cluster.
  • estudy-backup ist eine ersatz Partition, auf die im Notfall schnellstmöglich ein Abbild des upload-Verzeichnisses gespielt werden kann, falls Probleme mit dem Dateisystem der ersten Partition des OCFS2 FS auftreten. Ziel ist hier die zweite Partition des OCFS2 Cluster.
  • /mnt/upload_bck enthält ein per rsync gebildetes Abbild des estudy-data Verzeichnisses. Dieser Mountpoint wird nur auf Knoten estudy-01 benötigt, da auf dieser VM die regelmäßigen Cronjobs ausgeführt werden.

proc            /proc           proc    defaults        0       0
/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       /estudy-data    ocfs2   defaults        0       0
/dev/sdb2       /estudy-backup  ocfs2   defaults        0       0
nas-01.its.fh-giessen.de:/estudy-upload        /mnt/upload_bck     nfs     soft,intr,noexec,nolock

Backup / Recovery

Datenbank

siehe Datenbankknoten

Upload-Verzeichnis

Das Upload-Verzeichnis von eStudy wird doppelt gespiegelt.

Primär:

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

Sekundär:

  • Per rsync von nas-01.its.fh-giessen.de:/estudy-upload nach nas-03.its.fh-giessen.de:/estudy_res_back

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

Weiterführende Links