====== Messaging für Flummies ====== Für zukünftige Architekturen evaluieren wir derzeit einen Messaging Server ''%%RabbitMQ%%''. Dieser läuft auf index-prelive und wir dürfen mittels sudo den Dienst steuern $ sudo /usr/sbin/rabbitmqctl Um alle Queues aufzulisten, kann z.B $ sudo /usr/sbin/rabbitmqctl list_queues -p / # zeigt alle Queues im "root-VirtualHost" verwendet werden. Derzeit ist ein Nutzer “picalike” eingerichtet. Der überall ran darf! Die Credentials befinden sich in ''%%babe.conf%%'' im git:playground/timo/babe_mq Um die Trennung zwischen dev, prelive und live möglichst einfach herzustellen, sollten VirtualHosts eingerichtet werden (siehe Seite 21 im “RabbitMQ Essentials”-Buch): $ sudo /usr/sbin/rabbitmqctl add_vhost neuer-vhost-dev $ sudo /usr/sbin/rabbitmqctl set_permissions -p neuer-vhost-dev picalike ".*" ".*" ".*" # picalike alle Rechte geben Wir verwenden die Python-Bibliothek “pika” (kein Witz!) und im git finden sich einige Schnipsel, wie man mit 5-10 Zeilen eine Nachricht abschicken und/oder eine empfangen kann. Im git:lib/py/picapika befindet sich eine Kapselung der pika-Bibliothek, die die Handhabung der RabbitMQ möglichst einfach und komfortabel machen soll (automatisches Reconnect etc.) Mittels pip kann man die notwendig Version auf einer Maschine installieren $ pip install --user pika==0.10.0 Es sollte überall die gleiche Version sein. ====== Übersicht ====== Um parallele Mongo-Zugriffe mit lilly_data_from_mongo.py zu verhindern, werden Exports nur noch auf “normalen” Front-Ends durchgeführt. Die HPC-Gruppe wird bei Updates explizit informiert und verwendet dann rsync, um von einem Front-End die neuen Kundendaten zu ziehen. Im Detail gibt es eine Queue pro HPC-Frontend: * fhpc01 * fhpc02 * fhpc03 * fhpc04 Wird ein Kunde auf einem frontend neu exportiert, setzt das frontend eine ''%%data-sync%%'' Nachricht in alle Queues ab, um jedes einzelne HPC-Frontend zu informieren, dass ein Sync notwendig ist. Auf jedem HPC-Frontend läuft ein Dienst, sync_data, der die jeweilige Queue überwacht und bei neuen Nachrichten das rsync anstößt. Eine Übersicht alle Queues gibt es hier http://index-prelive.picalike.corpex-kunden.de:15672/#/queues ====== HTML-Ausgaben ====== Eine einfache Zusammenfassung der Datenexporte der Kunden http://sg01.picalike.corpex-kunden.de/export.html Die Ausgabe wird erzeugt von /home/picalike/var/bin/report_updates.py ===== Code im git ===== * playground: timo/babe_mq * playground: bjoern/sync_data ===== Definierte Nachrichten ===== Kundendaten auf einer HPC-Maschine updaten: {"uid": 905, "action": "data-sync", "path": "/mnt/storage/var/lilly-data/905/", "source": "frontend-prelive.picalike.corpex-kunden.de"} Erfolgreich abgeschlossenes Update: {"uid": 905, "action": "update-finished", "source": "frontend-prelive.picalike.corpex-kunden.de", "time": "1440510165"} ====== FAQ ====== * Bei der Meldung ''%%raise TypeError('host must be a str')%%'' bitte auf pika 0.10 updaten