| Phyisikalischer Rechner | Enthaltene virtuelle Rechner |
|---|---|
| numerobis | VMMain, mehrere VMClient |
| Quassum Server (extern!) | Ø |
| GitHub Server (extern!) | Ø |
| Programm | läuft wo | Beschreibung | Start durch |
|---|---|---|---|
| Apache | VMMain | Beantwortet HTTP-Anfragen und leitet sie an die Rails WebApp (Port 80) oder das phpBB Forum (Port 8080) weiter | Start-Script des Ubuntu-OS (/etc/init.d/apache) |
| Rails WebApp | VMMain/Apache | Über Apache, erreichbar über Port 80 | ist aktiv sobald Apache läuft (mod_passenger) |
| phpBB Forum | VMMain/Apache | Über Apache, erreichbar über Port 8080 | ist aktiv sobald Apache läuft (mod_php) |
| MySQL | VMMain | Die Datenbank für die WebApp und das Forum | Start-Script des Ubuntu-OS (/etc/init.d/mysql) |
| RabbitMQ | VMMain | Dient zur Kommunikation zwischen den einzelnen Komponenten | Start-Script des Ubuntu-OS (/etc/init.d/rabbitmq-server) |
| Supervisord | VMMain | Überwacht und verwaltet die Hintergrundprozesse | Start-Script des Ubuntu-OS (/etc/init.d/supervisor) |
| producer.jar | VMMain | Verbindet sich zu rabbitmq, überwacht das clients Verzeichnis und füllt die Queues mit Jobs | |
| delayed_job.[0-2] | VMMain | Arbeitet die Test- und Wettkampfaufträge von der Web-Anwendung ab | Supervisord |
| softwarechallenge-server.jar | VMMain | Der Spielserver, wird von der Web-Anwendung überwacht und verwaltet alle Spiele | Supervisord |
| scheduled_jobs.rb | VMMain | Stösst regelmäßige Jobs an (die dann von den delayed_jobs abgearbeitet werden) | Supervisord |
| daemonconsumer.jar | numerobis | Überwacht die Queue und startet neue VMs | /home/vbox/bin/startVMConsumer.sh |
| consumer.jar | VMClient | Wird nicht mehr genutzt | Startup-Script des Ubuntu-OS (/etc/init.d/startConsumer.sh) |
| Software-Challenge Client | VMClient | Wird von den Schülern entwickelt. Spielt das Spiel gegen einen anderen Client über den softwarechallenge-server. | consumer.jar auf VMClient |
| Quassum | Quassum Server | Externer Dienst, erreichbar über http://cau.quassum.com | wird extern administriert (durch Northdocks) |
| Git | GitHub | Die Repositories für den Client und Server und die WebApp sind bei GitHub. Beides sollte vielleicht auf Stash umziehen | wird 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