Mqtt: Unterschied zwischen den Versionen
Zeile 15: | Zeile 15: | ||
* Notwendige Systeme | * Notwendige Systeme | ||
** Linux System (Anleitung bezieht sich auf Debian 11 aber es sind sicherlich auch andere Distributionen möglich, evtl. auch Windows möglich? Ungetestet!) | ** Linux System (Anleitung bezieht sich auf Debian 11 aber es sind sicherlich auch andere Distributionen möglich, evtl. auch Windows möglich? Ungetestet!) | ||
** Feste Freifunk IPv4 Adresse aus dem 10.50/16 oder 10.83/16 Netz | ** Feste Freifunk IPv4 Adresse aus dem 10.50/16 oder 10.83/16 Netz, IPv6 für das Clustering hab ich nicht hinbekommen. Für Zugriff von Clients ist IPv6 problemlos möglich, die IPv4 wird nur für das Cluster benötigt. | ||
== mosquitto-cluster == | == mosquitto-cluster == |
Version vom 10. April 2022, 19:23 Uhr
Was ist MQTT?
MQTT (Message Queuing Telemetry Transport) ist ein kleines einfaches Transportprotokoll um Daten zwischen Clients über einen Broker zu transportieren. Mehr dazu auf Wikipedia: https://de.wikipedia.org/wiki/MQTT
Distributed MQTT
Es gibt MQTT Broker die man verteilt ohne eigentlichen Master betreiben kann. Somit kann jeder einen eigenen Broker betreiben und sich dem Cluster anschließen. Wenn nun im Router der MQTT Broker manuell konfigurierbar ist, kann jeder User jeden Broker nutzen. Da auch jeder Daten an den Broker schickek kann ist somit das System komplett dezentral ausgelegt. Theoretisch können auch eigene Broker ohne Cluster betrieben werden, wenn jemand sein eigenes Netz bauen will. Dezentralität fördert Möglichkeiten.
vernemq
Hier hatte ich leider Probleme das ordentlich zum laufen zu bekommen. Das Clustering hat immer wieder in einzelne Richtungen nicht funktioniert tlw. kam ein Clusterjoin gar nicht zustande.
EMQ-X
Läuft aktuell und macht einen guten Eindruck.
Installationsanleitung
- Notwendige Systeme
- Linux System (Anleitung bezieht sich auf Debian 11 aber es sind sicherlich auch andere Distributionen möglich, evtl. auch Windows möglich? Ungetestet!)
- Feste Freifunk IPv4 Adresse aus dem 10.50/16 oder 10.83/16 Netz, IPv6 für das Clustering hab ich nicht hinbekommen. Für Zugriff von Clients ist IPv6 problemlos möglich, die IPv4 wird nur für das Cluster benötigt.
mosquitto-cluster
https://github.com/hui6075/mosquitto-cluster noch ungetestet
Einsatzzwecke
Monitoring
Wenn der Router seine Monitoringdaten an den MQTT Broker schickt, kann sie dort jeder abgreifen und jeder ein eigenes Monitoring o.ä. Sachen betreiben. Monitoringbetreiber können auf Wunsch filtern welche Router sie haben wollen und welche nicht. Es ist dem Monitoringbetreiber überlassen, welche Daten er einliest und welche nicht, vorhanden sind alle die dort Daten hinschicken. Das ganze ist mittlerweile im aktuellen Layer 3 Release enthalten und kann verwendet werden. Einfach im WebUI unter mqtt Server einen Server eintragen, sinnvollerweise schließt man sich dem MQTT-Cluster an, damit die Daten auch mit anderen MQTT Server getauscht werden.
Ein Beispiel wie so ein Monitoring ausschauen kann, ist hier zu finden: https://grafana.dresel.systems/d/Freifunkrouter/freifunkrouter?orgId=1&var-Router=Karo&var-s2nproxy=All
Hier ist auch schon der s2nproxy integriert welcher allderdings noch WIP ist.
Konfiguration Austausch
!!Dies ist nur eine Idee und es gibt noch keinen Code und keine wirklichen Grundlagen dafür!!
Über MQTT können auch Konfigurationsdateien ausgetauscht werden. Wenn man das für die komplette /etc/config/gateway macht, ist es möglich mit einem Mausklick einen Router komplett automatisch zu konfigurieren. Dies soll aber expliziet optional sein und eine manuelle Konfiguration nach wie vor möglich sein.
Beispiel IPv6 Adressen
Router können zum Beispiel IPv6 Adressen am Broker abfragen und verschiedene Betreiber können IPv6 Adressen anbieten. Somit muss der User sich keine Adressen mehr manuell klicken sondern kann mit einen Knopfdruck sich automatisch Adressen auf seinen Layer 3 Router konfigurieren.
Komplett automatische konfiguration
Auch eine komplette automatische Konfiguration ist denkbar wenn noch wireguard und ipv4 mit abgehandelt wird. Dann ist am Ende einen Layer 3 Router in Betrieb nehmen genauso einfach wie aktuell einen v2 Router.
Aktuelle Broker
Aktuell betreibe ich ein eigenes Test-MQTT-Cluster Netzwerk auf Basis von emqx. Zugreifen kann man auf das Cluster über:
- 2a01:4f8:221:2d08::129
- 2a01:4f8:221:2d08::130
- fd43:5602:29bd:ffff::1883 (Anycast im Freifunknetz)
jeweils Port 1883.
Der MQTT Server wird komplett offen betrieben. Aufgrund der dezentralität ist es wünschenswert das möglichst viele Leute einen eigenen MQTT Server betreiben und sich dem Cluster anschließen. Dazu bitte bei mir (ChristianD) melden.