Software Challenge : Übersicht relevanter Programme

Phyisikalischer RechnerEnthaltene virtuelle Rechner
numerobisVMMain, mehrere VMClient
Quassum Server (extern!)Ø
GitHub Server (extern!)Ø
Programmläuft woBeschreibungStart durch
ApacheVMMainBeantwortet HTTP-Anfragen und leitet sie an die Rails WebApp (Port 80) oder das phpBB Forum (Port 8080) weiterStart-Script des Ubuntu-OS (/etc/init.d/apache)
Rails WebAppVMMain/ApacheÜber Apache, erreichbar über Port 80ist aktiv sobald Apache läuft (mod_passenger)
phpBB ForumVMMain/ApacheÜber Apache, erreichbar über Port 8080ist aktiv sobald Apache läuft (mod_php)
MediaWiki (nicht mehr verwendet, Inhalt ist bei GitHub Pages)
VMMain/ApacheDas Wiki, in dem wir Informationen sammeln, die für die Schüler gedacht sind. Über Apache, erreichbar über Port 8081.ist aktiv sobald Apache läuft (mod_php)
MySQLVMMainDie Datenbank für die WebApp und das ForumStart-Script des Ubuntu-OS (/etc/init.d/mysql)
RabbitMQVMMainDient zur Kommunikation zwischen den einzelnen KomponentenStart-Script des Ubuntu-OS (/etc/init.d/rabbitmq-server)
SupervisordVMMainÜberwacht und verwaltet die HintergrundprozesseStart-Script des Ubuntu-OS (/etc/init.d/supervisor)
producer.jarVMMainVerbindet sich zu rabbitmq, überwacht das clients Verzeichnis und füllt die Queues mit Jobs

Supervisord

delayed_job.[0-2]VMMainArbeitet die Test- und Wettkampfaufträge von der Web-Anwendung abSupervisord
softwarechallenge-server.jarVMMainDer Spielserver, wird von der Web-Anwendung überwacht und verwaltet alle SpieleSupervisord
scheduled_jobs.rbVMMainStösst regelmäßige Jobs an (die dann von den delayed_jobs abgearbeitet werden)Supervisord
daemonconsumer.jarnumerobisÜberwacht die Queue und startet neue VMs
/home/vbox/bin/startVMConsumer.sh
consumer.jarVMClientWird nicht mehr genutztStartup-Script des Ubuntu-OS (/etc/init.d/startConsumer.sh)
Software-Challenge ClientVMClientWird von den Schülern entwickelt. Spielt das Spiel gegen einen anderen Client über den softwarechallenge-server.consumer.jar auf VMClient
QuassumQuassum ServerExterner Dienst, erreichbar über http://cau.quassum.comwird extern administriert (durch Northdocks)
GitGitHubDie Repositories für den Client und Server und die WebApp sind bei GitHub. Beides sollte vielleicht auf Stash umziehenwird extern administriert (durch GitHub, Accountdaten hat Sven Koschnicke)

Im $HOME/bin/-Verzeichnis der VMMain liegt ein Script show_background_tasks.sh das alle relevanten Prozesse anzeigt.

Kommunikation

  • producer.jar kommuniziert mit den consumer.jar über RabbitMQ, also über AMQP, was wiederum auf TCP aufsetzt.
  • Die Rails WebApp kommuniziert mit den delayed_jobs und den scheduled_jobs über die MySQL Datenbank. Die Kommunikation mit der MySQL Datenbank läuft über den Socket /var/run/mysqld/mysqld.sock.
  • Der softwarechallenge-server kommuniziert mit den Clients die auf den VMClients laufen über ein XML-Protokoll welches über TCP läuft.
  • Die Rails WebApp kommuniziert mit Quassum über die Quassum API, das läuft über HTTP.
  • Die Rails WebApp kommuniziert mit dem softwarechallenge-server über ein XML-Protokoll über TCP.

siehe auch Ablauf eines Spiels