Hey,
Wir verwenden das Knotenformular in ihm tragen die Aufsteller Koordinaten und Kontaktdaten selbst ein. Per Script werden dann die Geo Daten und der Knotenname aus den Daten extrahiert und als Alias via ffmap-backend zurück in die nodes.json gemerged.
Dadurch haben wir zu jedem Knoten einen ASP, aber der ist nicht im MV einsehbar.
Das wird durch 2 Einstellungen erledigt:
Eine der alias.jsons, bei uns die gateway.json, enthält nur die Gateways, mehr nicht. Zusätzlich müssen beim Aufruf der backend.py alle Gatewys als solche geflaggt werden (–vpn fe:ed:be:ff:be:ef:ff:00 usw.).
Wenn alles richtig eingerichtet ist, dann erscheinen diese automatisch. Manchmal muss man sich auch von den alten Daten trennen und eine neue nodes.json erstellen (richtig löschen nicht nur neu erstellen).
Auch ist es wichtig, dass die Zeit des Servers mit dem backend und dem auf dem der MV läuft syncron ist! Das das ein Problem werden könnte habe ich auch auf die harte Tour lernen müssen.
Ich würde das hier drin lassen, das ich wichtig um das gesamte zu verstehen!
Das ist sogar nötig. Auf jedem Gateway muss Alfred laufen! Auf einem davon läuft der Alfred Master (bei uns vpn0) und nur auf dem darf/kann das backend laufen.
Was heißt crashed? Es können auch Fehler in der MV config sein. Um das auszuschließen nimm mal JSON Daten von uns. (vpn0.ffnord.net) läuft damit der MV, liegt der Fehler in deinen JSON Daten.
Ich gebe zu die Doku nie gelesen zu haben. Ein funktionstüchtiger MV hat mich, als nicht ITler und Volllinux-Nerd, viele Stunden gekostet.
Das Bild beschreibt ja ganz gut, wie wir die Alfredstruktur im FF Netz aufgebaut haben. Alfred Slave Server sammeln die Daten ihrer Clients, aber eben nur ihrere. Damit alle Daten über alle Clients im Netz erhoben werden können müssen die Gateways ihre Clientdaten alle an den Master übermitteln. Dort können sie dann vom backend erhoben werden. Gibt es mehrere Master im Netz werden alle Daten über alle Clients auf allen Servern bereitgehalten. Also eine absolute Verschwendung. - Ich vermute auch, dass mehrere Master im Netz eine nicht valide nodes.json erzeugen (mehrere Timestaps?!), diese kann dann nicht vom MV verarbeitet werden, oder aber das backend kann schlicht nicht mit mehreren Master Servern arbeiten. Das kann sicher @tcatm beantworten. Er hat es programmiert.
Alfred ist Alfred. Die Daten können auf jedem Server (Master oder Slave) erhoben werden, aber sie werden mit sehr hoher Wahrscheinlichkeit nicht vollständig sein. Wahrscheinlich fehlen einfach die Nodes die nicht mit dem Alfred Server verbunden sind.
Das steht auch so in der Doku.
Die Kombination aus backend und MV hat mich auch sehr viel Zeit gekostet. Ich schlage vor, dass du zunächst unser backend und unseren MV (config) verwendest (dev Branch).
Wenn alles läuft dann kannst du weiter basteln. Es kommt auch auf die Kombination von backend und MV an. Nicht alle Kombis laufen. Auch will der MV die JSON Daten manchmal nicht einem Fremdserver laden. Daher arbeite für den Anfang bitte mit Daten die im Data Ordner des MV lokal liegen.
Achte auch darauf, dass die JSON Daten durch das backend zunächst in einem Arbeitsverzeichnis erstellt werden und erst wenn diese intakt generiert wurden un das Dataverzeichnis kopiert werden. Das verhindert Fehlermeldungen des MV in den Sekunden in denen die Daten geniert werden und damit „Downtimes“ des MV.
Wenn noch was unklar ist immer raus damit. Ich hoffe ich konnte etwas helfen.
Gruß
Tarnatos
PS: Achte drauf, dass du eine saubere Alfred Server Struktur hast und das die Server bei Änderungen am Alfred Server neu gestartet werden. Manchmal kann das schlichte Wegbrechen des Master, z.B. beim update und einem Neustart schon zu Problemen führen. Achte darauf, dass du slave Server nur neustartest wenn der Master Server läuft. (ggf. reicht auch das Neustarten des Alfred Prozesses (ungetestet).) Sonst suchst du dich nach Fehlern tod, findest keine und wirst verrückt - Klassisches Sympthom einer nicht eingehaltenen Neustartreihenfolge ist ein als Offline angezeigter Gateway im MV, obwohl er online ist und alle seine Clients via Alfred announced.
In so einem Fall Master neustarten, Slave neustarten. Wenn alles nichts hilft JSON Daten löschen!