User Tools

Site Tools


messaging

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
messaging.txt · Last modified: 2024/04/11 14:23 by 127.0.0.1